Skip to content

Mapping profiles

A schema here carries one syntactical shape and several RDF readings. That is the whole point of the approach: communities will not converge on a single ontology, and a schema that commits to one excludes the users of every other.

Three tiers

  1. Consensus. The default @context maps each term to a general, widely deployed vocabulary (QUDT for quantities, DCAT and CSVW for datasets, PROV for provenance, schema.org where it fits). This is the reading a consumer gets without asking for anything.
  2. Community synonyms. Every further mapping lives under x-oold-context, per term, as a promotable JSON-LD term definition plus an x-sssom block. Each synonym records the mapping set it belongs to, the ontology it targets and the ontology version it was validated against.
  3. Selection. Choosing a mapping set promotes its synonyms into the context, producing an effective schema that differs from the declared one only in its @context. The instance document is untouched; only its RDF reading changes.

What that buys

The same instance exports as EMMO-flavoured or PMDco-flavoured RDF, and the two graphs are not approximations of each other: both are exact readings of one document. Terms with no synonym in the selected set fall back to the consensus mapping, so a partial alignment stays usable rather than failing.

Mappings also round-trip to SSSOM, so they can be reviewed, cited and reused outside OO-LD by people who never touch JSON Schema.

Honest limits

  • Structural mismatch cannot be bridged by term mapping. Where an ontology models a value as a nested node rather than a literal, no @context entry can produce it. Those mappings are delegated to SSSOM or rule level and the term is left with the consensus reading. EMMO's quantity value is the standing example.
  • Vocabulary coercion needs guards. Value-level aliases use @type: @vocab, which silently mints an IRI from an unknown string. Schemas that use it must constrain the values with an enum or a range.
  • A mapping is only as current as its pin. Synonyms carry the exact ontology version they were checked against, and CI revalidates against the pinned snapshots, because an upstream release can move a term out from under a mapping without anyone noticing.

See QuantityValue and Time for the mechanism applied end to end, including the same instance rendered under all three readings.