- From: Andy Seaborne <andy@apache.org>
- Date: Tue, 12 Dec 2023 20:59:12 +0000
- To: RDF-star Working Group <public-rdf-star-wg@w3.org>
Here is an attempt to write out the details of what I think has been
said recently.
It is addressing "publishing information about multi-edges".
(Ideas here are from WG members - the mistakes are mime.)
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.
## Turtle
Add to Turtle a new statement (grammar rule 2):
<< 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 []).
It is better to have the name first to allow for split lines and
modified annotation syntax below.
## N-Triples
In N-Triples, reflecting the RDF abstract data model, there is a
property to relate occurrence to a triple term.
:occurrenceName rdf:occurrenceOf << :s :p :o >> .
There are triples terms in the data model
(RDF-Concepts - section 3.1 : editors draft [2]).
Renaming "quoted triple" as "triple term" would be better because it has
less implication of the usage.
The NT syntax would be available in Turtle in the same way that
rdf:first is available in Turtle - and with the same expectation that it
would rarely be used.
## RDF Graph Merge
Graph merge happens as before - blank nodes need to be kept apart.
## Annotation
This gives the modified annotation syntax as per Thomas's email [1]:
> :liz :spouse :dick { id:1 | :start 1964; :end 1974 |} .
> :liz :spouse :dick { id:2 | :start 1975; :end 1976 |} .
Slight syntax tweak: For SPARQL, reusing { has to be careful because {
is a group start.
:liz :spouse :dick {| id:1 | :start 1964; :end 1974 |} .
:liz :spouse :dick {| id:2 | :start 1975; :end 1976 |} .
> which would map to
>
> id:1 rdfx:occurrenceOf << :liz :spouse :dick >> ;
> :start 1964; :end 1974 .
>
> id:2 rdfx:occurrenceOf << :liz :spouse :dick >> ;
> :start 1975; :end 1976 .
and asserting:
:liz :spouse :dick .
## Named occurrences in term slots
<< occurrenceName | :s :p :o >> could also be used in a subject or
object slot with the occurenceName being the RDF term for subject or
object (c.f. RDF collections and predicate object lists) for use with
unasserted triples:
<< [] | :s :p :o >>
:start 1964 ;
:end 1974 .
Andy
[1]
https://lists.w3.org/Archives/Public/public-rdf-star-wg/2023Dec/0024.html
[2] https://w3c.github.io/rdf-concepts/spec/#section-triples
(as of 2023-12-10)
Received on Tuesday, 12 December 2023 20:59:19 UTC