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 GMT
This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 1 October 2009 14:42:08 GMT