RDF* and grouping relation properties

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 .


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 Thursday, 18 June 2020 15:44:53 UTC