Conformance & profiles
How OpenRiC conformance works - the profile model, the legacy levels, the profiles, declaring what you support, and running the conformance probe. With a sample run.
OpenRiC conformance is profile-based: a server declares which named capabilities it supports, and consumers know exactly what to expect - no all-or-nothing claim.
Profiles, not levels
A profile says which endpoints and entities a server exposes (Core Discovery, Authority & Context, and so on); see the profiles tree. A server declares the profiles it supports, each at a profile version. Older material talks about four conformance levels, L1 to L4; they are legacy and no longer part of a claim.
The 12 profiles7 normative: Core Discovery, Authority & Context, Graph Traversal, Digital Object Linkage, Round-Trip Editing, Provenance & Event, Export-Only.
5 draft: SPARQL Access, Governance, Portability, Inferred-Provenance, Graph-Grounding.
Full catalogue: /spec/profiles/.
Declaring what you support
A server advertises its profiles in the service description at GET /api/ric/v1/:
{
"name": "Example Archive Catalogue",
"openric_conformance": {
"spec_version": "0.55.1",
"profiles": [
{ "id": "core-discovery", "version": "0.7.0", "conformance": "full" }
]
}
}
Run the probe
The conformance probe is pure bash + jq - point it at any server:
BASE=https://ric.theahg.co.za/api/ric/v1 ./conformance/probe.sh
# → one PASS, FAIL or SKIP line per check, then a summary
# Scope to one profile:
BASE=https://ric.theahg.co.za/api/ric/v1 ./conformance/probe.sh --profile=core-discovery
It checks every documented endpoint and reports pass/fail; exit code 0 = conformant. With a KEY= it also exercises the write surface, so only add a key for a server whose data you may change - never the public reference service.
SHACL
Beyond endpoints, published graphs are validated against the SHACL shapes. The draft Governance profile makes SHACL a merge gate, wired into CI.
Next
Something missing or unclear? Tell us how to improve it or email johan@theahg.co.za.