- From: Steve Harris <steve.harris@garlik.com>
- Date: Mon, 26 Jun 2006 17:30:35 +0100
- To: Lee Feigenbaum <feigenbl@us.ibm.com>
- Cc: andy.seaborne@hp.com, dawg mailing list <public-rdf-dawg@w3.org>
On 26 Jun 2006, at 14:35, Lee Feigenbaum wrote: > > "Seaborne, Andy" <andy.seaborne@hp.com> wrote on 06/26/2006 > 05:13:26 AM: > >>> 1/ Nested GRAPH statements >>> >>> I didn't find any examples or tests that involved nested GRAPH > statements, >>> but the spec made it pretty clear what should happen and SPARQLer > agrees. >>> >>> ng1.n3: >>> >>> :s :p :o, :o1 . >>> >>> ng2:n3: >>> >>> :s :p :o, :o2 . >>> >>> query: >>> >>> SELECT ?o >>> FROM NAMED <ng1.n3> >>> FROM NAMED <ng2.n3> >>> { >>> GRAPH <ng1.n3> { >>> GRAPH <ng2.n3> { >>> :s :p ?o . >>> } >>> } >>> } >>> >>> results: >>> >>> ?o/:o >>> ?o/:o2 >>> >>> why? GRAPH takes the given named graph and places it as the default > graph >>> in the RDF dataset against which the inner graph pattern is matched. > So, >>> nested graphs basically act as a stack of default-graph contexts for > the >>> graph patterns that they contain. >> >> What were you expecting? GRAPH <ng2.n3> makes ng2:n3 the target >> graph for the >> pattern { :s :p ?o }, which gives the results shown. In stack >> terms, it > is a >> stack of names, the active one being the stack front. There's not > merging of >> graphs > > The results that I got were exactly what I was expecting. I was only > including that case as a potential test case as it's potentially a > non-obvious situation which would be good to include in the test > suite. Given the behaviour of GRAPH <uri> { ... } I think it would be reasonable to expect the results to be limited to the intersection of the two graphs. - Steve
Received on Monday, 26 June 2006 16:31:05 UTC