W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > January to March 2007

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

From: Steve Harris <steve.harris@garlik.com>
Date: Mon, 29 Jan 2007 15:10:48 +0000
Message-Id: <833872A8-5338-44E9-9613-5DE8612B41D1@garlik.com>
Cc: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
To: "Seaborne, Andy" <andy.seaborne@hp.com>


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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:35 GMT