W3C home > Mailing lists > Public > public-rdf-wg@w3.org > September 2013

Re: Possible tweak to datatype semantics

From: Antoine Zimmermann <antoine.zimmermann@emse.fr>
Date: Fri, 13 Sep 2013 17:30:13 +0200
Message-ID: <52332F85.9000205@emse.fr>
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.


> 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
Tél:+33(0)4 77 42 66 03
Fax:+33(0)4 77 42 66 66
Received on Friday, 13 September 2013 15:30:36 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:04:32 UTC