首页 > 解决方案 > 如何计算具有某些属性的项目

问题描述

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

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

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

标签: sparqlwikidata-query-service

解决方案


您的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 [].}

推荐阅读