- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Tue, 21 Dec 2010 05:08:40 -0500
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- CC: Matteo Busanelli <mbusanelli@imolinfo.it>, public-sparql-dev@w3.org
I think you can also do this in SPARQL 1.0 with the OPTIONAL clause, since OPTIONAL is "greedy" (will bind if it can). SELECT ?person WHERE { ?person a ex:Person . OPTIONAL { ?person :has_number ?number. FILTER(?number > 10) } FILTER(!bound(?number)) # keep those that couldn't match the opt. } This is untested and it's 5am, so I may be missing something obvious :-) Lee On 12/21/2010 3:47 AM, Andy Seaborne wrote: > In SPARQL 1.1, there is grouping and MAX: > > SELECT ?person > WHERE { > ?person :has_number ?number . > } > GROUP BY ?person > HAVING (MAX(?number) < 10) > > Andy > > On 20/12/10 14:53, Matteo Busanelli wrote: >> I everyone sparql people, >> i need support on a query that is giving me trouble. >> >> I want to select all instances of a class witch have ALL the value of >> the property P1 matching a condition. >> My problem is to express the ALL assertion. I'm able of selecting all >> the triple in witch an instance verify the condition for the property P1 >> but I can't assert that this istance doesen't have also a valorization >> of the property that doesn't verify my condition. >> >> EXAMPLE >> Having: >> >> Matteo has_number 12 >> Matteo has_number 3 >> Matteo has_number 8 >> >> Lee has_number 9 >> Lee has_number 2 >> Lee has_number 4 >> >> I want to find the persons that HAS ONLY number less than 10. >> >> This doesn't work because return also Matteo: >> >> SELECT DISTINCT ?person >> WHERE { >> ?person :has_number ?number . >> FILTER (?number < 10) >> } >> >> Result: >> >> Matteo >> Lee >> >> Wanted result: >> Lee >> >> Can you suggest me the way I can do that? >> >> Thank you for your time, >> Matteo >> >> > >
Received on Tuesday, 21 December 2010 10:09:25 UTC