Re: RDF* vs RDF vs named graphs

On 12/19/20 10:59 AM, Olaf Hartig wrote:
> Hi Thomas,
> 
> rdf:value is not useful here. It's intended use is for "describing structured
> values" [1] as in the following example (adapted from [1]):
> 
> :product35 :weight [
>                             rdf:value 2.4 ;
>                             :unit :kilograms ] .
> 
> Notice that the :weight triple in this example has a blank node in its object
> position. So, we may use a blank node label, say _:x, and rewrite the example
> to the following snippet of Turtle, which is semantically equivalent with the
> one above.
> 
> :product35  :weight  _:x .
> _:x  rdf:value  2.4 .
> _:x  :unit  :kilograms .
> 
> Now it should become clear that :unit is a property of the object of the
> :weight triple rather than being a property/annotation of the :weight triple.

I don't think that is a meaningful criticism of the rdf:value approach. 
Obviously at the physical triple level, :unit is a property of blank 
node _:x .  But logically :unit is a constituent part of the :weight 
object.  That is the whole point of encoding n-ary relationships in a 
physical model that only offers binary relationships.  Any such encoding 
will introduce extra nodes that are intended to be ignored at the 
logical level.

The W3C "Defining N-ary Relations on the Semantic Web" document includes 
an example almost exactly like the one above, to show how this is one of 
the common ways that n-ary relations are *logically* achieved using 
RDF's binary relationships:
https://www.w3.org/TR/swbp-n-aryRelations/

That document also shows how n-ary relationship encoding is commonly 
used to achieve the *logical* effect of using a property to annotate an 
assertion, which is essentially what labeled property graphs and 
RDF-star provide.  The only thing currently missing in the RDF stack is 
tool support for recognizing and manipulating those *logical* n-ary 
relations as n-ary relations:
https://github.com/w3c/EasierRDF/issues/20

The key to enabling that tool support is to have a standard way to 
recognize those n-ary relations.  That could be easily done either at 
the instance level, the property level, or the class level.  It only 
requires that the community agree on a standard URI for tagging n-ary 
relationships, and one or more conventions for doing so.

Both the standardized n-ary relations approach and the RDF-star approach 
require tool support to achieve similar user convenience.  But since the 
n-ary relations approach is more general and seems less disruptive than 
RDF-star, it would be nice to see solid evidence that the RDF-star 
approach is superior in some important way, to justify those relative 
shortcomings.

Thanks,
David Booth

> 
> Best,
> Olaf
> 
> 
> [1] https://www.w3.org/TR/rdf-schema/#ch_value
> 
> 
> On fredag 18 december 2020 kl. 22:07:13 CET thomas lörtsch wrote:
>>> On 18. Dec 2020, at 15:45, Pierre-Antoine Champin
>>> <pierre-antoine.champin@ercim.eu> wrote:
>>>
>>> Thomas,
>>>
>>> I apologize if I sounded disrespectful and patronizing. That was not at
>>> all my intention.
>> Apologies accepted, of course, but it was not an apology I was after but a
>> discussion. However it seems that a better place to continue this
>> discussion might be your PR (https://github.com/w3c/rdf-star/pull/69) and
>> I’ll wait until you have incorporated your insights from today’s call.
>>
>> OTOH maybe this ship has sailed and it’s just me who’s not getting it. At
>> least your PR already seems to  provide a pretty good intuition of what one
>> gets from RDF* and what not. That’s not too bad either (although of course,
>> still, a missed opportunity, a deplorable lack of ambition, a shame! ;-)
>>
>> However, PR aside, I wonder if you have any thoughts about the rdf:value
>> idea. When RDF* seemed to be about occurrences the reification approach
>> made sense. Now that it clearly is about unique types why not drop all the
>> complexity that comes with triples as node types, unasserted assertions etc
>> and settle for a simple shortcut to the only mildly involved compositional
>> construct that rdf:value represents? It would cover the Property Graph
>> usecase pretty well and would stay very true to the simple, compositional
>> core and flat world default semantics of RDF.
>>> As for the position I was trying to defend, I don't consider it as "my
>>> semantics". I sincerely believe that this position is shared by a number
>>> of people on the list -- as I am sure you do about the position you are
>>> defending.
>> That was a shortcut expression and my apologies if that was offending.
>>
>> Thomas
>>
>>>    best
>>>
>>> On 18/12/2020 12:16, thomas lörtsch wrote:
>>>> Pierre-Antoine,
>>>>
>>>>
>>>> you’re completely missing the point.
>>>>
>>>>> On 17. Dec 2020, at 14:54, Pierre-Antoine Champin
>>>>> <pierre-antoine.champin@ercim.eu> wrote:
>>>>>
>>>>> Peter,
>>>>
>>>>> in issue #64 (https://github.com/w3c/rdf-star/issues/64) you wrote:
>>>>  From this sentence
>>>>
>>>>>> central examples have fatal flaws if embedded triples are unique
>>>>
>>>> you only take the first half and then go one to show how the
>>>> "regrettable", "unfortunate" examples can be saved to fit your
>>>> semantics. You introduce new blank nodes and indirections as if the
>>>> authors didn’t know what they are doing and had to be tought basic RDF
>>>> modelling skills. You even replace well-established properties by
>>>> something you invented ad-hoc with a condiserably different meaning. All
>>>> the examples rather obviously understand embedded triples as occurrences
>>>> but you consequently treat them as wrongly modelling unique triples.
>>>>
>>>> Notwithstanding the lack of respect and the patronizing attitude, what
>>>> you actually show is that the semantics you propose don’t cover those
>>>> usecase. Which is the point that has repeatedly been made. Calling that
>>>> a possible misuse of RDF* is, well, an interesting perspective. My fear
>>>> is that the world will not bend to your semantics and that the ensuing
>>>> muddle will not profit anybody.
>>>>
>>>> This is not to say that there is no case for unique triples: there is and
>>>> not long ago I was overly focused on the annotation usecase that
>>>> understands them as occurrences. But both usecases are vaild, widely
>>>> used and advertized as to be solved by RDF*. Property graphs can do both
>>>> without saying as they have no semantics, but in RDF they have to be
>>>> catered for.
>>>>
>>>> And one last thing: if you insist on only covering the unique triples
>>>> reading then you should drop everything reification related. Drop SA
>>>> mode and drop the new node type because what you are really doing is
>>>> defining semantic sugar for n-ary relations, and those are covered by
>>>> rdf:value.>>
>>>> :a :b :c {| :d :e |}
>>>>
>>>> is then syntactic sugar for
>>>>
>>>> :a :b [
>>>> :
>>>>    rdf:value :c ;
>>>>    
>>>>    :d :e
>>>>
>>>> ]
>>>>
>>>> That has a clear unique triple semantics, true to the flat world ideal of
>>>> RDF. It would spare us a whole lot of trouble and avoid any confusion.
>>>> It would not cover the annotation usecase and anything that requires a
>>>> bit more complexity than the simplistic base of RDF but since you’re not
>>>> planning to actually support that anyways, why not at least be honest
>>>> about it!
>>>>
>>>> Of course it would be a wasted opportunity but since you and Olaf seem to
>>>> be so heavily inclined…
>>>>
>>>>
>>>> Thomas
>>>>
>>>>> As you previously made a list of such flawed examples (thanks for that),
>>>>> I'll try to explain why I think that these examples are, though
>>>>> imperfect, not fataly flawed.>>>
>>>>> On 03/12/2020 00:47, Peter F. Patel-Schneider wrote:
>>>>>> I certainly agree with Thomas that examples used throughout the RDF*
>>>>>> documents and discussions are ill-supported by the various formal
>>>>>> definitions underlying RDF*.
>>>>>>
>>>>>> We see
>>>>>>
>>>>>> :bob foaf:name "Bob" .
>>>>>>
>>>>>> <<:bob foaf:age 23>>
>>>>>>
>>>>>>    dct:creator
>>>>>>
>>>>>> <http://example.com/crawlers#c1>
>>>>>>
>>>>>>   ;
>>>>>>   
>>>>>>    dct:source
>>>>>>
>>>>>> <http://example.net/listing.html>
>>>>>>
>>>>>>   .
>>>>>>
>>>>>> in
>>>>>> http://ceur-ws.org/Vol-1912/paper12.pdf
>>>>>
>>>>> Assuming that the <<...>> notation represents unique triples, this
>>>>> examples conveys the following information: 1) bob is 23, 2) the fact
>>>>> that bob is 23 was asserted by #c1, and 3) the fact that bob is 23 was
>>>>> found in listing.html . It is tempting to infer that it was #c1 who
>>>>> found this information in that document, but that's not what the
>>>>> example is saying. This can be regretted, but that does not make the
>>>>> example useless or wrong...
>>>>>
>>>>> It is not fatally flawed, because IF someone wanted to convey richer
>>>>> information such that "#c1 found this triple in that document", this
>>>>> would be possible by introducing an additional node, representing the
>>>>> occurrence of the triple in the document.
>>>>>
>>>>> That being said, I agree that the example is imperfect because:
>>>>>
>>>>> * it can easily to the over-interpretation I mentioned above, and
>>>>>
>>>>> * the choice of the dct:creator predicate is arguable (nobody "creates"
>>>>> a triple, it is an abstract mathematical construct that "exists",
>>>>> regardless of who asserts it or not).>>>
>>>>>> <<:painting :height 32.1>>
>>>>>>
>>>>>>    :unit :cm;
>>>>>>    :measurementTechnique :laserScanning;
>>>>>>    :measuredOn "2020-02-11"^^xsd:date.
>>>>>
>>>>> Granted, this example is very misleading (or mislead).
> ":measurementTechique" can hardly be argued to be a property of the triple
> (more of the measurement that lead to assert this triple). This should have
> looked more like:
>>>>>    <<:painting :height 32.1>>
>>>>>    
>>>>>      :unit :cm;
>>>>>      :measurement [
>>>>>      :
>>>>>          :technique :laserScanning;
>>>>>          :when "2020-02-11"^^xsd:date
>>>>>      
>>>>>      ].
>>>>>
>>>>> This revised example shows, I believe, that <<...>> denoting unique
>>>>> triple is not an obstacle to solving this use case.>>>
>>>>>> <<:man :hasSpouse :woman>>
>>>>>>
>>>>>>    :source :TheNationalEnquirer;
>>>>>>    :webpage
>>>>>>
>>>>>> <http://nationalenquirer.com/news/2020-02-12>
>>>>>> ;
>>>>>>
>>>>>>    :retrieved "2020-02-13"^^xsd:dateTime.
>>>>>>
>>>>>> in
>>>>>> https://graphdb.ontotext.com/documentation/9.2/free/devhub/rdf-sparql-s
>>>>>> tar.html>>>
>>>>> Again, this example is very misleading, because clearly the intention is
>>>>> to convey the information that "this triple was retrieved from the
>>>>> given page on a given date" (and not "... from the given page, but also
>>>>> on a given date"). If we were to represent two distinct retrieval, we
>>>>> would lose the link between source and date.>>>
>>>>> However, I still believe it is possible to convey this information using
> *unique triples*, either with an intermediate node representing the retrieval:
>>>>>    <<:man :hasSpouse :woman>> :occurence [
>>>>>    
>>>>>      :source :TheNationalEnquirer;
>>>>>      :webpage
>>>>>
>>>>> <http://nationalenquirer.com/news/2020-02-12>
>>>>> ;
>>>>>
>>>>>      :retrieved "2020-02-13"^^xsd:dateTime
>>>>>    
>>>>>    ].
>>>>>
>>>>> or possibly with deeply nested triples
>>>>>
>>>>>    <<:man :hasSpouse :woman>>
>>>>>    
>>>>>      :retrievedFrom
>>>>>
>>>>> <http://nationalenquirer.com/news/2020-02-12>
>>>>>
>>>>>      {| :on "2020-02-13"^^xsd:dateTime |}.
>>>>>
>>>>> <http://nationalenquirer.com/news/2020-02-12>
>>>>>
>>>>>   dct:creator :TheNationalEnquirer;
>>>>>   
>>>>>> <<:Bess_Schrader :employedBy :Enterprise_Knowledge . >> :dateAdded
>>>>>> "2020-05-22" . <<:Bess_Schrader :employedBy :Enterprise_Knowledge . >>
>>>>>> :addedBy :user_bscrader .
>>>>>>
>>>>>> in
>>>>>> https://enterprise-knowledge.com/rdf-what-is-it-and-why-do-i-need-it/
>>>>>
>>>>> This example is interesting because in the code, the author used two
>>>>> different occurences of the <<...>> notation, but in the accompanying
>>>>> figure, a single :employedBy arc is annotated by the two properties
>>>>> :dateAdded and :addedBy.
>>>>>
>>>>> I think it demonstrate that the author (and, I would venture to
>>>>> extrapolate, many people starting with RDF*) did not really think about
>>>>> the type/token distinction, or the subtle problems that may arise when
>>>>> they are mixed up. I think the problem is more that one, rather than
>>>>> "everyone assumes that embedded triples represent occurrences".>>>
>>>>>> <<?c a rdfs:Class>> dct:source ?src ;
>>>>>>
>>>>>>      prov:wasDerivedFrom <<?c a owl:Class>> .
>>>>>
>>>>> For me, this example is really similar to the first one: it states "T1
>>>>> appears in src, and T1 can be derived from T2". Both assertions are
>>>>> true independantly of each other, and can be considered true of the
>>>>> triples themselves, rather than occurrences thereof.
>>>>>
>>>>> As in the very first example, the chosen predicate (here,
>>>>> prov:wasDerivedFrom) is not the best choice (PROV is about artifacts,
>>>>> not abstrac things like triples), and I propose to change it for a more
>>>>> neutral triple (:canBeDerivedFrom).>>>
>>>>>> :loisLane :believes << :superman :can :fly >>.
>>>>>
>>>>> I don't see the problem here. Of course, one could argue that [my belief
>>>>> that superman can fly] and [lois' belief that superman can fly] are
>>>>> different things, but I could just as well argue that Lois and I
>>>>> believe *the same thing*. Maybe if the predicate was named
>>>>> :believesThat would it be clearer that this example uses the second
>>>>> option?>>>
>>>>>> in
>>>>>> https://w3c.github.io/rdf-star/rdf-star-cg-spec.html
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> What should be concluded from this?  Just about the most charitable
>>>>>> conclusion is that RDF* is unsuitable for its claimed use.
>>>>>
>>>>> I don't think that is very charitable ;-), nor really fair. At least
>>>>> that's what I tried to show above.
>>>>>
>>>>> What I conclude, though, is that RDF* is easily misued, and that the CG
>>>>> report should include material to help people avoid these caveats. I'll
>>>>> make a PR to that effect.>>>
>>>>>    best
>>>>>>
>>>>>> So what is RDF* good for?  I am concerned about this.
>>>>>>
>>>>>>
>>>>>> peter
> 
> 
> 

Received on Saturday, 19 December 2020 19:47:05 UTC