Skip to content

Releases: OO-LD/oold-schema

v1.0.0-rc.2

v1.0.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@simontaurus simontaurus released this 15 Aug 07:34

Second release candidate for v1.0. Addresses the review of rc.1 and adds a referenceable rule catalogue.

Rule catalogue

Every normative statement now carries a stable, citable id (OOLD-RT-08f2), so a validator finding can point at the requirement it enforces rather than only at its own check name.

  • meta/oold-rules.json, generated from :rule[...] markers in the spec prose. level and text are extracted, never authored, so the catalogue cannot drift from the specification.
  • Anchored badges in the spec and a searchable rule catalogue page.
  • 66 rules across 7 areas, 41 machine-checkable. Each records applies_to (document / implementation / advisory) and machine_checkable.
  • Guarded by an accepted baseline, append-only enforcement against the last release, and a catalogue schema.

machine_checkable is deliberately not enforced: whether a given validator checks a rule is a fact about that implementation at a version, not about a spec release.

Review fixes from rc.1

  • type -> @type alias was not round-trip safe. A plain-string term cannot carry @container, so a single @type came back from RDF as a scalar and failed re-validation. The normative example now uses { "@id": "@type", "@container": "@set" }. (#117)
  • The $id MUST is now enforced. The dialect meta-schema is two-tier: the document-level resource carries required: ["$id"], nested subschemas recurse into the base through $dynamicRef and so are not required to carry one. (#118)
  • examples / default are load-bearing in the validation harness, and docs/tooling.md now says so, including how the resulting GEN-INVALID should be read. (#120)
  • Persistent identifiers. Versioning examples use an immutable ref, and a schema published for long-term reuse should be identified by a w3id.org / PURL redirect or a DOI resolving to its current hosting. (#115)

Normative wording

An audit found requirements stated without an RFC 2119 keyword, which the catalogue therefore could not see. 24 are now catalogued, and three needed a decision rather than a keyword:

  • The synonym processing contract said other keys are "preserved but not interpreted". That would have forbidden an implementation from reading extensions of its own, and collided with promotion, which deliberately drops the x-oold-sssom blocks. Now: conformance MUST NOT depend on other keys, a processor MAY read them as its own extension.
  • Dereferencing an x-oold-range target was a single MUST that did not say who it bound. Split: a document SHOULD that a published reference points at a conforming target, and an implementation MUST that a loader validates what it fetched rather than assuming the target still conforms.
  • Embedded objects need an explicit type under a type-scoped context or a frame that matches on @type, not only the former.

Keyword namespacing

x-sssom is renamed x-oold-sssom. The payload follows SSSOM, but the keyword name was OO-LD's own choice, so an unprefixed name claimed a global extension name the project does not own. @context is now the single exception to the x-oold- rule, and a genuinely forced one, since JSON-LD fixes that name.

Breaking changes since rc.1

  • x-sssom -> x-oold-sssom (schema-level and inside x-oold-context)
  • schema documents now require $id to validate against the dialect meta-schema
  • rule ids moved from sequential (OOLD-RT-001) to hex (OOLD-RT-08f2)

Feedback

Comments on this release candidate are welcome in #116.

v1.0.0-rc.1

v1.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@simontaurus simontaurus released this 03 Aug 05:48

First release candidate for the v1.0 spec. A pre-release: /latest/ and the site default stay on v0.9.0; this candidate is served at /1.0.0-rc.1/.

Rolls up the term-mapping / type work (v0.9.0) plus the corrections from a spec review, each verified against a primary source (a live JSON-LD processor, the JSON Schema / JSON-LD 1.1 texts, SSSOM/SKOS).

Since v0.9.0

  • xsd:float correctly reclassified - it is not JSON-native (only xsd:string/boolean/integer/double are elided on round-trip), so it is no longer forbidden; the datatype rule is reframed around default projections, with the useNativeTypes assumption stated.
  • Compatibility claims corrected - JSON Schema 2020-12 treats unknown keywords as annotations, but strict-mode validators (Ajv) reject them; the "generic validators ignore" wording is fixed and separated from $vocabulary refusal.
  • Composition - object-valued embeds (including array items) SHOULD be property-scoped; a cyclic scoped context is broken by inlining the remote context locally, not by moving it to the root. Removed the unfounded @propagate-array MUST; fixed the JSON-LD citation.
  • Mapping machinery - SKOS mapping predicates kept (reasoner-safe, not owl:equivalent*); co-emission clarified as a pragmatic aid, not an entailment; x-oold-context/x-sssom CURIEs expand against a well-known prefix set the meta-schema defines (its @context), not the instance context; schema-level x-sssom subject is the schema $id; materialized @type aliasing follows term-vs-IRI semantics.

Remaining v1.0 gates

Not yet final: #25 (finalize edge cases) and #21 (backend impact review) are the outstanding gates before v1.0.0.

Full changelog: v0.9.0...v1.0.0-rc.1

v0.9.0

Choose a tag to compare

@simontaurus simontaurus released this 02 Aug 14:29

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-context is the single mechanism, with a small, stable processing contract: tooling reads only predicate_id (a SKOS mapping predicate, compared by IRI expansion with skos: built-in) and mapping_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:exactMatch only (others opt-in). SSSOM is the RECOMMENDED carrier, not a normative dependency; the propagatable object_source_version slots pin ontology versions under composition.
  • Type unification. x-oold-instance-rdf-type feeds @type: a materialized type is an ordinary @type, aliased and mapping-set-selectable per profile, so class synonyms are just x-oold-context on the type term. Co-typing and synonym-aliasing are orthogonal (#112).
  • Schema-level x-sssom replaces x-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_id exact/close). Migrate x-oold-iri: "X" to x-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 same x-oold-context machinery, with enum/x-oold-range and no-collision (scoping / UUID) guidance.
  • x-oold-range bundling. 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

v0.8.0

Choose a tag to compare

@simontaurus simontaurus released this 31 Jul 05:53

First release since v0.7.0, consolidating the spec and tooling work toward v1.0. Not a 1.0 candidate yet: the remaining v1.0 gates are #25 (finalize edge cases - nullable types, composition with @context, circular $ref) and #21 (backend impact review).

Highlights

  • Validator: exposed as a reusable oold-validate CLI (#98); hardened for large, cyclic and scalar-leaf schemas (#99), and for real-world schema sets with structural embed detection and deterministic generation at bounded nodes (#103).
  • Round-trip contract: typed literals round-trip as native JSON values (#100); the no-coercion rule now covers every natively-JSON-encoded datatype, not just xsd:string (#104).
  • Docs / site: canonical domain migrated to oo-ld.org (#101); serializations and neighbouring-formats guide - YAML-LD, CBOR-LD, CDDL - plus a large/bulk-data section (#105); clean spec URLs with no index.html (#106); sharpened abstract and positioning (#102).

Full changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@simontaurus simontaurus released this 24 Jul 03:31

What's Changed

  • Specify JSON-LD projection and round-trip for property value forms by @simontaurus in #92

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@simontaurus simontaurus released this 19 Jul 02:58

What's Changed

  • docs: polyglot comparison + worked mappings (SPDX 3.0, Croissant, OCA, jargon.sh, TreeLDR, yml2vocab, REST-API-LD, WoT) by @simontaurus in #81
  • spec: sharpen positioning (artefact-is-source, object-graph runtime, interlingua) by @simontaurus in #78
  • spec: Semantic delivery profiles + SHACL/OWL generation-targets note by @simontaurus in #79
  • spec: note SHACL 1.2 UI as the RDF-layer counterpart of x-oold-ui-* by @simontaurus in #80
  • spec: document JSON-LD framing and auto-frame construction from an OO-LD schema by @simontaurus in #83
  • spec: note SPARQL CONSTRUCT as an alternative to framing by @simontaurus in #84
  • spec: composition-closure (unevaluatedProperties) and validator-vs-widget notes by @simontaurus in #85
  • docs: weave the LLM Wiki motivation into the guide by @simontaurus in #86
  • Technology migration guides + end-to-end example validation by @simontaurus in #88

Full Changelog: v0.5.0...v0.6.0

v0.4.0

Choose a tag to compare

@simontaurus simontaurus released this 21 Jun 18:31
fc37389

What's Changed

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@simontaurus simontaurus released this 26 Sep 04:42
509c047

Full Changelog: v0.2.0...v0.3.0

v0.2.0

v0.2.0 Pre-release
Pre-release

Choose a tag to compare

@simontaurus simontaurus released this 04 Mar 14:45
70eae38

Extend specification draft

Full Changelog: v0.1.0...v0.2.0

v0.1.0

v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@simontaurus simontaurus released this 31 May 11:41
1f13868
add python code generation and related work