- From: Boris Motik <boris.motik@comlab.ox.ac.uk>
- Date: Thu, 12 Jun 2008 09:51:17 +0100
- To: "'Michael Schneider'" <schneid@fzi.de>
- Cc: <public-owl-wg@w3.org>
Hello, Thanks Michael for this really interesting example. This only reinforces my view that we should simply prohibit the usage of all rdf:* and owl:* vocabulary in the data as it is messy and brittle. Even if we can solve this problem, I doubt that we would be able to come up with a solution for which we can be reasonably sure that there are no errors. Regards, Boris > -----Original Message----- > From: Michael Schneider [mailto:schneid@fzi.de] > Sent: 12 June 2008 09:31 > To: Boris Motik > Cc: public-owl-wg@w3.org > Subject: RE: A proposal for ISSUE-104 (built-in vocabulary) > > Boris Motik wrote: > > >Hello, > > > >But consider the case where you use declare rdf:first as and > >owl:ObjectProperty, but your ontology also contains a nominal > >containing a literal. In the serialization of the ontology, you'll have > > > >_:x rdf:first "c"^^xsd:string > > > >but you'd also have > > > >rdf:first rdf:type owl:ObjectProperty. > > > >But then, you've just showed the constant "c"^^xsd:string into the > >individual domain. Under OWL DL semantics, your graph is now > >unsatisfiable. > > I think, the actual problem is the reverse mapping. It would be necessary > for the reverse mapping to clearly distinguish between syntax related usage > (as in the "owl:oneOf(...)" expression), and custom usage (rdf:first as an > object property in our example). Then, the resulting FS syntax would be > something like: > > # mapping of the nominal containing a literal > ... OneOf( ... "c"^^xsd:string ... ) > > # mapping of the custom usage of rdf:first > Declaration(ObjectProperty(rdf:first)) > PropertyAssertion(rdf:first _:z ex:something) > > So in this case, the URI 'rdf:first' would exclusively occur as an object > property in the resulting FS ontology, and there would be no problem with > the semantics. > > However, I am not sure whether the current reverse mapping would provide > this result. It might be (I would need to check) that, in the case that > rdf:first is an allowed URI, the reverse mapping would see the isolated > triple > > _:x rdf:first "c"^^xsd:string > > and would try to map it into a data property assertion. This would be fatal, > of course. > > So the reverse mapping would perhaps need to be adjusted. > > And now, I am not convinced anymore that it is perfectly possible to have a > reverse mapping which always properly distinguishes between syntax and > custom usage. For example, the same list expression in an RDF graph (or only > a part of it) may be used both as part of the syntax and in a custom way: > > :alice rdf:type [ > rdf:type owl:Class ; > owl:oneOf ( :person1 :person2 ) ] > > :alice :likes ( :person1 :person2 ) > > What to do here? The "canonical parsing process" in the current reverse > mapping cannot simply remove the list after the first axiom has been mapped, > since the list expression is still needed to process the second axiom. But > when list expressions are /not/ removed after the mapping of syntax use, > then I am not clear how to correctly cover the "punning-like" cases such as > the one discussed above. > > But even if it would turn out to be technically possible to always correctly > distinguish between custom and syntax usage, adjusting the reverse mapping > for handling custom use of RDF lists would perhaps significantly add to the > complexity of the RDF mapping. The reverse mapping is currently already very > complicated, and making it even more complex may lead to errors and other > problems. > > To make this clear: My original idea was to introduce custom usage of RDF > lists (and reification, and ...), *if* we can get it mainly for *free*, by > just not disallowing the respective URIs. But now, I see that the cost would > probably be much higher than I expected. > > So I won't push this topic any further, at least not for RDF lists (I did > not yet consider RDF reification). This looks to me as something what > /might/ be possible, but I rather tend to postpone this issue ("we currently > don't know how to do this"). > > >Under OWL Full semantics, it is really not clear what happens. > > The situation in OWL Full is much less complicated. :) > > >Regards, > > > > Boris > > Best, > Michael > > >> -----Original Message----- > >> From: Michael Schneider [mailto:schneid@fzi.de] > >> Sent: 11 June 2008 18:16 > >> To: Boris Motik > >> Cc: public-owl-wg@w3.org > >> Subject: RE: A proposal for ISSUE-104 (built-in vocabulary) > >> > >> Hi Boris! > >> > >> Regarding the 'rdf:first' problem: Your proposal would introduce > >special > >> treatment for the List vocabulary in OWL 2. My own idea, stated in an > >> earlier mail, was the opposite: To simply ignore the list vocabulary > >(except > >> in those parts of the reverse mapping where it is applied as part of > >the > >> syntax). > >> > >> This would have the effect that rdf:first would be just some URI. And > >this > >> would mean that, in order to use it, one would need to declare it to > >be > >> either an owl:ObjectProperty or an owl:DatatypeProperty, respectively. > >For > >> example, the following would then be legal OWL 2 DL: > >> > >> rdf:List rdf:type owl:Class . > >> rdf:first rdf:type owl:DatatypeProperty . > >> rdf:rest rdf:type owl:ObjectProperty . > >> rdf:nil rdf:type owl:NamedIndividual . > >> > >> :alice :likesNumbers ( 2 3 5 7 ) . > >> > >> The declarations could be imported, of course, no need to write them > >down > >> every time. > >> > >> It wouldn't be possible to use rdf:first both as an object and a data > >> property in the same ontology. But this is what one would expect in > >OWL 2 > >> DL. > >> > >> Michael > >> > >> >-----Original Message----- > >> >From: public-owl-wg-request@w3.org [mailto:public-owl-wg- > >request@w3.org] > >> >On Behalf Of Boris Motik > >> >Sent: Wednesday, June 11, 2008 12:33 PM > >> >To: public-owl-wg@w3.org > >> >Subject: A proposal for ISSUE-104 (built-in vocabulary) > >> > > >> > > >> >Hello, > >> > > >> >The discussion around ISSUE-104 (reserved vocabulary) seemed to show > >> >that lists and reification are the main, if not the only part > >> >of the reserved vocabulary that might be useful in OWL 2 DL. (If we > >feel > >> >that it is necessary, we may verify this by sending an > >> >e-mail to owl-dev once we have fleshed out our proposal. I personally > >> >don't think we need to do this, given my experience how the > >> >built-in vocabulary has been used in OWL 1.) > >> > > >> >Based on the assumption that we more or less agree on the above > >> >observation, I would like to put forward a proposal for resolving > >> >this issue. Before I do so, let me first explain why the obvious way > >of > >> >resolving the problem does not work. > >> > > >> > > >> >1. A slight problem with exempting rdf:List from the reserved > >vocabulary > >> >--------------------------------------------------------------------- > >--- > >> > > >> >For a property to be used in any OWL 2 DL axiom, the property must be > >> >declared as either an object or a data property. Now this > >> >causes a slight problem for rdf:List: we would make a hard-and-fast > >> >choice about how to treat rdf:first. Thus, we would have to > >> >decide whether rdf:first is an object or a data property, which would > >> >essentially restrict the usage of lists in OWL 2 DL in a nasty > >> >way. > >> > > >> > > >> >2. A possible way forward > >> >------------------------- > >> > > >> >To allow for lists, we would introduce four new vocabulary elements > >in > >> >OWL 2: > >> > > >> >- owl:List > >> >- owl:firstLiteral > >> >- owl:firstIndividual > >> >- owl:rest > >> > > >> >To ensure semantic compatibility with OWL Full, we would make > >owl:List a > >> >subclass of rdf:List, owl:firstLiteral and > >> >owl:firstIndividual a subproperty of rdf:first, and owl:rest a > >> >subproperty of rdf:rest. > >> > > >> >We would extend the structural spec to provide built-in declarations > >for > >> >these properties (in the obvious way). We would also add a > >> >subsection to the structural spec and to the primer about how these > >are > >> >to be used in ontologies. > >> > > >> >We would leave the rest of the built-in vocabulary in OWL 2 DL as it > >> >currently is. > >> > > >> >Note that this does not address the reification vocabulary. > >Reification > >> >is considered bad in RDF anyway, and it would introduce > >> >similar problems in OWL 2 DL; therefore, it seems to me that > >disallowing > >> >it in OWL 2 DL is not a big deal. > >> > > >> > > >> > > >> >Let me know how you feel about this. > >> > > >> >Regards, > >> > > >> > Boris > >> > > >
Received on Thursday, 12 June 2008 08:52:52 UTC