- From: Jeen Broekstra <jeen.broekstra@aduna-software.com>
- Date: Thu, 31 May 2007 09:50:06 +0200
- 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 UTC