Re: Test cases for blank node label scope - and a case for discussion

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