rustdl 0.3.26__tar.gz → 0.3.27__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rustdl-0.3.26 → rustdl-0.3.27}/Cargo.lock +10 -10
- {rustdl-0.3.26 → rustdl-0.3.27}/Cargo.toml +1 -1
- {rustdl-0.3.26 → rustdl-0.3.27}/PKG-INFO +1 -1
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/convert.rs +77 -8
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/told.rs +14 -7
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/explain.rs +16 -5
- {rustdl-0.3.26 → rustdl-0.3.27}/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/absorb.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/approx_saturation.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/clause.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/convert_back.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/data_axioms.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/definitions.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/disjunction_existential.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/disjunctive_antecedent.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/ir.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/locality.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/normalize.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/ontology.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/residual_trigger.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/role_hierarchy.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/transform.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/src/vocab.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/tests/concept_pool_proptest.proptest-regressions +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/tests/concept_pool_proptest.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/tests/convert_round_trip_proptest.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/tests/role_hierarchy_proptest.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-datatypes/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-datatypes/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-datatypes/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/.gitignore +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/.gitignore +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/__init__.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/fixtures/recorded_replies_clash.json +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/fixtures/seed.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/gate.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/llm.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/loop.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out/candidate.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out/current.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out/metrics.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out/transcript.jsonl +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out-clash/candidate.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out-clash/current.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out-clash/metrics.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out-clash/transcript.jsonl +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/requirements.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/run.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/__init__.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/test_gate.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/test_llm.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/test_loop.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/test_run.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/tests/test_seed.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/classify.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/errors.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/load.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/materialize.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/src/queries.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/conftest.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_classify.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_examples.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_explain.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_manchester.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_materialize.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_queries.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_results.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_smoke.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_soundness.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_stubs.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/tests/python/test_tutorial.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/examples/embed_classify.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/abox_check.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/abox_saturation.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/classify.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/diagnose.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/justify.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/laconic.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/model_cache.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/oracle_diff.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/realize.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/repair.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/src/union_find.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/abox_consistency.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/abox_sat_fp_probe.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/abox_saturation.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/adaptive_budget.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/anon349_diagnostic.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/anonymous_individuals_identity.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/anonymous_individuals_reporting.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/approx_saturation_forced_disjunct.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/backfold.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/backjump_precision_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/blocked_disjunction_soundness.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/blocked_disjunction_termination.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/cardinality_disjunct_atoms.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/classify_concrete_domain.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/classify_defined_sweep.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/classify_inverse_domain.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/completeness_contract.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/concrete_domain_clash.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/data_properties.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/data_property_assertions.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/datatype_completeness.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/datatype_inconsistency.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/datatype_value_membership.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/decide_pair_probe.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/diagnose_partition.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/disjunctive_existential_marker_fp.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/domain_gci_completeness.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/existential_successors.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/exists_top_filler.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p1_direct_bot.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p1_no_bot.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p2_disjoint_different_individuals.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p2_disjoint_types.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p3_neg_opa.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p3_neg_opa_no_clash.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p3_role_hierarchy_neg_consistent.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p3_role_hierarchy_neg_inconsistent.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p4_same_different.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p4_same_without_different.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p5_functional_diff.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p5_functional_same_target.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p6_asymmetric.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p6_asymmetric_one_way.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p6_irreflexive.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p6_irreflexive_distinct.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p7_range_compatible.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p7_range_disjoint.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/data_cardinality_disjoint.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/data_property_domain-classified.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/data_property_domain.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/datatype_definition-classified.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/datatype_definition.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/datatype_facet.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/functional_data_property.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/sub_data_property-classified.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/datatype/sub_data_property.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/functional-equiv-some-bug.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/materialize/rbox-materialized.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/materialize/rbox.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/named-pizza-country-bug.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-01.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-02.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-03.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-04.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-05.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-06.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-07.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/p2b0-terms-08.txt +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_01.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_01.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_01.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_02.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_02.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_02.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_03.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_03.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_03.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_04.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_04.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_04.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_05.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_05.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_05.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_06.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_06.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_06.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_07.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_07.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_07.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_08.hermit.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_08.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/pair_08.owx +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/phase2b/phase2b-verdicts.log +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/funcmerge_inverse.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/funcmerge_scaling.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/functional_enforcement.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/inverse_cardinality_soundness.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/inverse_symmetric_domain.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/justification.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/konclude_closure_diff.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/label_heuristic_canary.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/laconic_justification.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/materialize_oracle.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/object_has_self_domain.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/phase2c_pair_06_canary.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/precompletion_probe_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/property_assertions.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/real_ontology_corpus.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/repair_suggestions.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/sat_lookahead_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/saturator_disjointness.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/seed_probe_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/shadow_dep_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/snapshot_phase0_canary.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/sp2_nogood_gate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/subproperty_axioms.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/tautology_skip_canary.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/tbox_only_classify.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/top_subsumes_all.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/value_type_disjoint_canary.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/value_type_disjoint_probe.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/wedge_consistency.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/src/proof.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/src/seed_sat.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/tests/fixtures/phase2a_functional_role_canary.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-saturation/tests/fixtures/phase2b_compound_existential_canary.ofn +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/Cargo.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/README.md +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/counters.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/deps.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/graph.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/hyper.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/lib.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/replay.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/rules.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/saturate.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/search.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/shadow_measures.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/snapshot.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/src/trail.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/backprop_risk.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/replay_driver.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/replay_roundtrip.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/sat_lookahead_drop.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/semantic_branching.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/shadow_dep_probe.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-tableau/tests/snapshot_capture.rs +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/pyproject.toml +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/__init__.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/__init__.pyi +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/_results.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/data/pizza.owl.gz +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/data/sio.owl.gz +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/data/sulo.owl.gz +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/examples.py +0 -0
- {rustdl-0.3.26 → rustdl-0.3.27}/python/rustdl/py.typed +0 -0
|
@@ -1018,7 +1018,7 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
|
|
1018
1018
|
|
|
1019
1019
|
[[package]]
|
|
1020
1020
|
name = "owl-dl-bench"
|
|
1021
|
-
version = "0.3.
|
|
1021
|
+
version = "0.3.27"
|
|
1022
1022
|
dependencies = [
|
|
1023
1023
|
"anyhow",
|
|
1024
1024
|
"clap",
|
|
@@ -1038,7 +1038,7 @@ dependencies = [
|
|
|
1038
1038
|
|
|
1039
1039
|
[[package]]
|
|
1040
1040
|
name = "owl-dl-cb"
|
|
1041
|
-
version = "0.3.
|
|
1041
|
+
version = "0.3.27"
|
|
1042
1042
|
dependencies = [
|
|
1043
1043
|
"hashbrown 0.15.5",
|
|
1044
1044
|
"owl-dl-core",
|
|
@@ -1046,7 +1046,7 @@ dependencies = [
|
|
|
1046
1046
|
|
|
1047
1047
|
[[package]]
|
|
1048
1048
|
name = "owl-dl-cli"
|
|
1049
|
-
version = "0.3.
|
|
1049
|
+
version = "0.3.27"
|
|
1050
1050
|
dependencies = [
|
|
1051
1051
|
"anyhow",
|
|
1052
1052
|
"clap",
|
|
@@ -1059,7 +1059,7 @@ dependencies = [
|
|
|
1059
1059
|
|
|
1060
1060
|
[[package]]
|
|
1061
1061
|
name = "owl-dl-core"
|
|
1062
|
-
version = "0.3.
|
|
1062
|
+
version = "0.3.27"
|
|
1063
1063
|
dependencies = [
|
|
1064
1064
|
"bitvec",
|
|
1065
1065
|
"bumpalo",
|
|
@@ -1073,7 +1073,7 @@ dependencies = [
|
|
|
1073
1073
|
|
|
1074
1074
|
[[package]]
|
|
1075
1075
|
name = "owl-dl-datatypes"
|
|
1076
|
-
version = "0.3.
|
|
1076
|
+
version = "0.3.27"
|
|
1077
1077
|
dependencies = [
|
|
1078
1078
|
"owl-dl-core",
|
|
1079
1079
|
"proptest",
|
|
@@ -1083,7 +1083,7 @@ dependencies = [
|
|
|
1083
1083
|
|
|
1084
1084
|
[[package]]
|
|
1085
1085
|
name = "owl-dl-py"
|
|
1086
|
-
version = "0.3.
|
|
1086
|
+
version = "0.3.27"
|
|
1087
1087
|
dependencies = [
|
|
1088
1088
|
"horned-owl",
|
|
1089
1089
|
"owl-dl-core",
|
|
@@ -1094,7 +1094,7 @@ dependencies = [
|
|
|
1094
1094
|
|
|
1095
1095
|
[[package]]
|
|
1096
1096
|
name = "owl-dl-reasoner"
|
|
1097
|
-
version = "0.3.
|
|
1097
|
+
version = "0.3.27"
|
|
1098
1098
|
dependencies = [
|
|
1099
1099
|
"anyhow",
|
|
1100
1100
|
"dashmap",
|
|
@@ -1112,7 +1112,7 @@ dependencies = [
|
|
|
1112
1112
|
|
|
1113
1113
|
[[package]]
|
|
1114
1114
|
name = "owl-dl-saturation"
|
|
1115
|
-
version = "0.3.
|
|
1115
|
+
version = "0.3.27"
|
|
1116
1116
|
dependencies = [
|
|
1117
1117
|
"dashmap",
|
|
1118
1118
|
"fixedbitset",
|
|
@@ -1128,7 +1128,7 @@ dependencies = [
|
|
|
1128
1128
|
|
|
1129
1129
|
[[package]]
|
|
1130
1130
|
name = "owl-dl-tableau"
|
|
1131
|
-
version = "0.3.
|
|
1131
|
+
version = "0.3.27"
|
|
1132
1132
|
dependencies = [
|
|
1133
1133
|
"bitvec",
|
|
1134
1134
|
"bumpalo",
|
|
@@ -2554,7 +2554,7 @@ dependencies = [
|
|
|
2554
2554
|
|
|
2555
2555
|
[[package]]
|
|
2556
2556
|
name = "xtask"
|
|
2557
|
-
version = "0.3.
|
|
2557
|
+
version = "0.3.27"
|
|
2558
2558
|
dependencies = [
|
|
2559
2559
|
"anyhow",
|
|
2560
2560
|
"clap",
|
|
@@ -3,7 +3,7 @@ resolver = "2"
|
|
|
3
3
|
members = ["crates/owl-dl-core", "crates/owl-dl-saturation", "crates/owl-dl-tableau", "crates/owl-dl-datatypes", "crates/owl-dl-reasoner", "crates/owl-dl-py"]
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.3.
|
|
6
|
+
version = "0.3.27"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
rust-version = "1.88"
|
|
9
9
|
license = "Apache-2.0 OR MIT"
|
|
@@ -20,7 +20,7 @@ use crate::data_axioms::{
|
|
|
20
20
|
RangeBucket, StrSet, exact_string_literal, parse_data_intersection_dkey, parse_date,
|
|
21
21
|
parse_datetime, parse_decimal,
|
|
22
22
|
};
|
|
23
|
-
use crate::ir::{ClassId, ConceptId, IndividualId, Role};
|
|
23
|
+
use crate::ir::{ClassId, ConceptExpr, ConceptId, IndividualId, Role};
|
|
24
24
|
use crate::ontology::{Axiom, InternalOntology, SubRolePath};
|
|
25
25
|
|
|
26
26
|
/// IRI namespace for synthetic *data-key* (`DKey`) classes. These are
|
|
@@ -2407,13 +2407,82 @@ fn seed_dkey_subsumptions(out: &mut InternalOntology) {
|
|
|
2407
2407
|
// would spuriously make a class ⊥ = FP — cannot arise from overlapping
|
|
2408
2408
|
// ranges. Same datatype bucketing: int / float / double / decimal / date /
|
|
2409
2409
|
// dateTime / string never cross-seed.
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2410
|
+
//
|
|
2411
|
+
// GATE (2026-07-20): the disjointness is CONSUMED ONLY by a `∀p.DKey`
|
|
2412
|
+
// (`ObjectAllValuesFrom` over a DKey filler) — that is the sole construct
|
|
2413
|
+
// that puts a *second* DKey on the same role at a node to clash against an
|
|
2414
|
+
// `∃p.DKey`. Without any such `∀p.DKey` in the ontology the O(k²) pairwise
|
|
2415
|
+
// seeding is pure dead weight — and k is NOT small when DKeys come from
|
|
2416
|
+
// ABox `DataPropertyAssertion`s (ore_ont_10425: 5261 distinct values →
|
|
2417
|
+
// ~14M disjoint axioms → front-end conversion DNF). So skip the seeding
|
|
2418
|
+
// when no `∀p.DKey` occurs. **Sound (FP-safe) by construction**: dropping
|
|
2419
|
+
// `DisjointClasses` axioms is entailment-MONOTONE — it can only fail to
|
|
2420
|
+
// derive an unsatisfiability (a tolerated MISS), never introduce a false
|
|
2421
|
+
// subsumption. (A functional-data-property same-value inconsistency is
|
|
2422
|
+
// still caught by the `abox_check` P5 / D4 data-cardinality pre-checks.)
|
|
2423
|
+
let dkey_cids: std::collections::HashSet<ClassId> = int_dkeys
|
|
2424
|
+
.iter()
|
|
2425
|
+
.map(|(c, _)| *c)
|
|
2426
|
+
.chain(float_dkeys.iter().map(|(c, _)| *c))
|
|
2427
|
+
.chain(double_dkeys.iter().map(|(c, _)| *c))
|
|
2428
|
+
.chain(dec_dkeys.iter().map(|(c, _)| *c))
|
|
2429
|
+
.chain(date_dkeys.iter().map(|(c, _)| *c))
|
|
2430
|
+
.chain(dt_dkeys.iter().map(|(c, _)| *c))
|
|
2431
|
+
.chain(str_dkeys.iter().map(|(c, _)| *c))
|
|
2432
|
+
.collect();
|
|
2433
|
+
if ontology_has_forall_over_dkey(out, &dkey_cids) {
|
|
2434
|
+
seed_disjoint_bucket(out, &int_dkeys, |a, b| a.disjoint(*b));
|
|
2435
|
+
seed_disjoint_bucket(out, &float_dkeys, |a, b| a.disjoint(*b));
|
|
2436
|
+
seed_disjoint_bucket(out, &double_dkeys, |a, b| a.disjoint(*b));
|
|
2437
|
+
seed_disjoint_bucket(out, &dec_dkeys, OrdRange::disjoint);
|
|
2438
|
+
seed_disjoint_bucket(out, &date_dkeys, OrdRange::disjoint);
|
|
2439
|
+
seed_disjoint_bucket(out, &dt_dkeys, OrdRange::disjoint);
|
|
2440
|
+
seed_disjoint_bucket(out, &str_dkeys, StrSet::disjoint);
|
|
2441
|
+
}
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
/// True iff some axiom's class expression contains `∀R.f` (`ConceptExpr::All`)
|
|
2445
|
+
/// whose filler `f` is a `DKey` class (`cid ∈ dkeys`). This is the ONLY consumer
|
|
2446
|
+
/// of the D11b DKey-disjointness seeding (the `∃p.DKey(v) ⊓ ∀p.DKey(r)` range-
|
|
2447
|
+
/// membership clash), so when it is absent the O(k²) seeding is skippable — see
|
|
2448
|
+
/// [`seed_dkey_subsumptions`]. Short-circuits on the first hit.
|
|
2449
|
+
fn ontology_has_forall_over_dkey(
|
|
2450
|
+
out: &InternalOntology,
|
|
2451
|
+
dkeys: &std::collections::HashSet<ClassId>,
|
|
2452
|
+
) -> bool {
|
|
2453
|
+
fn walk(
|
|
2454
|
+
cid: ConceptId,
|
|
2455
|
+
pool: &ConceptPool,
|
|
2456
|
+
dkeys: &std::collections::HashSet<ClassId>,
|
|
2457
|
+
) -> bool {
|
|
2458
|
+
match pool.get(cid) {
|
|
2459
|
+
ConceptExpr::All(_, f) => {
|
|
2460
|
+
matches!(pool.get(*f), ConceptExpr::Atomic(c) if dkeys.contains(c))
|
|
2461
|
+
|| walk(*f, pool, dkeys)
|
|
2462
|
+
}
|
|
2463
|
+
ConceptExpr::Not(x)
|
|
2464
|
+
| ConceptExpr::Some(_, x)
|
|
2465
|
+
| ConceptExpr::Min(_, _, x)
|
|
2466
|
+
| ConceptExpr::Max(_, _, x) => walk(*x, pool, dkeys),
|
|
2467
|
+
ConceptExpr::And(ops) | ConceptExpr::Or(ops) => {
|
|
2468
|
+
ops.iter().any(|o| walk(*o, pool, dkeys))
|
|
2469
|
+
}
|
|
2470
|
+
_ => false,
|
|
2471
|
+
}
|
|
2472
|
+
}
|
|
2473
|
+
if dkeys.is_empty() {
|
|
2474
|
+
return false;
|
|
2475
|
+
}
|
|
2476
|
+
let pool = &out.concepts;
|
|
2477
|
+
out.axioms.iter().any(|ax| match ax {
|
|
2478
|
+
Axiom::SubClassOf { sub, sup } => walk(*sub, pool, dkeys) || walk(*sup, pool, dkeys),
|
|
2479
|
+
Axiom::EquivalentClasses(v) | Axiom::DisjointClasses(v) => {
|
|
2480
|
+
v.iter().any(|c| walk(*c, pool, dkeys))
|
|
2481
|
+
}
|
|
2482
|
+
Axiom::DisjointUnion { members, .. } => members.iter().any(|c| walk(*c, pool, dkeys)),
|
|
2483
|
+
Axiom::ClassAssertion { class, .. } => walk(*class, pool, dkeys),
|
|
2484
|
+
_ => false,
|
|
2485
|
+
})
|
|
2417
2486
|
}
|
|
2418
2487
|
|
|
2419
2488
|
/// Emit `DisjointClasses([DKey(r_i), DKey(r_j)])` for every UNORDERED pair
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
use std::collections::VecDeque;
|
|
24
24
|
|
|
25
|
+
use std::collections::HashSet;
|
|
26
|
+
|
|
25
27
|
use smallvec::SmallVec;
|
|
26
28
|
|
|
27
29
|
use crate::ConceptPool;
|
|
@@ -106,7 +108,14 @@ impl ToldTables {
|
|
|
106
108
|
pub fn build_told_tables(ontology: &InternalOntology) -> ToldTables {
|
|
107
109
|
let n = ontology.vocabulary.num_classes();
|
|
108
110
|
let mut direct_super: Vec<SmallVec<[ClassId; 4]>> = vec![SmallVec::new(); n];
|
|
109
|
-
|
|
111
|
+
// Disjoint sets use a per-class `HashSet` (not `SmallVec`) so membership
|
|
112
|
+
// dedup during build is O(1), not O(k) linear-scan. A single large
|
|
113
|
+
// `DisjointClasses`/DKey-disjointness axiom produces O(k²) pairs; with the
|
|
114
|
+
// old `SmallVec::contains` that was O(k³) and stalled front-end conversion
|
|
115
|
+
// (ore_ont_10425: 5261 distinct data values → ~14M disjoint pairs → >150 s
|
|
116
|
+
// DNF). Output below is still a sorted `Box<[ClassId]>`, so the told table
|
|
117
|
+
// is byte-identical to the previous representation.
|
|
118
|
+
let mut disjoint: Vec<HashSet<ClassId>> = vec![HashSet::new(); n];
|
|
110
119
|
|
|
111
120
|
let pool = &ontology.concepts;
|
|
112
121
|
|
|
@@ -234,14 +243,12 @@ fn add_edge(direct_super: &mut [SmallVec<[ClassId; 4]>], sub: ClassId, sup: Clas
|
|
|
234
243
|
}
|
|
235
244
|
}
|
|
236
245
|
|
|
237
|
-
fn add_disjoint_pair(disjoint: &mut [
|
|
246
|
+
fn add_disjoint_pair(disjoint: &mut [HashSet<ClassId>], a: ClassId, b: ClassId) {
|
|
238
247
|
let ai = a.index() as usize;
|
|
239
248
|
let bi = b.index() as usize;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if a != b && !disjoint[bi].contains(&a) {
|
|
244
|
-
disjoint[bi].push(a);
|
|
249
|
+
disjoint[ai].insert(b);
|
|
250
|
+
if a != b {
|
|
251
|
+
disjoint[bi].insert(a);
|
|
245
252
|
}
|
|
246
253
|
}
|
|
247
254
|
|
|
@@ -30,14 +30,25 @@ pub(crate) fn render_manchester(path: &str) -> PyResult<Vec<String>> {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
fn is_logical_axiom(c: &Component<RcStr>) -> bool {
|
|
33
|
-
use Component
|
|
33
|
+
use Component::{
|
|
34
|
+
AnnotationAssertion, DeclareAnnotationProperty, DeclareClass, DeclareDataProperty,
|
|
35
|
+
DeclareDatatype, DeclareNamedIndividual, DeclareObjectProperty, DocIRI, Import,
|
|
36
|
+
OntologyAnnotation, OntologyID,
|
|
37
|
+
};
|
|
34
38
|
// Exclude declarations, imports, and ontology-level metadata; keep the
|
|
35
39
|
// class/property/individual axioms that carry entailment meaning.
|
|
36
40
|
!matches!(
|
|
37
41
|
c,
|
|
38
|
-
OntologyID(_)
|
|
39
|
-
|
|
|
40
|
-
|
|
|
42
|
+
OntologyID(_)
|
|
43
|
+
| DocIRI(_)
|
|
44
|
+
| Import(_)
|
|
45
|
+
| OntologyAnnotation(_)
|
|
46
|
+
| DeclareClass(_)
|
|
47
|
+
| DeclareObjectProperty(_)
|
|
48
|
+
| DeclareAnnotationProperty(_)
|
|
49
|
+
| DeclareDataProperty(_)
|
|
50
|
+
| DeclareNamedIndividual(_)
|
|
51
|
+
| DeclareDatatype(_)
|
|
41
52
|
| AnnotationAssertion(_)
|
|
42
53
|
)
|
|
43
54
|
}
|
|
@@ -114,7 +125,7 @@ mod tests {
|
|
|
114
125
|
use super::*;
|
|
115
126
|
|
|
116
127
|
/// A⊑B, B⊑C written to a temp `.ofn` fixture; `render_manchester` should
|
|
117
|
-
/// return one Manchester string per SubClassOf axiom, each mentioning
|
|
128
|
+
/// return one Manchester string per `SubClassOf` axiom, each mentioning
|
|
118
129
|
/// its sub/super class, and skip the two `Declaration(Class(...))`
|
|
119
130
|
/// components as non-logical noise.
|
|
120
131
|
#[test]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-core/tests/concept_pool_proptest.proptest-regressions
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-py/examples/nesy_loop/out-clash/transcript.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/anonymous_individuals_identity.rs
RENAMED
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/anonymous_individuals_reporting.rs
RENAMED
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/approx_saturation_forced_disjunct.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/blocked_disjunction_soundness.rs
RENAMED
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/blocked_disjunction_termination.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/disjunctive_existential_marker_fp.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p1_direct_bot.ofn
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p2_disjoint_types.ofn
RENAMED
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p3_neg_opa_no_clash.ofn
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p4_same_different.ofn
RENAMED
|
File without changes
|
|
File without changes
|
{rustdl-0.3.26 → rustdl-0.3.27}/crates/owl-dl-reasoner/tests/fixtures/abox/p5_functional_diff.ofn
RENAMED
|
File without changes
|