- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Fri, 15 Jun 2007 17:20:01 +0100
- To: Olivier Corby <Olivier.Corby@sophia.inria.fr>
- CC: public-rdf-dawg@w3.org
Olivier Corby wrote: > I have found a strange side effect of the rdf merge for building the > default graph as shown in the example below: > > select ?person ?topic ?src > from uri1 > from uri2 > from named uri1 > from named uri2 > where { > ?person c:recommends ?doc > graph ?src { ?doc c:subject ?topic } > } > > If the value of ?doc is an uri, it may succeed, but if it is a blank > node, it always fails because the rdf merge that produces the default > graph has relabeled the blank nodes. > > So depending whether the values of ?doc are uri or blanknodes in the > target graphs, the query succeeds or fails. From a *user point of view* > this is incomprehensible. > > Olivier > Olivier, It's not the RDF merge of uri1 and uri2 that is the issue here - even if there were only one FROM then the query need not necessarily match a blank node ?doc across graphs. Just reading a graph from the same uri twice should allocate different blank nodes. For example: copy the document at uri1 to uri3 Read uri3 The blank nodes should be all different from reading uri1. When reading some document, any blank node labels in the document at uri1 is scoped to the document only. Implicit blank nodes should get new blank nodes created on each parsing. Assuming anything outside that isn't blessed by RDF. So FROM uri1 FROM NAMED uri1 can give different blank nodes if the document is read twice. It would be wrong of SPARQL to conclude otherwise. To put it another way, blank node labels aren't global identifiers whereas URIs are. Andy -- Hewlett-Packard Limited Registered Office: Cain Road, Bracknell, Berks RG12 1HN Registered No: 690597 England
Received on Friday, 15 June 2007 16:20:13 UTC