Description
When an ontology uses owl:imports, FOOPS! incorrectly reports the imported ontology's IRI as the assessed ontology's URI, rather than the root ontology's IRI. This causes URI2 and PURL1 to report the wrong IRI and fail with a false mismatch.
Reproduction
The issue manifests as an import chain:
- Ontology pizza (
https://w3id.org/ontostart/pizza/) has owl:imports <https://w3id.org/ontostart/pro>
- Ontology pro (
https://w3id.org/ontostart/pro/) has owl:imports <https://w3id.org/sulo>
When FOOPS! assesses https://w3id.org/ontostart/pizza/:
When FOOPS! assesses https://w3id.org/ontostart/pro/:
Root cause hypothesis
FOOPS! uses the OWL API to load ontologies. The OWL API resolves owl:imports and loads the imported ontology into the same ontology manager. FOOPS! then appears to pick the IRI of the first-loaded (imported) ontology instead of the IRI of the root ontology (the one corresponding to the document that was actually requested).
Expected behaviour
FOOPS! should identify the root ontology (the one loaded from the provided URI) and use its declared owl:Ontology IRI for all checks, ignoring the IRIs of transitively imported ontologies.
Workaround
None on the user side — removing owl:imports is not acceptable as it changes the formal OWL semantics of the ontology.
Description
When an ontology uses
owl:imports, FOOPS! incorrectly reports the imported ontology's IRI as the assessed ontology's URI, rather than the root ontology's IRI. This causes URI2 and PURL1 to report the wrong IRI and fail with a false mismatch.Reproduction
The issue manifests as an import chain:
https://w3id.org/ontostart/pizza/) hasowl:imports <https://w3id.org/ontostart/pro>https://w3id.org/ontostart/pro/) hasowl:imports <https://w3id.org/sulo>When FOOPS! assesses
https://w3id.org/ontostart/pizza/:When FOOPS! assesses
https://w3id.org/ontostart/pro/:Root cause hypothesis
FOOPS! uses the OWL API to load ontologies. The OWL API resolves
owl:importsand loads the imported ontology into the same ontology manager. FOOPS! then appears to pick the IRI of the first-loaded (imported) ontology instead of the IRI of the root ontology (the one corresponding to the document that was actually requested).Expected behaviour
FOOPS! should identify the root ontology (the one loaded from the provided URI) and use its declared
owl:OntologyIRI for all checks, ignoring the IRIs of transitively imported ontologies.Workaround
None on the user side — removing
owl:importsis not acceptable as it changes the formal OWL semantics of the ontology.