Re: A proposal for basing quotation and annotation upon blank graphs

I see using blank nodes as one possible implementation approach. The 
core idea is graph terms (types) and occurrences (tokens, uses of).

I think we should focus on the whole model with draph terms in the RDF 
abstract data model; then see how we get there. Just looking at an 
incremental steps may leave RDF with the blocking legacy for "RDF 1.3".

We can put quoted triples to one side for now and come back to them when 
the big picture is more settled.


Proposal: Syntactic support for graph terms.

We need syntactic support for graph terms. Graph terms will be larger 
than our one line examples to date - 10s of triples and up. Visually 
seeing that two graphs are the same graph will be error prone.

   _:a1 rdf:occurenceOf  { :s :p :o }
   _:a1 rdf:type ....
   _:a2 rdf:occurenceOf  { :s :p :o }
   _:a2 rdf:type ....

And we need N-quads support.

Suggestion: Have syntax to define a syntax element:

   USING %{label} FOR { :s :p :o1, :o2 }
   _:a1 rdf:occurenceOf %{label}
   _:a1 rdf:type ....
   _:a2 rdf:occurenceOf %{label}
   _:a2 rdf:type ....

with

   _:a3 rdf:occurenceOf  { :s :p :o }

is a shorthand for an implicitly generated %{....}. c.f. blank nodes.

"label" is scoped to the document.

There are many ways to have define-use syntax.  The form above keeps 
these aspects separate and the general style will naturally follow for 
other syntaxes we need to update.

Unlike current TriG, a label is defined to stand for the graph, not a 
part of a graph.

Now we can use URIs for tokens and that makes the occurrence and the 
type accessible over the web.
https://lists.w3.org/Archives/Public/public-rdf-star-wg/2023Oct/0009.html

It is syntax. It is not in the RDF abstract data model. Graph terms are 
in the RDF abstract data model.

This might be N-Quads (prefixed names for email only!). No USING needed.

   # 4th slot. Grouping.
   :s :p :o1 %{g} .
   :s :p :o2 %{g} .
   # Use in object slot
   _:a1 rdf:occurrenceOf %{g} .
   # Use in subject slot
   %{g} :property "abc" .

%{} is not a graph name.

    :s :p :o1 %{g} .

co-ops the use of the 4th slot but does not imply it is a graph name.
Nothing appears in GRAPH ?g {} .

The form "%{ }" has many choices - {} is to suggest "graphs".

JSON-LD use of blank node named graph is not affected.
Blank nodes could be used for a RDF 1.1 like implementation.

rdf:occurrenceOf was used above because as Pierre-Antoine noted (SemTF) 
there are different kinds of "occurrence". Syntax that omits the name 
for the relationship is hiding this and it is something we have to explore.

It may even become a keyword if there is one property but we aren't 
there yet.

     Andy

Received on Thursday, 12 October 2023 12:01:04 UTC