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

It seems some people received this with all the attachments in-lined, which 
looses the names, which indicate good/bad tests.

Let's try again - zip file attached.

 Andy

Seaborne, Andy wrote:
> 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 Monday, 29 January 2007 14:56:35 UTC