Lets say I have a predicate like \'age\' where the values of all age triples are integer literals. What SPARQL query would return the subject with the highest age in the dat
In addition to Manuel's queries you may need to use xsd:integer
to force values to be cast to integer if your data has some invalid/dodgy values:
PREFIX ns: <http://namespace.org/ontology/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?s ?age
WHERE { ?s ns:age ?age }
ORDER BY DESC(xsd:integer(?age)) LIMIT 1
Depending on your data you may need to add this into his second SPARQL 1.1 query as well.
You just need to do order by desc
with the age predicate and then limit
to just get the first one.
PREFIX ns: <http://namespace.org/ontology/>
SELECT ?s ?age
WHERE { ?s ns:age ?age }
ORDER BY DESC(?age) LIMIT 1
See the semantics of order by
in SPARQL here
With the next version of SPARQL , 1.1, that is already supported in some systems you can use function aggregates and do ..
SELECT (max(?age) as ?maxage)
WHERE { ?s ns:age ?age }
This is not supported in all triple stores currently.