You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Classification now bounds each subsumption test by default
(pair_timeout_ms / per_pair_timeout_ms defaults to 1000 ms;
previously unbounded). Pathological SROIQ ontologies (e.g. pizza) no
longer hang by default. A timed-out pair is recorded as "not
subsumed" — sound (never a false subsumption), but the result may
be incomplete. Pass 0 for the complete, unbounded classification.
1000 ms is the empirical knee on pizza: higher budgets buy no extra
completeness (the remaining pairs are intractable at any reasonable
bound) but cost proportionally more wall time.
Incompleteness is now surfaced loudly, so a bounded run can't
silently hand back a hierarchy missing real edges:
CLI rustdl classify prints a prominent ⚠ INCOMPLETE: N pair(s) exceeded the timeout … warning to stderr when any pair times out.
Python rustdl.classify / classify_bytes emit an IncompleteClassificationWarning (filterable via the warnings
module), and the Classification object exposes .complete (bool)
and .timed_out_pairs (int).
Added
CLI multi-format input.rustdl <cmd> file.{owx,owl,rdf} now
works — the reader is chosen by file extension (.owx → OWL/XML,
.owl/.rdf → RDF/XML, .ofn/other → OWL Functional). Previously the CLI
read OFN only; the Python bindings already auto-detected. Verified on
the owlcs pizza ontology (RDF/XML) — 99 classes, 2 unsatisfiable
(CheeseyVegetableTopping, IceCream), matching the canonical result.