- From: Pat Hayes <phayes@ihmc.us>
- Date: Mon, 29 Jan 2007 10:06:14 -0600
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
>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, Didnt we decide this, some time ago? That is, groups with filters are equivalent to the same group with all the filters at the end of the group. Which would rule out your 2/ interpretation, below. Pat > 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 > > >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > _:a ?p ?v . { _:a ?q 1 } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > { _:a ?p ?v . } _:a ?q 1 } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > { _:a ?p ?v . } UNION { _:a ?q 1 } } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > { _:a ?p ?v . } _:a ?q 1 } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > _:a ?p ?v . OPTIONAL {_:a ?q 1 } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > _:a ?p ?v . _:a ?q 1 >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > { _:a ?p ?v . _:a ?q _:a } UNION { _:b ?q _:c } >} >PREFIX : <http://example.org/> >SELECT * >WHERE >{ > _:a ?p ?v . FILTER(true) . [] ?q _:a >} -- --------------------------------------------------------------------- IHMC (850)434 8903 or (650)494 3973 home 40 South Alcaniz St. (850)202 4416 office Pensacola (850)202 4440 fax FL 32502 (850)291 0667 cell phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes
Received on Monday, 29 January 2007 16:06:32 UTC