- From: Antoine Zimmermann <antoine.zimmermann@emse.fr>
- Date: Fri, 13 Sep 2013 17:30:13 +0200
- To: Pat Hayes <phayes@ihmc.us>
- CC: RDF WG <public-rdf-wg@w3.org>, "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
Le 13/09/2013 07:25, Pat Hayes a écrit : > I know its very late to even be talking about this, but Antoine's > test cases made me notice an oddity which the current semantics for > datatyped literals produces, and which would be easy to fix. So I'm > outlining it here in case the WG feels it would be worth doing. > > We distinguish 'recognized' datatype IRIs from the others, and right > now, if you see a literal with an unrecognized datatype IRI in it, > say x:dt, then you know nothing at all about what that literal means. > Absolutely nothing. So this inference: > > :a :p "foo"^^x:dt . > > |= > > :a :p _:x . _:x rdf:type x:dt . > > is not a valid entailment. But if x:dt were recognized, it would be: > and moreover, you know this without knowing anything about x:dt. This > entailment is valid for ANY recognized datatype, and ANY string > "foo". So why isn't it valid for any datatype, recognized or not? > This is clearly slightly irrational. A rational way to reason would > be: I know now, even without recognizing that datatype, that this > inference will be valid when I do recognize it; and I won't need to > know anything more about the datatype in order to make that > inference; so why not just pretend that I recognize the datatype and > make the inference now, to save time? I didn't ponder this argument much before commenting on Peter's answer, and I must say after all that this makes a lot of sense. This entailment could not be valid in RDF 2004 because all literals (ill typed or not) had to denote. But now there should not be a problem. So after all +0.5 to this proposal, waiting to hear more from Peter. AZ. > We could fix this with the following changes. > > In section 7.1, add the condition (to the table, it would be the > third line out of three): > > For any literal "sss"^^aaa, if IL("sss"^^aaa) is defined then > <IL("sss"^^aaa), I(aaa)> is in IEXT(I(rdf:type)) > > and add the explanatory text immediately below: "The third condition > applies to all datatyped literals, whether the datatype IRI is > recognized or not." > > And in section 7.2.1, at the beginning of the text, add the > entailment pattern (moved from section 8.1.1, and with "for ddd in D" > removed): > > rdfD1 <if S contains> xxx aaa "sss"^^ddd <then S D-entails> xxx > aaa _:nnn . _:nnn rdf:type ddd . > > together with its explanatory text from 8.1.1. > > > The advantage to RDF engines is that this is one less case where they > have to check whether or not a datatype is "recognized", and it means > that the interpolation lemma is more useful when there are datatyped > literals around. > > Any comments? Is this worth doing? Is this legally possible to do at > this LC stage? I would be willing to declare the current version an > error if that is what it takes :-) > > Pat > > ------------------------------------------------------------ IHMC > (850)434 8903 home 40 South Alcaniz St. (850)202 4416 > office Pensacola (850)202 4440 fax FL > 32502 (850)291 0667 mobile > (preferred) phayes@ihmc.us http://www.ihmc.us/users/phayes > > > > > > > -- Antoine Zimmermann ISCOD / LSTI - Institut Henri Fayol École Nationale Supérieure des Mines de Saint-Étienne 158 cours Fauriel 42023 Saint-Étienne Cedex 2 France Tél:+33(0)4 77 42 66 03 Fax:+33(0)4 77 42 66 66 http://zimmer.aprilfoolsreview.com/
Received on Friday, 13 September 2013 15:30:36 UTC