- From: Steve Harris <steve.harris@garlik.com>
- Date: Tue, 19 May 2009 14:47:10 +0100
- To: Axel Polleres <axel.polleres@deri.org>
- Cc: "Seaborne, Andy" <andy.seaborne@hp.com>, "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
On 19 May 2009, at 14:25, Axel Polleres wrote: > 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. If we're going to have a new verb, why put it in FILTER expressions? PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?name WHERE { ?x foaf:givenName ?name . NOTEXISTS { ?x dc:date ?date } } or similar is clearer IMHO. - Steve -- Steve Harris Garlik Limited, 2 Sheen Road, Richmond, TW9 1AE, UK +44(0)20 8973 2465 http://www.garlik.com/ Registered in England and Wales 535 7233 VAT # 849 0517 11 Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Tuesday, 19 May 2009 13:47:46 UTC