Skip to content

rustdl 0.3.0

Choose a tag to compare

@micheldumontier micheldumontier released this 05 Jun 09:46
· 252 commits to main since this release

[0.3.0] — 2026-06-05

Changed

  • 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.