Bild: KI-generiert
Wikidatas Schweigen
Wikidata enthält ein Tripel wie dieses:
(tomato, instance_of, vegetable) — rank: preferred
(tomato, instance_of, fruit) — rank: normal
Wer hat preferred entschieden? Warum preferred? In welchem Kontext preferred?
Wikidata schweigt zu diesen Fragen. Ein Editor entscheidet, das System speichert die Entscheidung. Nicht mehr.
Aber ob eine Tomate ein Gemüse oder eine Frucht ist, ist keine physikalische Konstante. Fragen Sie einen Koch — es ist ein Gemüse. Fragen Sie einen Botaniker — es ist eine Frucht. Fragen Sie den Obersten Gerichtshof der USA — es ist ein Gemüse (1893, Nix v. Hedden). Drei Antworten auf dieselbe Frage, und keine davon ist falsch.
Tripel in einem Wissensgraphen sind keine Fakten. Sie sind Behauptungen.
Behauptungen brauchen Argumentation
Um Behauptungen zu speichern, braucht man Struktur. Toulmins Argumentationsmodell liefert diese Struktur.
| Element | Rolle | Tomaten-Beispiel |
|---|---|---|
| Claim | Behauptung | „Eine Tomate ist ein Gemüse" |
| Ground | Direkter Beleg | „In der kulinarischen Taxonomie als Gemüse klassifiziert" |
| Backing | Quelle/Autorität | „Le Guide Culinaire (1903)" |
| Qualifier | Geltungsbereich | „Im kulinarischen Kontext" (confidence 0.8) |
| Rebuttal | Widerlegungsbedingung | „Im botanischen Kontext ist es eine Frucht — Fruchtknoten-Struktur" |
| Warrant | Verbindende Logik | „Traditionelle Zutatenklassifikation basiert auf kulinarischer Verwendung" |
Statt einen einzelnen Wahrheitswert pro Tripel zu erzwingen, erheben Sie das Tripel zum Gegenstand der Argumentation. Es gibt eine Behauptung, es gibt Belege, es gibt eine Widerlegungsbedingung, es gibt eine Quelle. Und die Bewertung erfolgt — nicht zum Zeitpunkt der Speicherung, sondern zum Zeitpunkt der Abfrage.
Diese Idee ist nicht neu. In der Wissenschaft haben Dungs abstrakte Argumentationsrahmenwerke (1995), ASPIC+ (2010) und Nanopublikationen die Argumentation über Wissensgraphen behandelt. Der Unterschied liegt in einem Punkt — wir liefern es als ausführbaren Code, nicht als Paper. Installieren mit go install, Regeln als Go-Funktionen schreiben, sofort ausführen.
Kontext bestimmt Wahrheit
Speicherung ist Argumentationsstruktur. Bewertung ist Laufzeit.
ctx.Set("domain", "cooking")
results, _ := g.Evaluate(ctx)
// verdict: +0.8 → vegetable
ctx.Set("domain", "botany")
results, _ = g.Evaluate(ctx)
// verdict: -0.9 → not a vegetable (fruit)
Derselbe Graph, dieselbe Argumentationsstruktur, derselbe Code. Nur der Kontext hat sich geändert. Abfrage im kulinarischen Kontext: +0.8 (Gemüse). Abfrage im botanischen Kontext: -0.9 (Frucht). Das Verdict folgt dem Kontext.
Dies ist der entscheidende Unterschied zu Wikidatas statischem Rank. Nicht ein Editor entscheidet preferred — der Kontext des Abfragenden erzeugt die Bewertung.
Ist Pluto ein Planet?
Triple: (Pluto, instance_of, planet)
Claim:
Ground: "Solar orbit, spherical, sufficient mass"
Backing: IAU 1930 classification resolution
Rebuttal:
Ground: "Orbit-clearing criterion not met"
Backing: IAU 2006 Resolution 5A
Exception to rebuttal:
Ground: "Still taught as a planet in education curricula"
Backing: NASA Education Resources 2024
ctx.Set("domain", "astronomy_formal")
// verdict: -0.8 (not a planet)
ctx.Set("domain", "education")
// verdict: +0.3 (can be treated as planet in context)
Für jemanden, der vor 2006 in die Grundschule ging, ist Pluto ein Planet. Für die IAU ist Pluto ein Zwergplanet. Beide haben Belege, beide haben Quellen. Die Aufgabe des Systems ist es nicht, eines zu wählen — sondern beide zu speichern und kontextabhängig zu bewerten.
Wenn Quellen angegriffen werden
In akademischen Debatten werden häufig die Quellen selbst angegriffen.
// Claim: Drug X is effective
claim := g.Rule(drugXEffective).
With(&TripleSpec{
Ground: "Significant effect in Phase 3 clinical trial",
Backing: "Smith et al. (2020), NEJM",
})
// Rebuttal: Independent replication failed
counter := g.Counter(replicationFailed).
With(&TripleSpec{
Ground: "Effect not confirmed in independent replication",
Backing: "Jones et al. (2022), Lancet",
})
counter.Attacks(claim)
// Undercutter: conflict of interest
undercutter := g.Counter(conflictOfInterest).
With(&TripleSpec{
Ground: "Smith's funding came from the pharmaceutical company",
Backing: "Retraction Watch (2023)",
})
undercutter.Attacks(claim)
Smiths Paper wurde im NEJM veröffentlicht. Eine autoritative Quelle. Aber wenn die Finanzierungsquelle offengelegt wird, schwächt sich die gesamte auf diesem Paper basierende Behauptung ab. Der counter widerlegt die Behauptung direkt; der undercutter schwächt die Beweisgrundlage der Behauptung. Beide greifen die Behauptung an, aber auf unterschiedliche Weise. Der h-Categoriser synthetisiert die Stärke dieser Angriffe, um das finale Verdict zu berechnen.
Wahrheit verschwindet mit Lichtgeschwindigkeit; nur Behauptungen bleiben. Das System verwaltet Behauptungen, es verkündet keine Wahrheit.
Braucht jedes Tripel Argumentation?
Nein.
(water, chemical_formula, H2O) — Settled. No argumentation needed.
(tomato, instance_of, ?) — Contested. Attach argumentation.
(Pluto, instance_of, ?) — Contested. Attach argumentation.
(Jerusalem, capital_of, ?) — Contested. Attach argumentation.
Das Kriterium ist einfach: Wenn für dasselbe Subjekt + Prädikat mehrere Objekte existieren, oder Ranks divergieren, oder Referenzen sich widersprechen — ist es ein umstrittenes Tripel. Der Rest bleibt als einfache Tripel.
Argumentation an die chemische Formel von Wasser anzuhängen ist Verschwendung. Keine Argumentation an den Hauptstadtstatus von Jerusalem anzuhängen ist eine Lüge.
Der Bewertungsmotor: h-Categoriser
Der Argumentationsgraph wird durch Amgouds h-Categoriser bewertet. Er berechnet einen Akzeptabilitätswert auf einer [-1, +1]-Skala für jeden Knoten — je höher die Akzeptabilität eines Angreifers, desto stärker sinkt der Wert des angegriffenen Knotens. Rekursive Iteration bis zur Konvergenz.
Performance: Selbst bei 100.000 umstrittenen Tripeln, die jeweils ihren eigenen Argumentationsgraphen tragen, evaluiert eine Abfrage nur den Graphen dieses Tripels. Unabhängig von der Gesamtgröße des Wissensgraphen.
Triple lookup: milliseconds (existing index)
Argumentation eval: milliseconds (h-Categoriser)
Verdict trace: milliseconds (graph traversal)
Skalieren Sie nicht das Modell. Skalieren Sie die Argumentation.
Zuordnung zu Wikidata-Ranks
| Wikidata | toulmin-Erweiterung |
|---|---|
| preferred rank | verdict > +0.5 (im aktuellen Kontext) |
| normal rank | 0 < verdict ≤ +0.5 |
| deprecated rank | verdict ≤ 0 |
| reference | Backing |
| qualifier | Qualifier + Kontextfunktionsbedingungen |
Der Unterschied: Wikidatas Rank ist statisch — Editoren entscheiden. Toulmins Verdict ist dynamisch — Kontext und Argumentationsstruktur entscheiden.
Das größere Bild
Dieses System ist nicht domänenspezifisch.
AI Prefrontal Cortex (feature selection):
triple = (feature, should_include_in, app_type)
context = current project's app tags
verdict = should this feature be included?
Knowledge graph general:
triple = (subject, predicate, object)
context = querier's domain/perspective
verdict = is this triple true in current context?
Derselbe Motor. Dieselbe Struktur. Andere Domäne. Regeln sind Go-Funktionen, Ausnahmen sind Defeats-Graphen, Bewertung ist h-Categoriser. Kein DSL.
Warum das wichtig ist
LLMs lösen Wissen in Gewichten auf. Stellen Sie eine Frage, erhalten Sie eine Antwort. Aber Sie können nicht strukturell nachverfolgen, ob diese Antwort in welchem Kontext wahr ist, auf welcher Quelle sie basiert und ob Widerlegungen existieren. Halluzination entsteht aus diesem strukturellen Fehlen.
Dieses System kann nicht alle Halluzinationen verhindern. LLMs erzeugen offene Ausgaben, und man kann nicht jede mögliche Behauptung vorab registrieren. Aber für bereits im Argumentationsgraphen registrierte Behauptungen kann man die generierte Antwort eines LLM mit dem Graphen vergleichen und die Glaubwürdigkeit bewerten. „Was ist das Backing dieser Behauptung? Gibt es einen Counter, der dieses Backing angreift? Ist das Verdict im aktuellen Kontext positiv?"
Kein universelles Wahrheitsorakel. Ein Glaubwürdigkeitsbewertungssystem, das auf akkumulierter Argumentation operiert.
Kein System, das Fakten speichert, sondern eines, das Behauptungen verwaltet. Kein System, das Wahrheit verkündet, sondern eines, das Bewertung nachvollzieht. Das ist der nächste Schritt für Wissensgraphen.
Verwandte Artikel
- toulmin — Go Rule Engine — Regelmotor basierend auf Toulmins Argumentationsmodell. Der Bewertungsmotor hinter diesem Artikel.
- Ratchet Pattern — Deterministische Verifikation und Ratchet-Verriegelung.
Code: github.com/park-jun-woo/toulmin
go install github.com/park-jun-woo/toulmin@latest
Die Code-Beispiele in diesem Artikel stellen eine Designvision basierend auf der aktuellen API der toulmin-Bibliothek dar. Die Wissensgraph-Erweiterung (TripleSpec, kontextbasierte Bewertung) befindet sich in aktiver Entwicklung. Der Kern-Bewertungsmotor (h-Categoriser, Defeats-Graph, Rule/Counter) funktioniert heute.
References
- Toulmin, S. (1958). The Uses of Argument. Cambridge University Press.
- Dung, P.M. (1995). “On the Acceptability of Arguments and its Fundamental Role in Nonmonotonic Reasoning, Logic Programming and n-Person Games.” Artificial Intelligence, 77(2), 321–357.
- Amgoud, L. & Ben-Naim, J. (2013). “Ranking-based semantics for argumentation frameworks.” SUM 2013, LNCS 8078, 134–147.
- Modgil, S. & Prakken, H. (2014). “The ASPIC+ framework for structured argumentation: a tutorial.” Argument & Computation, 5(1), 31–62.
- Groth, P. et al. (2010). “Anatomy of a Nanopublication.” Information Services & Use, 30(1-2), 51–56.
- Nix v. Hedden, 149 U.S. 304 (1893). United States Supreme Court.