Ontology catalog
Estonia splits two halves the rest usually merge: X-Road moves the data; RIHA — the national catalog of semantic assets — gives it meaning, and it is mandatory by law.
SiS's starting diagnosis was: the transport half was built and the catalog half was skipped. That is no longer true in the weak sense: the catalog exists, it is publishable, and the operational graph vocabulary is closed.
flowchart LR vivo["Live operational graph<br/>recomputed snapshot"] banco["Ontology catalog<br/>RDF · SHACL · SPARQL"] codigo["Compiled code graph<br/>not runtime truth"] vivo -.->|no automatic sync| banco
What is there
| Piece | Status |
|---|---|
JSON-LD ontology (sis-core), namespace https://w3id.org/sis/ns# — not a customer domain | [V] |
Alignment to PROV-O, ORG, OWL-Time, RDFS; @es / @en labels inside the ontology | [V] |
| Closed vocabulary: a type the system emits that the ontology does not declare fails validation | [V] |
| SHACL shapes (domain, range, cardinality) executed by an engine, with a canary (zero foci = red) | [V] |
| Ontology catalog: catalog explorer, SPARQL, SHACL validation, distinct from the live graph | [V] deployed |
| Closed world on purpose: SHACL, not open-world OWL reasoning | explicit decision |
The namespace is not a customer domain: a contract that ends would leave dead URIs in the other one.
What it is not
It is not the Console's operational graph. That is recomputed from the live store. The ontology catalog explores a catalog and a graph already materialized.
There is no automatic sync from the live graph into the catalog. [P]
There is no tenant isolation inside the catalog: one store, one graph. Mixing two installs collides identifiers. Real isolation today is one install per customer. [P]
Publishing the catalog across installs in ADMS: [D].