Join GitHub today
OWL 2 profiles datatype definition issues #435
I used the OWL 2 EL, QL and RL profile to validate some smaller ontologies I created. At some point I noticed that the OWL API did - at least to my knowledge - behave incorrectly. I then used the OWL 2 Profiles document to test the three profiles. The following ontologies, which were created with the OWL API 4.0.2, cause validation errors for me which I don't understand.
OWL 2 EL
OWL 2 QL
OWL 2 RL
Also "ReflexiveProperty" should not be allowed (example), but the profile doesn't complain (profiles page: "OWL 2 RL supports all axioms of OWL 2 apart from disjoint unions of classes (DisjointUnion) and reflexive object property axioms (ReflexiveObjectProperty)").
I hope that this might help and already thanks for looking into it. As I'm not very familiar with OWL I hope not all of my findings are wrong.
Edit: I updated the ontologies to use datatypes OWL 2 profiles allow.
The putative EL ontology contains and uses:
Which are not part of the explicitly listed set of permissible data types.
(This applies to all three profiles- my MacBook was having a little heat death- only happened to know it applied EL off the top of my head)
changed the title from
OWL 2 profile validation might have mistakes
OWL 2 profile validation mistakes
Aug 24, 2015
added a commit
Aug 24, 2015
@ignazio1977 I tried to use the locally built jars but without success. Importing the owl api project in IDEA also didn't work for me. Both times I received errors when running the application.
@ignazio1977 Thanks for the fixes and the snapshot. The QL and RL ontologies pass the validation now.
The OWL 2 EL profile still reports a violation:
I don't understand this because it seems OK when looking at the following rules:
Is this because of the restricted set of datatypes sesuncedu pointed out? If it is, how can a DatatypeDefinition exist in the OWL 2 EL profile?
Where the list of supported datatypes is mentioned, there's also this:
To me this implies that any other datatype defined must match this as well - I'd think that, given this, it is not possible to define new datatypes that intersect these value spaces at all. I'm not sure why DatatypeDefinition is allowed in the grammar, as I cannot think of a case in which it would be used that did not fall outside EL.
However, I do not consider myself an expert on the topic, so I cannot give you a definitive answer.
I am convinced that the error in the Profile specification with respect to EL, and possible others, is that names defined by datatype definitions are not added to the set of admissible data ranges.
From the Abstract & Fun Syntax Spec
Thus we can finitely expand the datatype definition, and the expansion can only contain EL legal constructs.
Also, if the DT argument is not added to the set of admissible datatypes, then DatatypeDefinition could at most be syntactically used to attempt to redefine a datatype listed in the whitelist. This is blocked by section 4, which specifies the lexical and value spaces for each of these types. Since defined types have empty lexical spaces, this eliminates every DT apart from owl:real; however, owl:real is given a specified value space, which can only be expressed as owl:real, violating the strict partial order. Further, owl:real has defined facets, but the result would not (this isn't as relevant for EL).
There are some unnecessary restrictions in the OWL 2 Profiles, but this seems like scrivener's error.