-
Notifications
You must be signed in to change notification settings - Fork 311
Description
I encountered the problem that a valid OWL DL ontology can be classified as not belonging to OWL DL if the same argument is used twice in an EquivalentClasses-axiom. Here is a minimal ontology:
Prefix(:=<http://www.example.org/reasonerTester#>)
Ontology(
Declaration(Class(:A))
EquivalentClasses(:A :A)
)
Using the class OWL2DLProfile(), I wrongly get a violation report for the OWL DL profile. According to the definition of EquivalentClasses in the OWL DL standard, the axiom is equivalent to two SubClassOf(:A :A) axioms. The latter representation gets correctly classified by OWL2DLProfile() as contained in OWL DL.
I think, the issue is triggered by how the axiom is parsed in OWLFUctionalSyntaxParser where the arguments are parsed as a set in this function. In short: the way the axiom is parsed and how the profile is checked are conflicting.
A similar issue also occurs for other types of axioms in OWL DL. I found the following one:
- SameIndividual
- EquivalentDataProperties
- EquivalentObjectProperties
- ObjectIntersectionOf
- DataIntersectionOf
For reproduction, here is a minimal program that demonstrates the behavior:
OWLOntologyDocumentSource source = new FileDocumentSource(ontFile, new FunctionalSyntaxDocumentFormat());
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
ont = manager.loadOntologyFromOntologyDocument(source);
OWLProfileReport profileReport = new OWL2DLProfile().checkOntology(ont);
List<OWLProfileViolation> violations = profileReport.getViolations();