W3C home > Mailing lists > Public > public-rdf-star@w3.org > June 2020

Re: RDF* and grouping relation properties

From: thomas lörtsch <tl@rat.io>
Date: Sun, 21 Jun 2020 12:14:31 +0200
Cc: public-rdf-star@w3.org
Message-Id: <FF79A9A7-0908-41C7-8144-B9E93E31ADC2@rat.io>
To: Tim Finin <finin@umbc.edu>

> On 18. Jun 2020, at 17:44, Tim Finin <finin@umbc.edu> wrote:
> While experimenting with RDF* I realized one issue: for some relations, we may have several properties that should be treated as a group.  For example, the provenance of a relation extracted from the text of a web page might include a link to the page and the date retrieved.
> Using the following two RDF* expressions merges the four properties so that we can no longer determine which :source and :retrieved values go together.
> << :man :hasSpouse :woman >>
>     :source <http://foo.com/>;
>     :retrieved "2020-06-17"^^xsd:date .
> << :man :hasSpouse :woman >>
>     :source <http://bar.com/>;
>     :retrieved "2020-01-01"^^xsd:date .
> Using a traditional RDF reification approach maintains the pairing.
> :man2 :hasSpouse :woman2 .
> [ ]  a rdf:Statement ;
>      rdf:subject :man2 ;
>      rdf:predicate :hasSpouse ;
>      rdf:object :woman2 ;
>     :source <http://foo.com/> ;
>     :retrieved "2020-06-17"^^xsd:date .
> [ ] a rdf:Statement ;
>     rdf:subject :man2 ;
>     rdf:predicate :hasSpouse ;
>     rdf:object :woman2 ;
>    :source <http://bar.com/>;
>    :retrieved "2020-01-01"^^xsd:date .

In my understanding of the RDF Standard Reification semantics your two blank nodes are owl:sameAs as the reification quad refers to the abstract triple type, not any concrete token. That contradicts the intuition of the provenance statements (:source and :retrieved) but that’s just how things are right now in RDF. There is no sound meta modelling in RDF.

It would of course be possible to define subclasses of rdf:Statement, like rdf:TripleType and rdf:TripleToken, define a context (e.g. a Named Graph) in which a triple becomes an actual token, and then reify such tokens. Only then the above provenance statements would have sound semantics.

To the best of my knowledge RDF* binds its reification semantics back to RDF Standard Reification. The RDF* <<…>> construct is syntactic sugar for the RDF Standard Reification quadlet - nothing more, nothing less [0]. So merging those provenance statements is indeed the right thing to do. One might even argue that RDF* has a slight advantage over RDF Standard Reification as it represents the semantics more faithfully. However not what anybody would expect from the solution to reification in RDF.


[0] Well, not exactly, as there are those modes too - SA and PG - which may implicitly add the cited triple to the graph or not. That’s a proposal and I’m not sure if implementations support mode switching or which mode(s) they support. 

> A possible solution when using RDF* is to encapsulate associated properties as a blank node entity, as in the following
> :man3 :hasSpouse :woman3 .
> << :man3 :hasSpouse :woman3 >>
>     :provenance [ :source <http://foo.com/>;
>                            :retrieved "2020-06-17"^^xsd:date ] .
> << :man3 :hasSpouse :woman3 >>
>     :provenance [ :source <http://bar.com/>;
>                            :retrieved "2020-01-01"^^xsd:date ] .
> However, this approach seems to violate the normal key/value pattern of property graph properties, which could be a compatibility issue.

> --
> Tim Finin,  Willard and Lillian Hackerman Chair in Engineering,  Computer Science and
> Electrical Engineering, U. Maryland, Baltimore County, 1000 Hilltop Circle, Baltimore MD
> 21250. http://umbc.edu/~finin, finin@umbc.edu, tfinin@gmail.com, mobile:410-499-3522
Received on Sunday, 21 June 2020 10:14:50 UTC

This archive was generated by hypermail 2.4.0 : Sunday, 21 June 2020 10:14:51 UTC