W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > March 2005

Re: flexible SPARQL reification construct instead of hard-wired SOURCE keyword

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Fri, 11 Mar 2005 11:42:58 +0000
Message-ID: <42318442.9080503@hp.com>
To: Benjamin Nowack <bnowack@appmosphere.com>
Cc: public-rdf-dawg-comments@w3.org

Benjamin Nowack wrote:
> 
> hi again,
> 
> an adjusted version of my comment from yesterday[1] as
> just some extended food for thought. The idea is to
> introduce a reification shortcut that could be used for
> the SOURCE use cases and also for any other custom rdf
> store extension:
> 
> [[[
> ...
> SELECT ?s  ?p  ?o
> WHERE ( ?s rdf:type foaf:Person )
>       ( ?s ex:ppd ?ppd )
>       ( ?ppd rdf:type foaf:PersonalProfileDocument )
>       ( ?ppd foaf:primaryTopic ?s )
> REIF  (?s ex:ppd ?ppd) sparql:source <http://trustMe.com/ppdDump>
>       (?s ?p ?o) sparql:source ?ppd
>       (?s ?p ?o) ex:addedDate "2004-01-13"
> ]]]
> 
> The reification constraint pattern 
>  ([s] [p] [o]) [prop] [value]
> would mean that there had to be an rdf:Statement with [s],[p],[o]
> as rdf:subject,rdf:predicate,rdf:object, and that there's also
> a matching ([statement] [prop] [value]) triple. store developers
> could freely decide how to implement this extended functionality
> (explicit reification or with quads etc.) but the query syntax
> could be generic. and using URIrefs for the [prop]s instead of
> a single built-in SOURCE keyword for n-tuple stores would
> keep SPARQL extensible. 
> 
> 
> regards and apologies for the (probably too) late comments,
> benjamin
> 
> [1]
> http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2005Jan/0002.html
> 
> --
> Benjamin Nowack
> 
> appmosphere web applications
> Kruppstr. 100
> 45145 Essen, Germany
> 
> http://www.appmosphere.com/
> 
> 

Benjamin,
(and other people who have mentioned reification syntax support on and off list)

The latest set of chnages to the SPARQL syntax include syntax to express 
reification triples more succinctly.  This is different from GRAPH (was SOURCE).

The syntax element is << ?s ?p ?o >> for predicate/objects:

     rdf:subject  ?s
     rdf:predicate ?p
     rdf:object   ?o

(c.f. the N3/Turtle syntax support for RDF collections  "(1 2 3)" and bNodes 
with predicate lists "[ :p :q ]").

It can appear as a compact form of 3 triples:

   ?id << ?s ?p ?o >> .

which is the same as writing:

   ?id   rdf:subject    ?s .
   ?id   rdf:predicate  ?p .
   ?id   rdf:object     ?o .

Like RDF collections and compact bNode predicates lists, it can also be the 
subject or object of a triple:

   << ?s ex:ppd ?ppd >> sparql:source <http://trustMe.com/ppdDump> .

is

   _:a   rdf:subject    ?s .
   _:a   rdf:predicate  ?p .
   _:a   rdf:object     ?o .
   _:a   sparql:source  <http://trustMe.com/ppdDump> .

for some freshly minted bNode _:a which, in a query pattern will be a variable 
which can't be SELECTed.

Full details will be in the SPARQL editors' draft sometime, hopefully soon.

	Andy
Received on Friday, 11 March 2005 11:43:08 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:14:48 GMT