- From: Michael Wessel <wessel@racer-systems.com>
- Date: Fri, 11 Apr 2014 12:03:43 -0700
- To: public-owl-comments@w3.org
I have a related comment here - the requirement that class constructors in OWL 2 Functional such as ObjectIntersectionOf(arg1 arg2 ...) (and related connectives) have to have at least 2 arguments which are not structurally equivalent makes it difficult for applications to programmatically generate OWL 2 Functional, especially if the ontology is generated by an automatic translator. Often, such translations will be lossy - e.g., if the original FOPL version of the ontology contained a conjunction And(arg_1 ... arg_n) then this might have been translated into ObjectIntersectionOf(arg'_1 ... arg'_n) by the translator, with arg'_i's being the translated variants of the original arguments. Now, suppose all these arg'_i's turn out to be structurally equivalent in OWL 2 (because the translation was lossy). Then we will have produced ObjectIntersectionOf(arg'_1); and this is considered illegal OWL 2 Functional syntax, according to the spec. You might say - well, bad translator program! It should not generated bad OWL 2 Syntax. However, it should be mentioned that checking the subexpressions for structural equivalence in such a conjunction is not an easy task at all. As those subexpression can be nested, it requires some form of class expression simplification to get it right (as ObjectIntersectionOf's etc. might have to "dissappear"). My question is - should it really be that difficult to generate syntactically correct OWL 2 Functional? We encountered that problem when we fed a programmatically translated large ontology which contained ObjectIntersectionOf's with all conjuncts being structurally equivalent into the OWLAPI, which classified the ontology as OWL Full then (perhaps it should have been an OWL 2 syntax error? might be an OWLAPI bug, don't know). IMHO, requiring at least 2 non-structurally equivalent arguments in the Spec for these constructors makes programmatic ontology generation very complicated, especially for developers that cannot exploit the OWLAPI (e.g., developers not using Java). I am not sure if ontology developers are willing to implement structural equivalence checkers and class expression simplifiers only to ensure that correct OWL 2 Functional syntax is generated - this might be a too high price to pay. Regards, Michael Wessel > Since the spec ways that the DisjoinedClasses takes a set of classes as > arguments, then stating DisjointClasses( ex:foo ex:foo ex:bar ) is > actually impossible — that is, that axiom is not a structurally valid OWL > 2 DL axiom. Hence, there is no need to require the arguments in the > structural spec to be different. The only thing we could do is maybe > clarify the syntax and say that DisjointClasses( ex:foo ex:foo ex:bar ) is > then syntactically incorrect. That would obviate the need for 2/ since an > RDF graph containing a DisjointClasses axiom with structurally equivalent > classes would also be syntactically incorrect. > > Regards, > > Boris
Received on Saturday, 12 April 2014 02:04:44 UTC