假设我有一个像'age'这样的谓词,其中所有年龄三元组的值都是整数文字。什么SPARQL查询将返回数据中年龄最大的主题?
答案 0 :(得分:10)
您只需要使用年龄谓词order by desc
,然后limit
来获得第一个。{/ p>
PREFIX ns: <http://namespace.org/ontology/>
SELECT ?s ?age
WHERE { ?s ns:age ?age }
ORDER BY DESC(?age) LIMIT 1
请参阅SPARQL here
中order by
的语义
对于某些系统已经支持的SPARQL 1.1的下一个版本,您可以使用函数聚合并执行..
SELECT (max(?age) as ?maxage)
WHERE { ?s ns:age ?age }
目前在所有三重商店都不支持此功能。
答案 1 :(得分:5)
除了Manuel的查询之外,如果您的数据有一些无效/狡猾的值,您可能需要使用xsd:integer
强制将值强制转换为整数:
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
根据您的数据,您可能还需要将其添加到他的第二个SPARQL 1.1查询中。