Re: FILTER (?z)?

Jan Wielemaker wrote:
> Hi,
> 
> I'm writing a Prolog parser for SPARQL based on the latest document
> (April 6).  Aim is to provide SPARQL support on top of the SWI-Prolog
> semantic web libraries, but first some work to do ...

Cool!

> 
> To get the grammar debugged I'm using the SyntaxDev test-sets.  I
> understand they have no formal meaning and are not approved.  Still,
> I'd expect them to be mostly correct and there are only few syntax
> tests in the rest of the test-set.
> 
> I've trouble with the test 'syntax-keywords-01.rq':
> 
> ================================================================
> SELECT *
> WHERE { ?x FILTER:foo ?z FILTER (?z) }
> ================================================================
> 
> FILTER allows for a bracketed expression and function calls, but reading
> through the syntax this only allows for relation expressions. Skimming
> the rest of the document, I have the impression the "FILTER (?z)" is 
> illegal.  Am I right?
> 
> 	Cheers -- Jan

The expression in a FILTER evaluates to some value that is then treated as an 
Effecective Boolean Value (that is, the same as in XPath/XQuery functions and 
operators).

So ?z is an expression, albeit a simple one.  It is legal.

Details: http://www.w3.org/2001/sw/DataAccess/rq23/#ebv

Summary of the BEV rules:

+ Booleans are true/false
+ The plain literal "" is false as is xsd:string "", else any literal has a 
BEV of true.
+ Numbers have a BEV of true unless 0 when they have a BEV of false.
+ Else type error


	Andy

Received on Friday, 9 June 2006 13:48:07 UTC