Entities
The strict types of actors and assets that the protocol describes.
Entities are simply the actors and assets within the Fide Context Graph.
Every Active, Inactive, or Protocol entity is identified by a Primary Fide ID if it is the subject of any Statement.
Standard Alignment
FCP is designed to be the "Universal Glue." Instead of proprietary types, we map FCP entities directly to established standard vocabularies.
Protocol Entities
These entities form the "foundation" of the Fide Context Protocol (FCP). They are the grammar we use to build sentences about the world.
| FCP Entity Type | Standard Alignment | Implementation Notes |
|---|---|---|
| Statement | rdf:Statement | A specific, content-addressed Subject-Predicate-Object triple. |
| Attestation | verifiable:Credential | A cryptographic wrapper proving authorship over Statements. |
| EvaluationMethod | prov:Plan | The algorithm, rubric, or logic used to generate a verdict. |
Active Entities
Entities with Agency. They can sign statements, take actions, and own assets.
| FCP Entity Type | Standard Alignment | Implementation Notes |
|---|---|---|
| Person | schema:Person | Direct mapping. |
| Organization | schema:Organization | Direct mapping. |
| AutonomousAgent | prov:SoftwareAgent | A running software instance with signing keys. |
Inactive Entities
Entities that exist to be described, referenced, or acted upon.
| FCP Entity Type | Standard Alignment | Implementation Notes |
|---|---|---|
| Place | schema:Place | Direct mapping. |
| Event | schema:Event | Direct mapping. |
| Product | schema:Product | Tools, assets, or services. |
| CreativeWork | schema:CreativeWork | Content, code, or concepts. |
| CryptographicAccount | sec:Key | (W3C Security) Represents the Controller address of a sec:Key pair. |
Protocol Entities
Statement
The base unit of the protocol. A Statement is a content-addressed Subject → Predicate → Object triple defined in the Statement Schema. All other protocol primitives (like Attestations) ultimately exist to publish, sign, and link Statements.
Attestation
A signing event. When an actor signs a Statement, they create an Attestation entity — the cryptographic wrapper that proves authorship. The Statement becomes a Signed Statement (see Attesting) when linked to an Attestation.
SDK Implementation
The SDK provides createAttestation() and verifyAttestation() functions. See Attestation & Batching in the SDK documentation for implementation examples.
EvaluationMethod
The methodology, algorithm, or service used to evaluate another entity. When an EvaluationMethod is used as the predicate in a statement, that statement becomes an evaluation.
For details on evaluation types, how to create methods, and how evaluations aggregate, see Evaluating.
Philosophy: Statement vs. Fact
Why isn't data called a 'Fact'?
Because in a distributed system, truth is relative.
- A Statement ("Alice says sky is green") is an objective record of speech. The protocol guarantees Alice said it.
- A Fact is a status you assign to a statement after you verify it.
FCP records Statements. Your application upgrades them to Facts based on Evaluations.
Active Entities
Person
Natural human beings.
Organization
Companies, teams, governments, or groups acting as a single unit.
Defining Groups: Lists vs. Queries
How do I represent a group like 'Stanford Alumni 2022'?
You usually don't need a separate Entity for every group. FCP uses Dynamic Queries:
- Semantic Data: Link entities with statements (
Alice → alumniOf → Stanford+startDate: 2022). - Query: "Find all Persons where alumniOf=Stanford AND startDate=2022".
Only create a distinct Organization entity if the group itself needs to take action (e.g., "The Alumni Association donates $1M").
AutonomousAgent
Self-acting software instances (bots, AI agents, workflows). Any software instance that holds a signing key and takes actions.
Code vs. Running Instance
- Agent Code (
CreativeWork): The GitHub repo, the logic. - Agent Instance (
AutonomousAgent): The running process with a signing key.
Think: Docker Image (CreativeWork) vs. Running Container (AutonomousAgent).
Inactive Entities
Place
Physical locations or spatial regions (Cities, Venues, Countries).
Event
Happenings with start/end times (Concerts, Meetings, Action Traces).
Product
Tools, software, physical goods, or assets defined by utility (SaaS Tools, Hardware).
CreativeWork
Concepts, documents, code repositories, media files, or Protocol Statements.
Tie-Breaker: Product vs CreativeWork
Product (5) is for Utility (tools). CreativeWork (6) is for Consumption (content).
"If I replace it with a different version, is it the same entity?"
- Hammer Test (Product): Replacing one hammer with another = Same utility.
- Book Test (CreativeWork): Replacing one book with another = Different content.
CryptographicAccount
An entity representing a cryptographic keypair (Account/Wallet). Distinct from the Person or Agent controlling it.
Decision Tree
Is it a natural human being?
Use Person.
Is it a company, team, government, or group?
Use Organization.
Is it a physical location?
Use Place.
Is it a happening with start/end times?
Use Event.
Is it a cryptographic keypair?
Use CryptographicAccount.
Is it self-acting software with a key?
Use AutonomousAgent.
Is it a tool, good, or asset?
Use Product.
Is it a document, media file, or code?
Use CreativeWork.
Identity Is Subjective
While FCP provides the IDs (did:fide:0x...), the Fide Context Graph allows you to decide what those IDs truly mean.
Two applications, same Fide ID = Different entity profiles. This is by design. Your application resolves the entity profile by choosing which indexers to trust and applying your own weighting models.