ADR-A90: Design-time OWL class backend for Eligibility

Status: Accepted Date: 2026-09-25 (proposed), 2026-09-25 (accepted) Related: ADR-A23 (compiler family completion), ADR-A24 (backend strategy), ADR-A83 (test-only reasoning engine isolation, reserved), ADR-A87, ADR-A89, ADR-A91 Unit: applied-ontology-readiness

Context

An applied ontology asks questions about its declared conditions before any instance data exists. Does a revised benefit profile admit anyone the previous revision did not? Do two trial arms admit overlapping patients? Does a profile admit anything at all? These are subsumption and satisfiability questions over classes. A DL reasoner answers them without an A-Box, so the open-world assumption does not distort the answers.

LATTICE has no backend that turns conditions into OWL classes. The SPARQL, SHACL and SWRL backends evaluate candidates. They cannot compare two conditions with each other.

Decision

  1. An OWL backend on the shared IR. It reads the same plans as the other backends (ADR-A24, ADR-A89) and emits one generated OWL module per compilation as an exe:OwlArtefact, with the same provenance links as the existing artefacts. Each condition is expressed over the domain property that carries its candidate, as bound under ADR-A91.
  2. Hierarchy classes. For a hierarchical dimension property R and each concept c of the resolved scheme edition, a primitive class Within_R(c):

    ∃R.{c} ⊑ Within_R(c)
    Within_R(d) ⊑ Within_R(c)      for each d with d skos:broader c
    

    Both axiom forms are in OWL 2 EL.

  3. Sibling disjointness is a caller option. Within_R(c) ⊓ Within_R(c′) ⊑ ⊥ for siblings c and c′ is emitted only when the caller declares the scheme’s siblings mutually exclusive and R functional. The option is recorded in the artefact’s provenance. Without it, the checks in item 6 report an overlap or an expansion that disjointness would rule out, and never miss one.
  4. Condition classes. For subject class S:

    Cond ≡ S ⊓ (⊔ᵢ Within_R(rᵢ)) ⊓ ¬(⊔ⱼ Within_R(eⱼ))
    

    A condition with exclusions only uses the scheme’s top concepts in place of the required set (L12). An interval condition becomes a datatype restriction on its value property, one property per unit, with no conversion. A candidate strictly above an excluded concept is neither entailed in nor out of Cond, which is the design-time reading of L11.

  5. Profile classes. AllRequired is intersection and AnySufficient is union. DimensionConsistent is refused, as in ADR-A89.
  6. Checks. A library function and CLI answer three questions over the generated module: subsumption (P′ ⊑ P), satisfiability of P, and satisfiability of P ⊓ Q. Each answer is recorded with the module’s provenance. The checks run through the ADR-A83 reasoning harness and never through a reasoner declared as a product dependency.
  7. Expressivity is declared. Hierarchy axioms stay in EL. Condition and profile classes use negation, union and datatype restrictions, within OWL 2 DL. Each generated module states which of the two it contains.

Consequences

Open questions

Addendum (2026-09-25): conditions read through evidence paths

Resolved: option B, chosen by the human on 2026-09-25.

This ADR encodes a condition over one dimension property R. ADR-A91 lets a condition read its candidate through a path of several steps, and a subject may have several values at its end. The SPARQL reference treats a subject with no value or several as Undetermined, and one with a single value by the decision table. Two OWL readings of an exclusion then differ: ¬∃path.Within(e) (no value is excluded) and ∃path.¬Within(e) (some value is not excluded). Neither reproduces “several values give Undetermined”, and the same gap affects inclusions.

Options:

SKOS is not involved in any option. skos:broader is used only inside the hierarchy classes of item 2, which allow several broader concepts per concept. The restriction concerns the path from a subject to its candidate, which belongs to the applied ontology, not to the concept scheme.

Implementation notes (2026-09-25, AOR-10 and AOR-11)