How an OpenChainGraph artifact or Graph-Index node declares which semantic profile it conforms to, the v0.3.1 way: a dereferenceable profile URI declared via dct:conformsTo (W3C Profiles Vocabulary), with the short semantic_profile token retained as a registered alias (W3C Content Negotiation by Profile). Fully additive: the execution_hash preimage is unchanged.
v0.3 introduced ISO 20022 alignment via a single inline string, semantic_profile: "iso20022:pacs.008-subset". That is a useful discovery hint but not a standards-grade conformance assertion: the string is opaque, resolves to nothing, and a consumer cannot fetch a machine-readable description of what it means.
v0.3.1 follows the W3C Profiles Vocabulary (PROF) and Content Negotiation by Profile: a profile is a dct:Standard published at a persistent, dereferenceable URI, and a resource declares conformance with dct:conformsTo. The short token is kept as a registered alias: conneg-by-profile explicitly allows a token alongside the mandatory URI.
Every node declares conformance the same way (dct:conformsTo) but only declares what it truthfully conforms to. ISO 20022 profiles apply only to nodes with the matching payload; a VaR engine, Basel RWA modeller, or DORA classifier carries no ISO 20022 profile. "Uniform" means a uniform mechanism, never a false conformance claim.
| Token (alias) | Profile URI | Applies to |
|---|---|---|
| iso20022:pacs.008-subset | /profiles/iso20022/pacs008-subset.jsonld | Payment/settlement payloads: amount + parties + agents. e.g. x402 settlement, VoP, ISO 20022 address. |
| iso20022:party-identification (new) | /profiles/iso20022/party-identification | Party / issuer / legal-entity identity without a transaction (party_name + lei). Named after the ISO 20022 PartyIdentification element used in the REDA / ACMT families. |
Each URI dereferences to a PROF prof:Profile document that points at its schema resource (the v0.3 ISO 20022 JSON-LD context) and a human guidance resource. The authoritative token→URI map is profiles/registry.json.
On an emitted artifact and on a Graph-Index node, add dct:conformsTo (the authoritative URI) and keep ocg:semantic_profile (the alias):
{
"@context": [
"https://ainumbers.co/chaingraph/context/v0.3/context.jsonld",
"https://ainumbers.co/chaingraph/context/v0.3/iso20022-context.jsonld"
],
"chaingraph_version": "0.3.1",
"ocg:semantic_profile": "iso20022:pacs.008-subset", // alias (retained)
"dct:conformsTo": ["https://ainumbers.co/chaingraph/profiles/iso20022/pacs008-subset.jsonld"] // authoritative
}
An agent resolving the token looks it up in profiles/registry.json; a crawler filters the Graph Index on dct:conformsTo or ocg:semantic_profile. Both work.
The execution_hash preimage remains the sorted-key SHA-256 over {"policy_parameters": …, "output_payload": …} only, identical to v0.1/v0.2/v0.3. The @context array, ocg:semantic_profile, and dct:conformsTo are all JSON-LD framing, outside the preimage. A verifier that was correct for earlier versions computes the same hash for a v0.3.1 artifact with no code changes.
(1) Re-emit a known artifact pre/post migration → identical execution_hash. (2) Every profile URI resolves (no 404) and every registry token maps to a resolvable URI. (3) No non-payment / non-party node carries an iso20022: profile. (4) v0.1/v0.2/v0.3 artifacts without dct:conformsTo still validate.