Before committing any alignment axiom to an external-ontology IRI in INHERIT v2 (or any TT ontology), run a 30-minute IRI-verification spike that confirms three things:

  1. Existence — The IRI actually resolves to a real class in the target ontology. curl the raw RDF file + grep for the class name. Never assume an IRI exists because a book or a paper cited it.
  2. Semantics matchrdfs:subClassOf parents, SHACL shapes, required properties, and skos:definition align with the mental model you’re axiomatising. If your class carries fields the target doesn’t require, you need rdfs:subClassOf (one-way), not owl:equivalentClass (two-way).
  3. Version pin is stable — The named release actually exists at time-of-commit. Upstream breaking changes across versions are rare but possible (FIBO quarterly release + Commons annual; OBO ontologies more volatile). Re-verify on each alignment-ontology release.

Why: owl:equivalentClass pointing to a non-existent IRI doesn’t error at authoring time — RDF is open-world, so unknown IRIs are just unknown. It fails silently, creating semantic debt that surfaces years later when a reasoner tries to close the loop or a consumer tool expands the prefix and gets 404.

How to apply:

  • Any new owl:* or rdfs:subClassOf axiom pointing outside inherit-* namespaces triggers the spike.
  • Any version-pin claim (“FIBO Production 2026Q2”, “BFO-2020”, “CIDOC CRM 7.1.1”) triggers verification that the named release exists.
  • Library-grounded research (Keet / Allemang / Hitzler / etc.) is necessary but not sufficient for IRI commitment. Books discuss ontology architecture; they rarely drill into specific module paths. The authoritative check is always the raw RDF file.
  • Spike output is a small findings.md document pattern (see docs/superpowers/specs/spike-fibo-role-2026-04-23/findings.md for template): method + findings + recommended axiom correction + sources.
  • Time-box to 30 minutes. If the spike uncovers deep issues, it becomes a proper research task.

Canonical incident: Thu 23 April 2026. A-20 committed inherit-fnd:RoleInstance owl:equivalentClass fibo-fnd-rel-rel:Role. 30-min verification spike revealed three defects: (1) fibo-fnd-rel-rel:Role is not a FIBO class at all — canonical class is cmns-rlcmp:Role in OMG Commons which FIBO imports; (2) owl:equivalentClass was too strong — our RoleInstance carries temporal/evidential fields Commons Role doesn’t require; (3) version pin “FIBO Production 2026Q2” doesn’t exist yet — Q1 2026 is the current stable release. A-20.1 patch applied the corrections. Had the spike not run, Apache-intended code would have shipped with a non-existent IRI.

Where this applies:

  • INHERIT v2 @inherit/core/ontology/*.ttl authoring (any alignment axiom to FIBO / BFO / PROV-O / CIDOC CRM / schema.org / OMG Commons / DOLCE / DublinCore / FOAF / SKOS-itself)
  • SHACL shapes referencing external IRI ranges or targets
  • JSON-LD @context entries mapping short prefixes to external IRIs
  • OpenAPI 3.1 schema $ref targets pointing to external ontology fragments
  • Future TT-brand ontologies or data standards (InheritKit, LegacyLists schemas, etc.)

Related:

  • docs/superpowers/specs/spike-fibo-role-2026-04-23/findings.md v1.0 — canonical spike-findings template
  • docs/superpowers/scoping/2026-04-23-v1-12-amendments.md A-20.1 entry — example patch amendment triggered by IRI-verification failure
  • Memory feedback_v2_apache_deferred_until_public_release — why IRI errors in Apache-intended code matter (irrevocable at public release)
  • Memory feedback_always_check_library_indexed_first — library-grounding is step 1; IRI-verification is step 2 for external-ontology claims