Re: a modest proposal - eliminate reifiers completely

On 12/04/2024 20:40, Kurt Cagle wrote:
...
> I was at an IA conference yesterday, and the question of reification was 
> raised in several different contexts. I think it's important to remember 
> that reification is significant primarily because it is accommodating 
> (syntactically) parity with a neo4j construct.
> 
> That is to say:
> 
> :s :p :o .
> :s  a  rdf:type .
> << :s :p :o >> :p1 :o1; :p2 :o2 .

:s :p :o .
:s  a  rdf:type .
# syntax expansion.
_:b rdf:reifies <<( :s :p :o )>> .
_:b :p1 :o1.
_:b :p2 :o2 .

> 
> is the equivalent of a neo4j assertion with two properties on its "edge".
> 
> 
> What I see here is that we're also attempting to create an assignment 
> statement with reifiers in Turtle:
> 
> <<(:r | :s :p :o )>>

Is that proposal to have named triples?

Or was that the syntax

    << :r | :s :p :o >>

?


A second << :r1 | :s :p :o >> "assigns" :r1 as a different name for tjhe 
occurrence.

In words, an occurrence (usage) named :r, and one name :r1, of the 
triple :s :p :o (there is at most one triple :s :p :o ).

An edge is more like an occurrence - a usage of a triple. Multiple edges 
are multiple occurrences each of which can have different annotations.

(The triple occurrence / triple type language has slipped a bit.)

> when this is an operation that is normally done in SPARQL:
> 
> bind (<<:s :p :o>> as ?r)

That could be:

     bind (<<( :s :p :o )>> as ?tripleTerm)

Binding the triple term -- all <<( :s :p :o )>> are the same RDF term.
 From a triple term, you can get the subject.

    SUBJECT(?tripleTerm) --> :s

For the forms

    bind (<< :s :p :o >> as ?r)
    bind (<< :e | :s :p :o >> as ?r)

<<:s :p :o>> isn't an RDF term. This BIND form would have a side effect 
of making a blank node or URI :e and assigning it to ?r.

But there is no way to get back from ?r to the parts of ":s :p :o" -- 
SUBJECT(?r) doesn't work (unless we have "special" bnodes and URIs!).

Having it as a triple

     _:b rdf:reifies <<( :s :p :o )>> .

means a SPARQL query can find the subject:

    ?X rdf:reifies ?T .
    bind (SUBJECT(?T) as ?subj)

         Andy

Received on Sunday, 14 April 2024 20:34:50 UTC