Skip to content

ADR-0014 — Rust-Native Reasoners Only (No JVM)

Status

Accepted

Context

Earlier specs assumed ELK and HermiT JVM adapters for v1.0 (ADR-0008, prior REASONER_SPEC.md). That conflicts with OntoIndex’s Rust-first, local-first goals: Java install friction, packaging complexity, and a hard dependency outside the shipped binary.

Rust OWL reasoners exist today, but none is a drop-in HermiT replacement with identical coverage and battle history:

Crate / component Profile Notes
whelk-rs OWL EL Horned-OWL ecosystem; experimental; ideal for OBO-scale TBoxes
reasonable OWL 2 RL Datalog materialization; fast; not full DL
Horned-OWL reasoner interface Trait defined; no bundled DL engine (Horned-OWL paper)

Full OWL 2 DL classification, consistency, and unsatisfiability explanations are provided by OntoLogos ontologos-dl (1.0.0 workspace, HermiT parity in progress), integrated via ontoindex-reasoner per ADR-0015.

Decision

  1. Never depend on Java or JVM reasoners (ELK, HermiT, Pellet, etc.) in OntoIndex or OntoCode — not at v1.0, not as optional adapters.
  2. Ship Rust reasoner adapters behind the existing ReasonerAdapter trait (REASONER_SPEC.md), delegating to OntoLogos (ADR-0015):
  3. elontologos-el for OWL EL classification (default for OBO / large terminologies).
  4. rl / rdfsontologos-rl / ontologos-rdfs where RL/RDFS semantics suffice.
  5. dlontologos-dl (requires OntoLogos 1.0.0 crates.io publish).
  6. autoontologos-facade profile routing (1.0.0+).
  7. Plugin reasoners must be native binaries or WASM — not JVM subprocesses (PLUGIN_SPEC.md).
  8. ROBOT remains an optional external CLI for OBO release pipelines; it is not used for in-IDE classification (OBO_ROBOT_SPEC.md).

Consequences

Positive:

  • Single-language stack; no Java bootstrap wizard or JAR management.
  • Reasoning works offline in the VSIX / ontoindex binary.
  • Aligns with Horned-OWL + Oxigraph dual stack (ADR-0013).

Negative:

  • OntoCode v1.0 DL timeline depends on OntoLogos 1.0.0 HermiT parity, not only OntoIndex UI work.
  • EL-only ontologies may classify faster via el than dl; users need profile guidance in UI.
  • Parity with every Protégé + HermiT edge case is validated by OntoLogos conformance tests, not assumed.

Implementation notes

  • v0.6: ontoindex-reasoner + el / rl / rdfs adapters; pin ontologos-* = "0.9".
  • v1.0: enable dl and auto adapters; bump to ontologos-* = "1.0"; real clash-trace explanations (P0 in PROTEGE_PARITY.md).
  • Do not block on JVM cross-checks in CI; align with OntoLogos HermiT parity.
  • Supersedes JVM-specific guidance in prior REASONER_SPEC and amends ADR-0008 (adapters remain; JVM adapters are excluded).
  • ADR-0015 — OntoLogos as reasoner backend.