- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Fri, 09 Jun 2006 14:47:46 +0100
- To: Jan Wielemaker <wielemak@science.uva.nl>
- CC: public-rdf-dawg-comments@w3.org
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