Term-mapping spec work from the OO-LD Scientific Profile requirements (#108; worked example #107, dataset model #109). Still pre-1.0: the remaining v1.0 gates are #25 (finalize edge cases) and #21 (backend impact review).
Highlights
- One term-mapping mechanism. The inline
*multi-mapping notation is removed;x-oold-contextis the single mechanism, with a small, stable processing contract: tooling reads onlypredicate_id(a SKOS mapping predicate, compared by IRI expansion withskos:built-in) andmapping_set_id(an inline, list-valued set-membership tag), over an open SSSOM slot bag (#110). - Selection and co-emission. Promotion selects one synonym per term by namespace order and/or mapping set; co-emission defaults to
skos:exactMatchonly (others opt-in). SSSOM is the RECOMMENDED carrier, not a normative dependency; the propagatableobject_source_versionslots pin ontology versions under composition. - Type unification.
x-oold-instance-rdf-typefeeds@type: a materialized type is an ordinary@type, aliased and mapping-set-selectable per profile, so class synonyms are justx-oold-contexton the type term. Co-typing and synonym-aliasing are orthogonal (#112). - Schema-level
x-sssomreplacesx-oold-iri(breaking rename). A schema's ontology correspondence is now the term-synonym mapping row lifted to the schema level (subject = the schema, keyed by object IRI,predicate_idexact/close). Migratex-oold-iri: "X"tox-sssom: { "X": { "predicate_id": "skos:exactMatch" } }. - Value-term aliases (
@vocab). Individual IRIs (e.g. units) can be declared as value terms and aliased by the samex-oold-contextmachinery, withenum/x-oold-rangeand no-collision (scoping / UUID) guidance. x-oold-rangebundling. Clarified that a range value is a dereferenceable reference an OO-LD loader MAY resolve (data bundling).
Full changelog: v0.8.0...v0.9.0