Prerequisites
- A Wazoo private beta account. Sign up at wazoo.dev/beta.
- A platform token (
wzp_) and a world token (wzw_), generated on the Console tokens page. - A world containing person entities, modeled as items and facts.
- Familiarity with hybrid search and SPARQL.
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: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.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 thediscoverSchema 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:2. Retrieve candidates with hybrid search
Search the world for the mention’s name and take the top candidates: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.5. Audit every decision
Ask the ledger why a mention resolved the way it did:What you build vs what Worlds gives you
Check for success
Search the world for both names and confirm they resolve to one subject: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
- Worlds concepts: items, facts, and the ledger
- Hybrid search: tune the retrieval signal
- Graph queries: write the patterns behind the score
- Update: patch state with provenance
- Build a company brain: a sibling guide for shared team knowledge