W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2009

Re: [ACTION-18] use case on !ASK in FILTERS to emulate negation

From: Axel Polleres <axel.polleres@deri.org>
Date: Tue, 19 May 2009 14:25:40 +0100
Message-ID: <4A12B354.8050504@deri.org>
To: "Seaborne, Andy" <andy.seaborne@hp.com>
CC: "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
Seaborne, Andy wrote:
> 
>> -----Original Message-----
>> From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg-
>> request@w3.org] On Behalf Of Axel Polleres
>> Sent: 19 May 2009 13:24
>> To: public-rdf-dawg@w3.org
>> Subject: [ACTION-18] use case on !ASK in FILTERS to emulate negation
>>
>> This completes Action-18:
>>
>> http://www.w3.org/2009/sparql/track/actions/18
>>
>> =============================================================
>>
>> The current spec has the following example of a query emulating
>> NEGATION, asking for people with a name but no expressed date:
>>
>>
>> PREFIX foaf: <http://xmlns.com/foaf/0.1/>
>> PREFIX dc:   <http://purl.org/dc/elements/1.1/>
>> SELECT ?name
>>   WHERE { ?x foaf:givenName  ?name .
>>           OPTIONAL { ?x dc:date ?date } .
>>           FILTER (!bound(?date)) }
>>
>> If ASK queries were allowed within FILTER expressions, this could be
>> written as:
>>
>>
>> PREFIX foaf: <http://xmlns.com/foaf/0.1/>
>> PREFIX dc:   <http://purl.org/dc/elements/1.1/>
>> SELECT ?name
>>   WHERE { ?x foaf:givenName  ?name .
>>           FILTER (! {ASK { ?x dc:date ?date }})
>>         }
>>
>>
>> Note here, that the subquery in the FILTER needs to "access" the
>> bindings from the superquery. This should not be a problem with the
>> algebra or order dependence since per definition, FILTER expressions
>> need to have access to the bindings of the group they appear in, but it
>> would mean that such ASK queries in FILTERS (similar to OPTIONAL
>> patterns in FILTERs) are not entirely compositional in their evaluation.
> 
> Because the evaluation semantics of this FILTER ASK are different [*] to 
> plain subquery, I currently prefer to have a clearer syntax keword like EXISTS, !EXISTS.

You mean in FILTERs "EXISTS" instead of "ASK", yes?
Indeed, makes sense to me.

best
Axel

> 	Andy
> 
> [*] A plain subquery being (semantically) like a join with the other elements in a group.
> 
> 
>> =============================================================
>>
>>
>>
>> --
>> Dr. Axel Polleres
>> Digital Enterprise Research Institute, National University of Ireland,
>> Galway
>> email: axel.polleres@deri.org  url: http://www.polleres.net/
> 


-- 
Dr. Axel Polleres
Digital Enterprise Research Institute, National University of Ireland, 
Galway
email: axel.polleres@deri.org  url: http://www.polleres.net/
Received on Tuesday, 19 May 2009 13:26:27 GMT

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