New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OWL 2 profiles datatype definition issues #435
Comments
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) |
Disjoint classes might be over excluded. It was being blocked in the EL checker by mistake until a few versions ago, so I am suspicious |
RL profiler does improperly reject DataIntersectionOf, though it should reject the intersection in the example, since the conjuncts are not in RL. |
QL improperly rejects DisjointClasses |
Thanks for the info about the illegal datatypes, I totally forgot there is a whitelist. I updated the ontologies listed above; older revisions are still available in the gist. |
DataIntersection in RL fixed DisjointClasses in QL fixed |
Side note: the validator URL points to a tool based on an old version of the OWL API - there's a chance that there are bugs in there, so do not take it as a reference :-) it could be wrong. |
QL specs say: reflexive and irreflexive allowed. The fact that they're not listed might be a typo. I believe they should be allowed (unlikely to be two typos in a row in the textual description). |
QL irreflexive fixed. RL to be done after lunch because reasons. |
DataIntersection in RL fixed DisjointClasses in QL fixed IrreflexiveProperty in QL fixed Various issues in RL fixed
This should be fixed in version4 - do you have a chance to check out and build it locally, @linkvt ? Otherwise I'll upload a new snapshot to Sonatype. |
@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. |
Thanks for your perspective on this, I will look into it and add it here if it affects the OWL API validation. |
marking the fix to be ported to version 5 |
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
And
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. |
Time for a sad message to public-owl-comments. |
This looks like a problematic commit. |
Also, DisjointClasses in RL and QL aren't checking to see if the elements are subclasssexpressions. This code was right in owlapitools. |
Aha. We had profile verification implemented but not run as part of the build. I assumed the tests were correct. Silly me. |
Check of components of disjoint classes was removed by mistake.
Fixed QL and RL as they should have been. |
DataIntersection in RL fixed DisjointClasses in QL fixed IrreflexiveProperty in QL fixed Various issues in RL fixed
The bugs have been fixed. The remaining problem is an issue with the specs - marked as such. |
Hi,
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
I get the message "Use of unsupported data range" a few times."Use of data range not in profile" for
DataOneOf
.OWL 2 QL
Again "Use of unsupported data range".Also "Axiom type not allowed in profile" for the DisjointClasses.Although I don't get the violation "Axiom type not allowed in profile" when using the OWL Validator with
AllDisjointClasses
andowl:DisjointWith
.The profiles document says
IrreflexiveObjectProperty
is allowed, the listing on the bottom of the page doesn't contain it. Because of this I'm not sure what the correct behaviour is.OWL 2 RL
"Use of unsupported data range" when using the same elements as in the other ontologies.EquivalentDataProperties
,DataIntersectionOf
,DisjointDataProperties
,DisjointClasses
should be allowed, but I receive "Axiom type not allowed in profile".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 text was updated successfully, but these errors were encountered: