Consolidating triple/edges -- named occurrence version

This is an update of the consolidated triple/edges proposal. In this 
revision the RDF abstract data model has "NAMED occurrences" as an RDF 
term. A NAMED occurrences is a pair of (name, triple)

Multiple edges with the same label are handled as multiple occurrences - 
the predicate URI of the RDF triple is thought as a conceptual 
relationship - with multiple sets of annotations.

This preserves the uniqueness of triples in a graph, and allows 
independent collections of assertions about a relationship. Such 
collections of assertions do not get entangled on merge.

There are named occurrences in the data model
(RDF-Concepts - section 3.1 : editors draft [1]).

[1] https://w3c.github.io/rdf-concepts/spec/#section-triples
     (as of 2023-12-10)


## Semantics

https://github.com/w3c/rdf-star-wg/wiki/Semantics:-Andy's-proposal


## Turtle

A named occurrence is written in Turtle as

    << occurrenceName | :s :p :o >>

This names an occurrence of the triple s p o.

The triple is not asserted, keeping "assertion" and "occurrence" as 
orthogonal concepts even if they might commonly be used together.

occurrenceName is a URI or blank node, including [] (the ANON terminal 
rule 47 in Turtle - no triples inside the []).

The occurrence name can be repeated with it being the same named 
occurrence term:

It can be used with a predicateObjectList (rule [14] in RDF 1.1 Turtle)

    << _:a | :s :p :o >>
       :starts 1999 ;
       :finishes 2000 .

or repeated (it's the same RDF term)

    << _:a | :s :p :o >> :starts 1999 .
    << _:a | :s :p :o >> :finishes 2000 .


The name can be omitted - a blank node is generated by the parser.

    << :s :p :o >> :q 123 .

   << :s :p :o >>
      :starts 1983 ;
      :finishes 1985 .


## N-Triples

In N-Triples, reflecting the RDF abstract data model, there is a new 
syntax form for a named occurrence term:

    << _:a | :s :p :o >> :q 123 .

In N-triples, the name is required. There are no shorthand forms.


## RDF Graph Merge

Graph merge happens as before - blank nodes need to be kept apart.


## Annotation

Annotation syntax is Turtle/TriG syntax that both asserts a triple, and 
uses an occurrence of that triple.

:liz :spouse :dick {| id:1 | :start 1964; :end 1974 |} .
:liz :spouse :dick {| id:2 | :start 1975; :end 1976 |} .

which would generate to 6 triples and there are 5 unique triples - the 
RDF graph does not have a duplicate asserted triple.

    :liz :spouse :dick .
     << id:1 | :liz :spouse :dick >> ;
          :start 1964;
          :end 1974 .
     << id:2 | :liz :spouse :dick >> ;
          :start 1975;
          :end 1976 .



     Andy

Received on Monday, 1 January 2024 16:33:06 UTC