如何在SPARQL(wikidata)中指定单元类型

如何在SPARQL(wikidata)中指定单元类型,sparql,wikidata,Sparql,Wikidata,我想找到世界上最高的山 SELECT ?mountLabel WHERE { ?mount wdt:P31 wd:Q8502. #mount is-instance-of mountain ?mount wdt:P2044 ?height. #mount elevation-above-sea-level height filter(?height = MAX(?height)) SERVICE wikibase:label { bd:servicePa

我想找到世界上最高的山

SELECT ?mountLabel WHERE {
  ?mount wdt:P31 wd:Q8502.        #mount is-instance-of mountain
  ?mount wdt:P2044 ?height.       #mount elevation-above-sea-level height
  filter(?height = MAX(?height))
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
ORDER BY DESC(?height)
LIMIT 1

这会返回不正确的值,因为某些数据项存储在英尺而不是米中

你认为这是什么意思:
filter(?height=MAX(?height))
?试试这个(未经测试,端点当前速度非常慢:
?mount p:P2044/psn:P2044/wikibase:quantityAmount?height。
@AKSW谢谢你这么做。响应过滤器的使用:因为我只需要最大的值,过滤器理论上应该找到最大高度并删除所有不是最大高度的条目。因此,对整个列表进行排序并进入顶部元素的速度更快。我认为使用过滤器不可能做到这一点
max
是一个聚合函数,即它需要分组。此外,它只是在投影中使用,例如
select?s(?max(?val)as?maxVal)
或在
具有
子句(这是组的“过滤器”)的
中使用,例如
select。。。GROUP BY?s具有(?avg(?val)>2.2)
-请参阅-如果您在子查询中作为投影执行此操作,则可以使用外部查询中的值作为筛选器或直接绑定。