如何进行SPARQL查询以查找属性的最高值?

Alb*_*Alb 6 database rdf sparql

假设我有一个像'age'这样的谓词,其中所有年龄三元组的值都是整数文字.什么SPARQL查询将返回数据中年龄最大的主题?

Man*_*res 10

你只需要order by desc使用年龄谓词然后limit获得第一个.

PREFIX ns:    <http://namespace.org/ontology/>
SELECT ?s ?age
WHERE { ?s ns:age ?age }
ORDER BY DESC(?age) LIMIT 1
Run Code Online (Sandbox Code Playgroud)

order by此处查看SPARQL中的语义

使用SPARQL的下一个版本1.1,在某些系统中已经支持,您可以使用函数聚合并执行..

SELECT (max(?age) as ?maxage)
WHERE { ?s ns:age ?age }
Run Code Online (Sandbox Code Playgroud)

目前所有三重商店都不支持此功能.


Rob*_*obV 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
Run Code Online (Sandbox Code Playgroud)

根据您的数据,您可能还需要将其添加到他的第二个SPARQL 1.1查询中.