Versioning, Deprecation & Migration

owl:versionIRI, owl:deprecated, SHACL migration shapes — keep downstream consumers alive across releases.

0/4 done

Overview

Versioning, Deprecation & Migration

owl:versionIRI, owl:deprecated, SHACL migration shapes — keep downstream consumers alive across releases.

Why it matters

An ontology with no versioning policy will break every downstream consumer the first time a class is renamed. owl:versionIRI + a deprecation policy is the minimum viable practice.

Going deeper

The minimum viable versioning policy, three habits:

  1. Always set owl:versionIRI — a separate, monotonically-changing IRI from the ontology IRI itself, so consumers can pin to a specific release.
  2. Deprecate, don't delete — mark removed terms with owl:deprecated true and rdfs:isDefinedBy <prev-version-IRI>. Provide a bridge axiom (owl:equivalentClass or owl:equivalentProperty) for at least one full release cycle.
  3. Publish a changelog with semantic-version semantics — MAJOR for any breaking change (deletion, semantic narrowing); MINOR for additions; PATCH for labels/comments only.

A SHACL migration shape is the 'codemod' of ontology versioning: ship a shape that detects the old terms in a consumer's data and reports them, so consumers can run the shape and find every place they still reference deprecated IRIs.

Analogy

Versioning an ontology is changing a public API — not changing your personal notes.

If you ship a Python library and rename Customer to Client, every project that imports your library breaks the moment they upgrade. The civilised response is not 'they should rename their code'; it's 'leave Customer in place as a deprecated alias for one or two minor releases, with a clear changelog and migration guide'.

Ontologies are no different — except the consumers are knowledge graphs, SPARQL queries, downstream reasoners, dashboards. Each of them has 'imported' your IRIs. owl:deprecated true + an owl:equivalentClass bridge + a fresh owl:versionIRI is the equivalent of the deprecation cycle.

Tools & resources

Tools & resources

Make it stick

Use the prompts below to anchor versioning, deprecation & migration to a real ontology you care about.

  • Does every ontology your team publishes have a `owl:versionIRI`? If not, your consumers can't pin and your releases are silently breaking changes.
  • Where in your last ontology release did you *delete* a term rather than deprecating it? What did that cost downstream?
  • What's the smallest version of a deprecation policy you could roll out next sprint?

Reading in progress · 0 of 4 activities done