Relationships

How to connect entities and statements in the Fide Context Graph

Relationships are Statements where the object is another Entity ID. Subject → Predicate → Object (Entity). Predicates use 0x65 or 0xe5.

Prop

Type


Core Relationship Types

Use standard and protocol-specific predicates to define how things relate within the Schema.

Core FCP Predicates

RelationshipPredicateExample
controlsec:controllerWallet (did:fide:0x123...) → controller → Alice
correctionprov:wasRevisionOfStatement B → wasRevisionOf → Statement A

Common Schema.org Predicates

RelationshipPredicateExample
employmentschema:worksForAlice → worksFor → Acme
creationschema:creatorBook → creator → Alice

OWL Predicates

RelationshipPredicateExample
clusteringowl:sameAsAlice (X) → sameAs → Alice (LinkedIn)
disambiguationowl:differentFromAlice (A) → differentFrom → Alice (B)

Actions & Workflow Predicates

Defined in Actions Schema, but registered here for reference.

RelationshipPredicateExample
groupingschema:isPartOfAction Step → isPartOf → Session Event
sequenceprov:wasInformedByAction B → wasInformedBy → Action A
executionschema:agentAction → agent → Person/Agent

Identity Clustering (owl:sameAs)

When multiple identifiers exist for the same real-world entity (e.g., "Alice on X" and "Alice on GitHub"), we link them using owl:sameAs. FCP treats these as bidirectional identity claims that form clusters of equivalent identifiers.

How Clustering Works

  1. Undirected Edges: A owl:sameAs B implies B owl:sameAs A for clustering purposes
  2. Transitive Closure: If A sameAs B and B sameAs C, then A, B, and C form a single identity cluster
  3. Canonical Primary: Each cluster resolves to a single canonical identifier using MIN(fingerprint) — the entity with the lexicographically smallest Fide ID becomes the primary for the entire cluster

Trust Model

Not all owl:sameAs statements are automatically trusted. Indexers use an evaluation-based trust system:

  • Evaluation Method: Fide-AliasResolutionTrust-v1 (0xe5 type)
  • Trust Votes: Indexers create evaluation statements with:
    • Object "1" = trust this identity link
    • Object "-1" = reject this identity link
  • Inclusion Criteria: Only owl:sameAs statements with net positive trust (trust_votes > reject_votes) are used for clustering

Cluster-Wide Resolution

Indexers use recursive CTEs to identify full connected components (identity clusters) and materialize resolved views where all cluster members point to the same canonical primary. This ensures consistent identity resolution regardless of which identifier you query from.

See Indexing - Identity Resolution for implementation details.

Example: Alice's Identity Cluster

// Three identity statements
{ subject: "https://x.com/alice", predicate: "owl:sameAs", object: "https://github.com/alice" }
{ subject: "https://github.com/alice", predicate: "owl:sameAs", object: "https://linkedin.com/alice" }

// Trust evaluations (from indexers)
{ subject: statement1_id, predicate: "Fide-AliasResolutionTrust-v1", object: "1" }
{ subject: statement2_id, predicate: "Fide-AliasResolutionTrust-v1", object: "1" }

// Result: All three identifiers resolve to the one with MIN(fingerprint)
// e.g., if github.com/alice has the smallest Fide ID, it becomes the canonical primary

Semantic vs. Identity Equivalence

Use owl:sameAs strictly for Identity (e.g., "Alice = x.com/alice").

For fuzzy value mapping (e.g., "Sphere ≈ Round"), avoid sameAs. Instead:

  • Use hierarchy: Sphereskos:broaderRound
  • Let the application/AI layer resolve semantic synonyms.

Control & Authority

We need to know which CryptographicAccounts or delegate agents act on behalf of an Active Entity (e.g. Person, Organization, or AutonomousAgent). We use sec:controller for this.

Direction: CryptographicAccountsec:controllerActive Entity (W3C DID spec).


Correction (prov:wasRevisionOf)

Replace erroneous statements: NewStatementFideId → prov:wasRevisionOf → OldStatementFideId. Create correct statements, sign a new attestation, link back via prov:wasRevisionOf. Indexers hide the old and show the new.

Storage & Querying

These correction patterns are stored and queried as views over the statement graph. See Indexing - Resolved Statements for how indexers materialize relationship patterns for efficient querying.

On this page