W3C home > Mailing lists > Public > public-rdf-star@w3.org > February 2021

Re: RDF* semantics, particularly malformed literals in embedded triples

From: Pierre-Antoine Champin <pierre-antoine.champin@ercim.eu>
Date: Sun, 7 Feb 2021 11:11:46 +0100
To: phayes@ihmc.us
Cc: public-rdf-star@w3.org
Message-ID: <20777d12-8766-a1df-86f8-f907997b56a1@ercim.eu>

On 05/02/2021 23:27, phayes@ihmc.us wrote:
>> On Feb 5, 2021, at 5:17 AM, Pierre-Antoine Champin 
>> <pierre-antoine.champin@ercim.eu 
>> <mailto:pierre-antoine.champin@ercim.eu>> wrote:
>> Dear Peter and Pat,
>> On 05/02/2021 01:53, phayes@ihmc.us wrote:
>>>> On Feb 4, 2021, at 1:56 PM, Peter F. Patel-Schneider 
>>>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote:
>>>> On 2/4/21 1:00 PM, Pierre-Antoine Champin wrote:
>>>>> On 04/02/2021 00:18, Peter F. Patel-Schneider wrote:
>>>>>> On 2/3/21 4:09 PM, Pierre-Antoine Champin wrote:
>>>>>>> On 28/01/2021 01:59, Peter F. Patel-Schneider wrote:
>>>>>>>> On 1/25/21 4:21 AM, Pierre-Antoine Champin wrote:
>>>>>>>>> [...]
>>>>>>>>> One example of "missed" entailement would be (I think) with the
>>>>>>>>> "malformed-literal-bnode" test
>>>>>>>>> (https://w3c.github.io/rdf-star/tests/semantics/manifest.html#malformed-literal-bnode 
>>>>>>>>> <https://w3c.github.io/rdf-star/tests/semantics/manifest.html#malformed-literal-bnode>).
>>>>>>>>> But granted, that one is a corner-case, that maybe not 
>>>>>>>>> everybody agrees on
>>>>>>>>> anyway.
>>>>>>>> I don't see why this entailment would be missed.
>>>>>>> (this is based on your proposal here:
>>>>>>> https://lists.w3.org/Archives/Public/public-rdf-star/2021Jan/0059.html 
>>>>>>> <https://lists.w3.org/Archives/Public/public-rdf-star/2021Jan/0059.html>)
>>>>>>> * the input of the test has an rdf*:object arc, but no 
>>>>>>> rdf:object arc
>>>>>>> (because o is a malformed litteral)
>>>>>>> * the expected entailed graph as a spurious rdf:object arc, and 
>>>>>>> misses the
>>>>>>> rdf*:object arc (because o is a blank node)
>>>>>> The example you mention is, I beleive,
>>>>>> prefix :<http://example.com/ns# <http://example.com/ns#>>
>>>>>> prefix xsd:<http://www.w3.org/2001/XMLSchema# 
>>>>>> <http://www.w3.org/2001/XMLSchema#>>
>>>>>> << :a :b "c"^^xsd:integer >> :p1 :o1.
>>>>>> when xsd:integer is a recognized datatype MUST entail
>>>>>> prefix :<http://example.com/ns# <http://example.com/ns#>>
>>>>>> << :a :b _:x >> :p1 :o1.
>>>>> Correct
>>>>>> This stays, intuitively, that an embedded triple with a malformed 
>>>>>> literal
>>>>>> entails one with a blank node.
>>>>>> I agree that my proposal does not have this entailment, contrary 
>>>>>> to my
>>>>>> previous impression.  But I view this as a good thing.  Malformed 
>>>>>> literals do
>>>>>> not denote in RDF so there should not be any thing for the blank 
>>>>>> node to
>>>>>> match.  So don't view this as a desireable entailment.
>>>>> I know this one is controversial. :)
>>>>> My position was: in RDF, one can replace any term with a fresh 
>>>>> blank node,
>>>>> and the resulting graph is entailed by the original one. Following the
>>>>> principle of least surprise, the same should hold in RDF*.
>>>> Well, a surprise is that malformed literals in embedded triples do 
>>>> not cause a
>>>> semantic inconsistency like they do elsewhere.
>> Is it?
>> Embedded triples are not asserted,
> Ah, I guess I have not been keeping up with all the changes.
No one can blame you for that! :)
> The last time I checked, embedded triples /were/ asserted.

At some point, yes. Then there was the proposal of having to different 
modes (SA and PG). The current (and hopefully stable) state of the draft is

* using an embedded triples ( << ... >> ) does not assert it (so the SA 
mode is the norm)

* Turtle* provides a way to annotate an asserted triple, i.e. assert it 
and use it embedded in the same expression. This reads like this:

     :me :travelTo :Berlin {| :on :Wednesday |}.

and is syntactic sugar for

     :me :travelTo :Berlin
     << :me :travelTo :Berlin >> :on :Wednesday.

This has been documented in the CG report:


> But now I am confused.
> Certainly examples using 'alice said <<foo>>' push intuitions that 
> way, but other threads are discussing examples like
> <<:me :travelTo :Berin>> :on :Wednesday .
> which surely seems like it should entail
> :me :travelTo :Berlin .

See Thomas' answer: his original example  contained both the asserted 
trile and the annotation.

> and it seems to be about :Berlin, the city, rather than ":Berin" the 
> URI. So are y'all on the same wavelength?

On the question "is the embedded triple asserted or nor", I think we are.

On the question of referential opacity vs. referential transparency, 
there are indeed some discussions.

The point I have been making in favor of referential opacity is that it 
is more flexible. In other words, use-cases that require referential 
transparency can be addressed with referentially-opaque triples, but the 
opposite is not true.

In the "travel to Berlin" example above, of course that the annotation 
(:on :Wednesday) is not about the triple itself, but about the situation 
described by the triple. It seems to me that, as along as we agree that 
this is the semantics of the predicate :on, and we use it consistently, 
this is not a problem.

Similarly, consider a predicate :heightInCm, whose range would be 
xsd:decimal :

     :monalisa :heightInCm "77"^^xsd:decimal.

The height of the Mona Lisa is not a decimal number, but we understand 
the predicate to implictly refer to an intermediate concept (a physical 
length), which in turns is related to the decimal value.

Does this make sense?

> Pat
>> so their truth value should have no impact on the truth value of the 
>> graph. For example, does it surprise you that:
>>   :alice :says << _:x a owl:Nothing >> .
>> is satisfiable ?
>> Is this really different from
>>    :alice :says << :alice :age "notaninteger"^^xsd:integer >>.
>> ?
>>>>    So given that there is a
>>>> surprise already, further surprises are not indicative of further 
>>>> incorrect
>>>> behaviour.
>>>> The argument the other way is that malformed literals do not denote 
>>>> anything,
>>>> so there is nothing for the blank node to denote, so the entailment 
>>>> should not
>>>> follow.
>>> Yes, and that argument is correct. This entailment:
>>> x:a x:b 'notaninteger'^^xsd:integer .
>>> entails
>>> x:a x:b _:thing .
>>> is valid in RDF (recognizing XML schema datatypes) not because it 
>>> preserves truth, but because the antecedent is necessarily false in 
>>> all interpretations. It is a trivial /ex falso quodlibet/ entailment.
>> It is indeed :-) But to be fair, that was not the rationale behind 
>> the incriminated test-case.
>> The current idea is that IRIs and literals in embedded triples are 
>> not referentially transparent, so that we can "talk about" any 
>> triple, even inconsistent ones (see my examples above). So the 
>> premise of the test-case would /not/ be inconsistent, and the 
>> expected result would be entailed, but not by /ex falso quodlibet/.
>>   best
>>> To emphasize the point, this is also a valid entailment, for exactly 
>>> the same reason:
>>> x:a x:b 'notaninteger'^^xsd:integer .
>>> entails
>>> https://dbpedia.org/resource/Pat_Hayes 
>>> <https://dbpedia.org/resource/Pat_Hayes> owl:sameAs 
>>> https://dbpedia.org/resource/Pablo_Picasso 
>>> <https://dbpedia.org/resource/Pablo_Picasso> .
>>> Pat Hayes

Received on Sunday, 7 February 2021 10:11:53 UTC

This archive was generated by hypermail 2.4.0 : Sunday, 7 February 2021 10:11:54 UTC