Skip to content

The Ontology Lab: a self-emerging type system

The extraction LLM writes free-form relation surfaces ("alimenta", "deriva da", "sostituisce"...). Fixed types (uses / is-a / part-of / contrasts-with / depends-on) catch some; everything else used to flatten to related — lost meaning. The Ontology Lab recovers it, with review and history.

The loop

note relations (raw surfaces)
  -> evidence records (deterministic, with provenance)
  -> clusters of unexplained surfaces (stemmed key, support thresholds)
  -> candidate types (named/defined by ONE LLM call)
  -> human review: promote / reject
  -> active schema re-types the concept map
  -> retrieval expands typed edges FIRST -> measurable lift

Decisions stay yours: candidates never touch runtime until promoted, and promotion enforces thresholds (support ≥ 8 across ≥ 3 notes by default; --force to override). Types are deprecated, never deleted — the schema itself is versioned and temporal.

Commands

talamus ontology induce            # find candidate types (1 LLM call)
talamus ontology review            # candidates with support + real examples
talamus ontology apply rel:alimenta
talamus ontology status            # schema version, counts, edge coverage
talamus ontology eval --cases f.json   # retrieval lift vs the fixed baseline
talamus ontology stability         # cluster stability (Jaccard) across runs
talamus ontology history | export

Measuring it

  • Coverage — share of edges with a real type instead of related.
  • Lift — recall/MRR with the active schema vs the fixed baseline, on your own eval cases (the same harness as talamus eval).
  • Stability — identical corpus ⇒ identical candidates (deterministic clustering; the LLM only names).

Why the ontology is built this way — induced from evidence, promoted only by measured rules — is covered in Design principles.