Troubleshooting¶
cargo test fails on Pizza / Family tests¶
Symptom: missing benchmark corpus pizza at ...
Fix: Download corpora before testing:
CI runs download.sh automatically. See benchmarks.
ontologos profile fails: file not found¶
Pizza is not committed to the repo (gitignored). Run ./benchmarks/scripts/download.sh or use benchmarks/data/family.owl (vendored).
Axiom count does not match Protégé¶
See the dedicated walkthrough: Protégé vs OntoLogos axiom counts.
ontology.axiom_count() is the number of axioms stored in core after mapping, not the raw OWL logical axiom count in the source file.
The parser skips complex class expressions, many data-property axioms, and some property axiom shapes. Named ABox axioms (ClassAssertion, ObjectPropertyAssertion, SameIndividual, DifferentIndividuals) are mapped in v0.4. Skipped items appear in parse_meta.skipped_axiom_count and parse_meta.warnings.
Benchmark manifest values (e.g. Pizza 658) are mapper output targets, documented in benchmarks.
Pizza is DL with mapped-construct diagnostics¶
Expected for the current Pizza corpus: mapped axioms include both EL shapes (existentials) and constructs outside EL (e.g. inverse properties), so detection reports DL with diagnostics explaining which mapped constructs rule out EL/RL. Source-only constructs may also appear under the hybrid profile contract.
Ontology::from_file returns ParseNotAvailable¶
Use ontologos_parser::load_ontology. See FAQ.
JSON from_json fails¶
Common causes: format_version: 1, invalid IRI, unknown entity in axiom, size limit. See errors.md and json-snapshot-v2.md.
Unsupported file extension¶
load_ontology returns Error::UnsupportedFormat for unrecognized extensions. Supported: .owl, .rdf, .xml, .ttl, .turtle, .ofn, .func.
Parser warnings after load¶
Inspect ontology.parse_meta().warnings. Warnings are non-fatal; the ontology loads with whatever axioms could be mapped.
Missing axioms from imported ontologies¶
owl:imports is recorded in parse_meta but not resolved — only axioms in the loaded file are mapped. Merge imports upstream or use a single bundle file.
classify / explain behavior¶
CLI classify --profile auto|el|rl|rdfs routes to EL taxonomy, RL saturation, or RDFS materialization. Use materialize for explicit RDFS. explain ships in v0.6.
Library users: call ontologos_rdfs::classify_reasoner for Profile::Rdfs; ontologos_rl::classify_reasoner for Profile::Rl. Reasoner::classify() returns a delegate hint for Profile::Rdfs / Profile::Rl and NotImplemented for Profile::Auto / El. See CLI reference and errors.md.
RDFS does not expand EquivalentClasses¶
v0.4 RDFS materializes subClassOf / subPropertyOf closure and object-property domain/range inheritance only. Named EquivalentClasses axioms are expanded into mutual subsumption by ontologos-rl during saturation. ABox rdf:type propagation is handled by RL rules when using ontologos-rl or Python profile="rl".