Skip to content
Follow yggy on LinkedInFollow @yggy_tech on X

Entity resolution

The same machine, department, or part shows up in many documents and projects. If each mention becomes a new node, the graph cannot answer organization-wide questions. If Yggdrasil merges on labels or similarity alone, it connects the wrong things and hides the mistake.

So automatic connection is narrow on purpose: only when approved stable identifier evidence proves the mentions are the same thing. Everything else stays separate or goes to Review.

For the difference between an entity URI, an identifier space, and an ontology term, see Entity and ontology URIs.

SituationWithout this ruleWith this rule
Two CSVs both use machine_id = M-001 under the same approved spaceTwo machine nodes, or a lucky merge that cannot be trustedOne organization entity, facts stay per project
Same label Line feeder in two notes, no IDSilent merge of different assetsSeparate entities; optional review suggestion
M-001 as machine ID and as part numberOne blended nodeTwo nodes — different identifier spaces

Yggdrasil treats an entity as organization-wide. Projects can refer to the same department, machine, supplier, or person, while their facts and evidence stay inside each project.

Yggdrasil connects two mentions automatically only when they carry the same stable identity URI. A label, type, alias, or similarity score is not an identifier.

SGSE uses an explicit identityPath and HTTPS identifier namespace from the structured mapping. NLP uses an identifier only when its source quote contains the stable value, such as a department ID or SKU. The resolver connects it automatically only when Ontology → Identities has approved the exact entity type, source field, and namespace for that organization. It converts the namespace and exact value into an opaque organization entity URI under https://id.yggy.tech/ (or https://id.dev.yggy.tech/ on dig).

If no stable identifier is present, or its type and source field are not approved, Yggdrasil does not mint an organization entity from that claim. Unapproved identifier fields become a proposed mapping on Ontology → Identities. Label-only mentions stay separate and can show a similar existing entity as a review suggestion.

Identity catalogs can land approved entities with no relation triples. The document overview then shows identified entities, relations, and pending identity separately. A triple count of 0 is not a complete success signal.

flowchart TD
  A[Entity mention] --> B{Stable identifier evidence?}
  B -->|Yes| C{Type and source field approved?}
  C -->|Yes| D[Create deterministic organization entity URI]
  C -->|No| P[Park claim on Identities]
  D --> E{URI already exists in the organization?}
  E -->|Yes| F[Reuse organization entity]
  E -->|No| H[Create organization entity]
  B -->|No| I[Create separate entity]
  I --> J{Similar label or type?}
  J -->|Yes| K[Show review suggestion]
  J -->|No| L[No merge suggestion]
  F --> M[Attach project-scoped fact and evidence when present]
  H --> M
  I --> M

Document A is a CSV row with machine_id = M-001 and label Line feeder. Document B is a service note that mentions machine M-001. A platform operator has approved this mapping for the organization:

FieldValue
Entity typemachine (or another type that uniquely maps to this field)
Source fieldmachine_id
Identifier spacehttps://id.yggy.tech/identifier-spaces/machine/machine-id

Both extracts attach { namespaceUri, sourceField: "machine_id", value: "M-001" }. Resolve builds one organization entity URI. Both documents attach their own facts and evidence to that entity.

The value alone is not enough. Another source can use M-001 in https://id.yggy.tech/identifier-spaces/product/part-number without connecting to this machine.

If Document B contains only the label Line feeder, Yggdrasil creates a separate entity and can offer the possible match for review.

Example: kit IDs that Identities does not approve yet

Section titled “Example: kit IDs that Identities does not approve yet”

Upload spare_kits.csv with kit_id = KIT-M001 and part_number = PN-440. Identities already maps product + part_number. Extraction writes the product entity. It does not mint a kit from kit_id. The document overview lists kit.kit_id with sample KIT-M001 and links to Ontology → Identities.

Approve that mapping. yggy connects the stored kit IDs without a new LLM extract. A later extract is optional.

The value KIT-M001 does not become a machine because it looks like M-001. Identifier spaces stay split.

Example: customer registry instead of a yggy space

Section titled “Example: customer registry instead of a yggy space”

Project A imports department_id = DE-42 in the identifier namespace https://example.com/id-spaces/departments with label Customer Operations. Project B later imports the same namespace and value with label Customer Service. A platform operator has approved https://example.com/id-spaces/departments as an identifier namespace. Both the department.department_id mapping and the namespace are approved. Both mentions resolve to one organization entity URI. Each project’s relations and source documents remain visible only in that project.

Use a customer HTTPS issuer when the organization already has one. Use a yggy /identifier-spaces/… URI only when that issuer does not exist yet (common on dig demos).

Open Review → Entity merges to compare labels, types, identifiers, evidence, and link impact. The summary stays compact. Open Review details to see the exact identifier value and its authority namespace, then open the evidence only when you need its source context. Review also states whether the namespace could trigger automatic connection when the entity was ingested. A later allowlist change does not rewrite existing entities.

Manual merge actions remain project-authorized. A project review cannot rewrite facts from another project.