Lexical Semantic Change — DE + EN Knowledge Graph

Words change meaning.
We track why.

WORD-DRIFT is an open RDF knowledge graph for lexical semantic change. It models not just that a word shifted, but the typed drift event and the historical trigger behind it. A causal layer no existing dataset provides.

Original meaning
c. 1980
"A creative non-conformist; someone who thinks outside conventional lines."
Pejoration
Querdenken-711
proposed trigger
confidence 0.9
Shifted meaning
2020
"A participant in anti-lockdown / COVID-conspiracy protests."

Querdenker (DE), from compliment to insult in a single pandemic year. Proposed triggers: the Querdenken-711 movement (Wikidata: Q115500066) and COVID-19.

The project

A knowledge graph for meaning and cause

Computational linguistics has mature tools for detecting semantic change: DWUG usage graphs, SemEval benchmarks, diachronic embeddings. Detection tells you that a word shifted between two time periods. It does not tell you why.

WORD-DRIFT adds a causal trigger layer on top of existing detection data. Each cause is a reified drift:CausalHypothesis connecting a drift event to a proposed trigger, carrying a Wikidata link, a confidence score, and typed evidence on a five-rung ladder: Speculative < FrequencyCorrelation < ChangeSignalAlignment < LexicographicNote < ScholarlyAttestation. A claim, not a fact; auditable and queryable.

🔗

Senses as graph nodes

Each word sense is a first-class node. Drift events are typed edges between senses with a direction, year, and confidence.

🏅

Causal triggers

Causation is reified as a drift:CausalHypothesis: it links a drift event (drift:aboutDrift) to the real-world event that reframed it (drift:proposedTrigger), with typed evidence and a confidence. One trigger can reframe many words simultaneously.

📃

SHACL-enforced provenance

Every claim must cite a source. PROV-O + custom SHACL shapes validate this structurally, not just by convention.

🌎

Federated with Wikidata

Trigger events carry owl:sameAs links to Wikidata entities, enabling free federation for dates, places, and related concepts.

Two directions. Two languages. Two vivid triggers.

The seed dataset covers one clear German pejoration and one English amelioration, chosen to anchor opposite ends of the valence axis and stress-test cross-lingual roll-up queries.

Querdenker DE
Pejoration

Positive "lateral thinker" (c. 1980) becomes pejorative "COVID protester" (2020). Proposed triggers: the Querdenken-711 movement and the COVID-19 pandemic. Confidence: 0.9. Source: DWDS + Wikipedia.

Open Querdenker in the explorer →

funk / funky EN
Amelioration

Negative "strong bad smell" (1620) becomes positive "stylish, soulful; the funk music genre" (1959–1975). Proposed trigger: the rise of funk as an African-American music genre. Confidence: 0.75. Source: OED.

Open funk in the explorer →

More words in the pipeline: woke (EN, reversal), gay (EN, pejoration), systemrelevant (DE, broadening), Inzidenz (DE, narrowing), and 20+ more from the DWUG / SemEval target word lists.

Drift taxonomy

Eight typed pathways of meaning change

Drift types are organised as a SKOS taxonomy on four axes, so queries can group by axis or drill down to a specific mechanism.

Valence shift
Pejoration
Amelioration
Scope shift
Broadening
Narrowing
Mechanism
Metaphorization
Metonymization
Social pattern
Reversal
Reappropriation

A drift event may carry multiple types (e.g. Pejoration + Reversal). The SKOS hierarchy lets you query at the axis level ("all valence shifts") without enumerating subtypes.

The novel joins causation enables

The causal layer unlocks queries that are structurally impossible over pure detection data. Below are the four showcase queries from the repo.

Novel Causal join: which event triggered which shift?
# triggers.rq - the causal join
PREFIX drift: <https://w3id.org/word-drift/ontology#>

SELECT ?word ?type ?year ?trigger ?category ?confidence WHERE {
    ?e a drift:DriftEvent ;
       drift:affectsWord ?w ;
       drift:driftType ?t .
    # causation is reified: a CausalHypothesis links the drift to a trigger
    ?h a drift:CausalHypothesis ;
       drift:aboutDrift ?e ;
       drift:proposedTrigger ?tr ;
       drift:confidence ?confidence .
    ?w  drift:writtenForm ?word .
    ?t  skos:prefLabel ?type . FILTER(lang(?type) = "en")
    ?tr rdfs:label ?trigger ;
        drift:triggerCategory ?category ;
        drift:eventDate ?year .
} ORDER BY ?year ?word
Cross-lingual Drift events grouped by language and type
# cross-lingual.rq - DE vs EN drift directions
SELECT ?language ?type (COUNT(?e) AS ?n)
       (GROUP_CONCAT(?word; SEPARATOR=", ") AS ?words) WHERE {
    ?e a drift:DriftEvent ;
       drift:affectsWord ?w ;
       drift:driftType ?t .
    ?w drift:language ?language ;
       drift:writtenForm ?word .
    ?t skos:prefLabel ?type . FILTER(lang(?type) = "en")
} GROUP BY ?language ?type
Timeline Every sense with year and connotation (drives the viz)
# timeline.rq
SELECT ?word ?year ?connotation ?gloss WHERE {
    ?w a drift:Word ;
       drift:writtenForm ?word ;
       ontolex:sense ?sense .
    ?sense drift:gloss ?gloss ;
           drift:connotation ?c ;
           drift:firstAttested ?year .
    ?c skos:prefLabel ?connotation .
    FILTER(lang(?gloss) = "en")
} ORDER BY ?word ?year

Interactive tool

Explore the graph yourself

Select any word, browse its sense timeline, and see the force graph of senses connected to their causal trigger events.

Open interactive explorer