Tripel sind Behauptungen, keine Fakten 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.

ElementRolleTomaten-Beispiel
ClaimBehauptung„Eine Tomate ist ein Gemüse"
GroundDirekter Beleg„In der kulinarischen Taxonomie als Gemüse klassifiziert"
BackingQuelle/Autorität„Le Guide Culinaire (1903)"
QualifierGeltungsbereich„Im kulinarischen Kontext" (confidence 0.8)
RebuttalWiderlegungsbedingung„Im botanischen Kontext ist es eine Frucht — Fruchtknoten-Struktur"
WarrantVerbindende 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

Wikidatatoulmin-Erweiterung
preferred rankverdict > +0.5 (im aktuellen Kontext)
normal rank0 < verdict ≤ +0.5
deprecated rankverdict ≤ 0
referenceBacking
qualifierQualifier + 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

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.