Inference/Validation Boundary and the Entailment-Regime Disposition
Context and Problem Statement
A review of OPDA’s load-time entailment (the bespoke 7-rule subset of config/opda-rdfs-plus.rules, then named config/opda-owl-rl-safe.rules; ODR-0025/0026, ADR-0035) raised three suspicions: that the subset is non-standard and “smells”, that it masks modelling errors, and specifically that the EPC-certificate domain mismatch (ODR-0028 R3) is a modelling error that the closure papers over by excluding rdfs:domain/range. Empirically the closure adds 0 triples over the schema (only rdfs:subClassOf type-propagation can fire; the model is flat by doctrine — ODR-0027), which sharpened the question of whether the materialisation layer earns its keep.
Council session-039 (Full Council; Queen Allemang, DA Hendler; Guizzardi, Knublauch, Cagle, Hitzler) adjudicated it. The forensic finding, verified against the emitted artefacts, re-located the problem: the core model is correct and the emitted SHACL is correct, so the issue is neither the model nor the entailment rules — it is a missing validation layer plus three edge defects. This ODR records the resulting boundary doctrine and disposition; the operator ratifies, with one standing constraint: the entailment rules’ logic is frozen (renaming/re-documenting is permitted; adding, removing, or editing rule bodies — including re-admitting domain/range as entailment — is not).
Decision Drivers
- The asserted model is sound with or without the closure; correctness must live in modelling + validation, not in entailment (ODR-0027 facets-not-subclasses; the closure is minimal by design).
- Excluding
rdfs:domain/rangefrom inference is correct (materialising types from predicate use is unsound for master data — ODR-0025 §R2), but leaves a blind spot: domain mismatches are currently neither inferred nor validated. - The entailment rules are stable, audited, and adopted from established prior art (see §More Information) — their logic is not to be churned.
- Honesty of naming: the ruleset is a sound but RL-incomplete fragment, not OWL 2 RL.
Considered Options
- Option A (chosen) — Freeze the rule logic; add SHACL domain/range constraints; fix the EPC defect at its real edges; query the asserted model. Keep the 7 rules’ logic untouched (rename/re-document for honesty is fine); put
domain/rangeon the validation side as SHACL; correct the round-trip validator and the dangling shape. - Option B — Modify the entailment rules (e.g. re-enable
domain/range, or add rules to surface the EPC case). Rejected: re-enablingdomainmaterialisesEPCCertificate ⊑ Propertyand cascades violations against innocent data — inference would propagate the bug, not catch it (Knublauch/Hitzler). Also forbidden by operator constraint (no rule-logic changes). - Option C — Drop/shrink the materialised closure. Rejected: “query the asserted model” is right, but deleting the closure relocates entailment, unsound and ungoverned, into every consumer’s SPARQL and removes the negative consistency gate (Hendler). Keep it (minimal/dormant), do not delete it.
- Option D — Re-home
currentEnergyRatingonto the certificate (or add a Property-siderecordsRating). Rejected: the rating is a Quale borne by the Property; the certificate is an Information Object that records it. Re-homing would introduce the representation-vs-represented conflation, not cure it (Guizzardi).
Decision Outcome
Chosen option: “Option A”, because the model and the emitted SHACL are already correct; the only genuine gap is that domain/range constraints aren’t validated, and the only live EPC exposure is a validator misconfiguration plus a dangling shape — none of which requires touching the entailment rule logic.
The inference/validation boundary is the governing principle: infer the relations whose closure the author wants materialised (subclass/subproperty hierarchy, inverse, symmetric, transitive — the 7 frozen rules); validate the constraints the author wants checked (domain, range, cardinality, datatype, identity keys — SHACL). domain/range sit on the validation side; RDFS only ever put them on the wrong side.
The entailment regime stands, understood as minimal/dormant: only rdfs:subClassOf type-propagation currently fires (0 triples on the schema, ~30 trivially-recoverable on instance data); the other six rules are dormant carriers that activate when a real construct lands; the negative consistency gate (no owl:sameAs, no spurious EPCCertificate ⊑ Property) is retained as the high-value asset. The rule logic is frozen; the ruleset may be renamed/re-documented honestly (it is a sound, RL-incomplete RDFS-Plus fragment, not an OWL 2 RL reasoner).
Consequences
- Good, because correctness moves to where it belongs — explicit modelling + SHACL validation — and a misplaced
domainpredicate now fails loudly instead of being silently uncaught. - Good, because the entailment rules are untouched: zero materialised-triple change,
ci-inference-closurestays byte-identical, and the audited negative gate is preserved. - Good, because the naming stops over-claiming OWL 2 RL conformance (a consumer can no longer assume domain/range/equality entailments hold).
- Neutral, because the closure remains a near-no-op today; it is kept as governed insurance, not for current output.
- Bad, because it adds a generated SHACL constraint layer (new emitter surface) and requires correcting two records and one profile shape.
Confirmation
- The SHACL
domain/range-as-constraint shapes flag a predicate used off-domain as a violation (the EPC mismatch, were it ever re-introduced, fails the gate). - The ADR-0014 round-trip validates against the materialised Safe-Group closure, not full
inference="rdfs"; the EPC false positive no longer arises. ci-inference-closureis byte-identical before/after (rule logic unchanged — only the filename/header/prose differ).- ODR-0028 R3 wording is corrected to match the emitted artefacts.
Rules
R1 — The inference/validation boundary
Infer (materialise) only the relations whose closure is wanted: rdfs:subClassOf/subPropertyOf transitivity + propagation, owl:inverseOf, owl:SymmetricProperty, owl:TransitiveProperty (the 7 frozen rules, ODR-0025 §R1). Validate (SHACL, never infer): rdfs:domain, rdfs:range, cardinality, datatype, identity/keys. Re-admitting domain/range/sameAs/functional/equivalence as entailment is prohibited (ODR-0025 §R2; unsound for master data).
R2 — Frozen rule logic (operator constraint)
The entailment rule logic (rule bodies, the enabled/excluded set, closure behaviour) is not to be modified. Renaming the ruleset file, rewriting its header, and amending the descriptive prose of ODR-0025 §R1 / ADR-0035 for honesty are permitted (they change no entailment). ci-inference-closure byte-identity is the guard that no logic changed.
R3 — domain/range-as-SHACL-constraint pattern
For every property carrying rdfs:domain C, emit a node shape sh:targetSubjectsOf <pred> ; sh:class C ; sh:severity <per ODR-0013>; for rdfs:range C, the sh:targetObjectsOf <pred> ; sh:class C dual. This carries the exact semantics of rdfs:domain/range evaluated closed-world (“are they?”) instead of generatively (“therefore they are”), closing the ODR-0025 §R2 blind spot without unsound inference. Realised in opda-shapes.ttl (ODR-0004 §3a).
R4 — The EPC disposition (model is correct; fix the edges)
opda:currentEnergyRating (rdfs:domain opda:Property, a UFO Quale-in-Region) and opda:EPCCertificate (UFO Information Object / prov:Entity, ODR-0008d Rule 3) are modelled correctly; the emitted Baspi5_PropertyShape correctly carries the rating and the opda:hasEPCCertificate join. Do not re-home the rating; do not add a recordsRating. The fixes: (a) the round-trip validator → Safe-Group closure not full RDFS (ADR-0014); (b) the dangling Baspi5_EPCCertificateShape (a bare sh:targetClass with no sh:property) → remove it or populate it with certificate-intrinsic constraints only (issue date, authority reference, the ODR-0008d IC tuple), never the Property rating; (c) correct ODR-0028 R3’s wording (the emitted SHACL does not bind the rating onto the certificate; the exposure is the validator flag + the dangling shape).
R5 — Honest naming
The ruleset is a sound, RL-incomplete fragment (removing rules from a sound set reduces completeness, never soundness). It is not an OWL 2 RL reasoner and its output is not the OWL 2 RL closure. Rename/re-document accordingly (e.g. “RDFS-Plus”) with a header stating SOUND-but-INTENTIONALLY-INCOMPLETE; keep “model-but-don’t-evaluate” (ODR-0026 R2). No rule-logic change.
More Information
- Ratifying deliberation: Council session-039 — verdicts Q1 REVISE (EPC error real but re-located), Q2 REJECT-logic/REVISE-name, Q3 SHRINK (keep, don’t drop), Q4 AFFIRM (domain/range as SHACL). DA Hendler WITHDRAWN (mechanism kept) + CONCEDED rename.
- Records this disposition amends: ADR-0035 (reframe minimal/dormant + honest naming + frozen-logic note), ODR-0028 R3 (wording correction), ADR-0014 (round-trip inference flag), ODR-0025 §R1 (naming prose).
- Model facts:
opda-property.ttl(currentEnergyRatingdomainProperty;hasEPCCertificatejoin),opda-descriptive.ttl(EPCCertificateas Information Object),profiles/baspi5.ttl(Baspi5_PropertyShapeowns the rating;Baspi5_EPCCertificateShapeempty); inference implscripts/fuseki-load.mjs+config/opda-rdfs-plus.rules; classification doctrine ODR-0027. - Consolidating doctrine: ODR-0033 — the §R1 inference/validation boundary is one of the fragments it gathers into the single “author OWL/RDFS axioms as documentary AI-signal, never entailed” statement.
- Prior art: the entailment ruleset is adopted from a sibling project’s ratified safe-rule lineage (
~/source/hm/semantic-modelling, council sessions 103–105;config/hm-owl-rl-safe.rules), recorded in ODR-0025 / ODR-0026 §More-Information.
Comments
Loading comments…
Sign in to post a comment