W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > May 2007

Re: comments on SPARQL Query Language for RDF

From: Jeen Broekstra <jeen.broekstra@aduna-software.com>
Date: Thu, 31 May 2007 09:50:06 +0200
Message-ID: <465E7E2E.8060006@aduna-software.com>
To: Pat Hayes <phayes@ihmc.us>
CC: Bob MacGregor <bmacgregor@siderean.com>, public-rdf-dawg-comments@w3.org, Eric Prud'hommeaux <eric@w3.org>, Richard Newman <rnewman@franz.com>

Pat Hayes wrote:
> 
>> Hi Pat,
>>
>> On May 29, 2007, at 1954, Pat Hayes wrote:
>>
>>> <snip>
>>>
>>
>>> However, I am at a loss to understand how you refer to these 150,000
>>> graphs if you have no way to name them. How do you even know how many
>>> you have? 
>>>
>>
>> Each of the graphs consists of triples extracted from a different
>> document.  The document might be identified by a file name, or a
>> message ID,
>> a documentum identifier, or whatever.  The quads for that document
>> share a common context argument; a blank node.  The same
>> blank node appears in subject position to record provenance assertions
>> about the graph (which document, which extractor used,
>> time of extraction, etc).
> 
> That works as long as everything is inside the intended scope of the
> blank node identifier, which is usually a document. BUt a query is not
> usually inside the same scope as the graph(s) being queried, so to use
> the blank node as an identifier in the query is (usually) impossible.

Allow me to jump in at this point with my personal POV.

I think you overlook the fact that you can address blank nodes
'existentially' from a query, e.g. "give me the triples from the graph
identified with the source property ex:foo and value ex:bar" :

 SELECT ?x ?y ?z
 WHERE {
    ?g ex:foo ex:bar.
    GRAPH ?g { ?x ?y ?z .}
    }

Surely in this kind of pattern ?g could well be allowed to be bound to a
blank node. However, this is currently not possible in SPARQL because it
explicitly requires that a graph name is a URI.

FWIW we have implementation experience with allowing blank nodes here,
because that is exactly what Sesame does; we call the mechanism
'context' rather than 'named graph', by the way since the notion of
'naming' indeed tends to suggest that it is an actual *name*.

I don't think it's a matter of scope, because the scope of the blank
node is still the original dataset, it is not directly addressed from
the query.


Cheers,

Jeen
-- 
Aduna - Guided Exploration
www.aduna-software.com

Prinses Julianaplein 14-b
3817 CS Amersfoort
The Netherlands
+31-33-4659987 (office)
Received on Thursday, 31 May 2007 07:52:22 GMT

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