Using the new urn:said
Built into the Semantic Engine are SAIDs (Self-Addressing Identifiers), a form of content-derived identifier. Rather than assigning an arbitrary identifier to a resource, a SAID is calculated directly from the content itself. Because the identifier is derived from the content, any change to the content produces a different identifier.
Within the Semantic Engine, every OCA schema package is assigned a SAID. OCA is also highly compositional: schemas contain nested components, overlays, and dependencies, and each of those components is independently assigned its own SAID as well. This creates a structure where every significant part of the schema can be independently referenced and verified.
The recent registration of urn:said introduces a standardized way to express SAIDs as URNs. This matters because many interoperability and metadata specifications permit URIs or URNs as identifiers, but until now there has not been a formally recognized URN representation for SAIDs.
Referencing OCA Schemas in Other Standards
In some contexts, referencing an OCA schema is straightforward. The OCA specification itself already assumes SAIDs as identifiers, so there is no ambiguity about identifier type or interpretation.
However, OCA schemas are often embedded within broader metadata ecosystems and interoperability frameworks. Many of these standards do not prescribe a specific identifier system. Instead, they simply require that identifiers be expressed as URIs or IRIs.
This is where urn:said becomes useful.
An OCA package SAID can now be represented directly as a URN:
urn:said:EA1JHinLxjatOM46wD2rsWsApfytFRQYSdDS7lwABaj-
This allows OCA identifiers to integrate cleanly into systems that already support URNs without introducing a new identifier mechanism or custom syntax.
Embedding SAIDs Directly Into Metadata
The introduction of urn:said also established a preferred pattern for embedding SAIDs into metadata documents and schemas that expect URI-based identifiers.
The process works in two stages.
First, calculate the SAID in the standard way by placing placeholder characters in the identifier field during hashing. For example:
{
"id": "######################################"
}
The placeholder ensures that the identifier field itself does not affect the calculation unpredictably.
Once the SAID has been calculated, replace the placeholder with the final URN-form identifier:
{
"id": "urn:said:EA1JHinLxjatOM46wD2rsWsApfytFRQYSdDS7lwABaj-"
}
This preserves the normal SAID derivation process while also producing metadata that conforms to URI and URN expectations in external specifications.
Why This Matters
Many metadata and research-data standards are intentionally identifier-agnostic. They require identifiers to be globally unique and URI-compatible, but they do not dictate whether those identifiers are URLs, DOIs, ARKs, URNs, or something else.
The urn:said namespace allows SAIDs to participate directly in those ecosystems while preserving their core property: verifiability through content derivation.
This creates a bridge between conventional metadata infrastructure and content-addressable architectures. Instead of identifiers being purely assigned labels maintained by registries, identifiers can now also function as cryptographic integrity checks tied directly to the referenced content.
For OCA schemas and Semantic Engine workflows, this means schema packages can now be referenced cleanly across external standards, metadata frameworks, and distributed systems using a globally recognized URN format.
The SAID specification is part of the KERI suite of open standards, and discussions about the specification process and URN registration are publicly available through the KERI specification meetings.
— Written by Carly Huitema
