- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Sun, 28 Jan 2007 20:55:58 +0000
- To: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
In the mail archive the attachments have been inlined. syn-bad-39.rq is PREFIX : <http://example.org/> SELECT * WHERE { _:a ?p ?v . FILTER(true) . [] ?q _:a } 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. > > > > Just at the moment, I think I prefer (2), emphasizing the immediate > appearance, and the fact blank node labels can't appear in filters. > > (This example, either way round, will affect optimizations moving the > filter around if BGPs are sent to an external systems like a DL reasoner.) > > Andy >
Received on Sunday, 28 January 2007 20:56:07 UTC