- From: Sandro Hawke <sandro@w3.org>
- Date: Fri, 13 Sep 2013 08:57:56 -0400
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
- CC: Pat Hayes <phayes@ihmc.us>, RDF WG <public-rdf-wg@w3.org>, Antoine Zimmermann <antoine.zimmermann@emse.fr>
On 09/13/2013 02:03 AM, Peter F. Patel-Schneider wrote:
> What good would this change from the 2004 situation do?
>
> Even if inertia was strongly indicating that this change should not be
> made, I would vote against it.
>
Assuming you mean "if inertia was NOT strongly indicating".
To my mind, this change is a simple bug fix, not unreasonable to do
after Last Call. I could be wrong about that.
> If you make this change, you have the situation that if x:dt is not a
> recognized datatype, the empty graph does not RDFS entail
> x:dt rdf:type rdfs:Class .
> but
> :a :p "foo"^^x:dt .
> does.
>
As a human, that seems perfectly correct to me. When I see the empty
graph, I do not know that x:dt is an rdfs:Class. When I see :a :p
"foo"^^x:d, I do. Just like I also know :p is an rdf:Property when I
see that triple.
> I believe that your argument falls apart when you look closer at it.
> You are saying, in effect, that if x:dt is a recognized datatype then
> any well-typed literal with it as the datatype belongs to it, and the
> appearance of an ill-typed literal causes a contradiction, and thus
> entails any graph, including the graph that states that the ill-typed
> literal belongs to the x:dt, so why not make this hold even if x:dt is
> not a recognized datatype. However, when x:dt is *not* a recognized
> datatype this reasoning doesn't hold water, so there is no reason to
> modify the semantics to make it valid.
>
I don't think that's actually Pat's argument. I understood the
argument to be that this change makes the formal semantics more closely
match human intuition. Not to be provocative, but I though that was
the goal of formal semantics -- to match human intuition as much as
possible while still being completely precise and being fairly simple
and comprehensible.
> You might just as well argue that if x:dt is a recognized datatype
> then it is a subclass of rdfs:Literal therefore anything should be a
> subclass of rdfs:Literal.
>
Perhaps this is relevant to the argument you think/thought Pat was
making; I don't see its relevance.
-- Sandro
> peter
>
> On 09/12/2013 10:25 PM, Pat Hayes wrote:
>> 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?
>>
>> 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
>>
>>
>>
>>
>>
>>
>
>
>
Received on Friday, 13 September 2013 12:58:02 UTC