sparql - 如何计算具有某些属性的项目
问题描述
使用https://query.wikidata.org ,我需要计算Q*
带有 P402 语句的 Wikidata 项目的数量。就像是
SELECT (COUNT(?item) AS ?count) WHERE {?item wdt:P402.}
但是,当然,这是一个无效的查询。
解决方案
您的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 [].}
推荐阅读
- c - 利用管道将文件复制到不同的目的地,返回垃圾值
- sql - SQLite 组日期时间按 168 小时(7 天)返回 NULL
- node.js - aws CI/CD 工作流程的最佳路径是什么?Cloudformation、SAM 还是无服务器框架?
- pygame - Pygame 重置游戏
- javascript - 如何将对象数组与数组进行比较?
- javascript - 使用缩小的 js 文件是否太难了?包含示例代码
- java - 如何添加修复程序以避免 504 网关超时错误
- r - 从坐标绘制线段
- android - 从改造中收到不完整的响应
- android - 应用程序中的生物特征认证和 oauth2