Skip to main content
Worlds does not ship a write-path entity resolver. Identity in a world is an IRI: two mentions of the same person are the same entity only when they carry the same IRI, and facts enter deliberately through import and patches rather than being inferred from transcripts. That is a design decision, not a missing capability. RDF is the substrate. Worlds provides the primitive building blocks — items, facts, the append-only ledger, hybrid search, SPARQL, provenance, and SHACL — and this guide composes those primitives into entity resolution: deciding when “Sarah”, “Sarah Chen”, and “S. Chen” refer to the same real-world person. Two patterns are covered. Pattern A resolves at retrieval time, which Worlds supports natively. Pattern B resolves at write time, the conservative three-signal approach popularized by extraction-based memory layers, rebuilt here from Worlds primitives so every decision is auditable.

Prerequisites

The primitives

Entity resolution needs five things. Worlds provides all five as RDF primitives — you compose them rather than building storage: The last two are the point of this guide: recency and resolution are not built-in features, but every fact you need to compute them is a triple you can assert and query.

Pattern A: resolve at retrieval time (native)

The default Worlds answer keeps all aliases on one IRI and lets hybrid search collapse mentions at query time.

Model aliases as labels on one entity

Give the person entity every name it answers to:
Worlds indexes label literals as search aliases (a built-in set of label predicates, extendable via the labelPredicates option), so a search for “Sarah Chen” or “new PM” resolves to user:sarah-chen — the same subject IRI.

Disambiguate same-name people with co-occurrence

Name similarity cannot tell two people named Sarah apart. The graph can: find which candidate shares relationships with your current context.
The candidate that shares a schema:knows or schema:worksFor neighbor with Sarah Chen is the Sarah your context means. This is the graph-context signal of hybrid search, applied deliberately.

Ground intent in the ontology

Before an agent queries, retrieve the world’s ontology with the discoverSchema tool and map the mention to a concrete class and predicate. Exact terms beat fuzzy matches.

Pattern B: resolve at write time (Hindsight-style)

When mentions arrive as an extraction stream, resolve them before they reach the ledger. Worlds does not do this for you — the guide shows the pipeline.

1. Extract and assert mentions with provenance

Extract entities from the source with an LLM tool call, then assert each mention as a temporary node tied to its source and timestamp:
The timestamp predicate is your choice — asserting it as a fact is itself a use of the substrate. Import these quads through the normal import path. Search the world for the mention’s name and take the top candidates:
FTS5 covers keyword and prefix token matches. Candidate retrieval is Worlds’ problem; scoring is yours.

3. Score with three signals

For each candidate compute a weighted score. Name similarity runs in the application layer — SPARQL 1.1 offers no built-in fuzzy string metric, and a string-ratio function over the retrieved label literals is the honest equivalent of a trigram index:
overlap and lastSeen come from two SPARQL queries:

4. Decide conservatively

A wrong merge is worse than a missed one: a duplicate record is recoverable, a corrupted one is not. When the score clears the threshold, link the mention to the existing entity. When it does not, mint a fresh IRI — do not guess.
Unlike a silent record collapse, this resolution is a ledger patch. If it was wrong, retract it with a patch and re-resolve — both states remain in the chronological ledger, and the provenance of every decision is queryable.

5. Audit every decision

Ask the ledger why a mention resolved the way it did:
Every resolution is a fact with a source and a timestamp. That is the property extraction-based memory layers have to build by hand.

What you build vs what Worlds gives you

Check for success

Search the world for both names and confirm they resolve to one subject:
Then verify the resolution exists in the graph:

Use cases

  • Coherent agent memory: transcript mentions accumulate into one person history instead of fragmented records.
  • Customer identity: support agents resolve “the customer on the Acme account” to the correct contact without merging accounts.
  • Auditable AI pipelines: every resolution is a provenance-carrying fact a reviewer can replay.

Next steps