如何计算具有某些属性的项目

时间:2018-07-03 22:14:26

标签: sparql wikidata

使用https://query.wikidata.org,我需要计算包含P402语句的Wikidata的Q*个项目的数量。像

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402.}

但是,当然,这是一个无效的查询。

1 个答案:

答案 0 :(得分:3)

您的WHERE子句未指定有效的基本三元组模式:RDF三元组由三个项目(主题,谓词和对象)组成,其中您的模式仅包含两个。我不太了解Wikidata词汇,所以我假设wdt:P402是您感兴趣的谓词。在这种情况下,您的模式缺少三元模式对象的变量或占位符。

要解决此问题,您可以执行以下操作:

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402 ?object.}

或者(由于您对对象的值并不真正感兴趣),请改用空白节点:

SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402 [].}

最后,如果要确保对该属性具有多个值的项目不被计数超过一次,则还需要在查询中添加DISTINCT子句:

SELECT (COUNT(DISTINCT ?item) AS ?count) WHERE {?item wdt:P402 [].}