- From: Steve Harris <steve.harris@garlik.com>
- Date: Mon, 29 Jan 2007 15:10:48 +0000
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
On 28 Jan 2007, at 20:51, Seaborne, Andy wrote: > Attached are some tests (positive and negative) for reuse of blank > nodes labels only within BGPs. > > There is one case to point out: syn-bad-39.rq > > { > _:a ?p ?v . FILTER(true) . <x> ?q _:a > } > > 1/ By the principle that FILTERs apply to the whole group, it could > be taken as like: > { _:a ?p ?v . <x> ?q _:a . FILTER(true) } > which is one BGP. > > [Filter true > [BGP > _:b0 ?p ?v > <x> ?q _:b0 > ]] > > 2/ By the principle that BGPs are adjacent triple patterns, it has > appearance as if it were two BGPs like: > > { BGP( _:a ?p ?v . ) FILTER(true) BGP( [] ?q _:a . ) } > > so it would be: > [Filter true > [Join > [BGP _:a ?p ?v] > [BGP <x> ?q _:a] > ]] > which is illegal (_:a spans BGPs). > > Blank node labels can't appear in FILTERs so this also makes sense > by saying FILTERs end the blank node label scope. I prefer (1), but then I also think it's less confusing to require FILTERs be at the end of the BGP. To me it doesn't visually at all obvious that the FILTER divides the BGP into two: { something1 . something2 . something3 . } looks like one BGP, whether or not if something2 is a FILTER. - Steve
Received on Monday, 29 January 2007 15:11:00 UTC