sparql - 如何进行 SPARQL 查询来计算 OPTIONAL 子句中的唯一节点
问题描述
我想做一个 SPARQL 查询,计算包含和不包含 OPTIONAL 子句的唯一节点,如下所示:
SELECT (count(?o) AS ?numA) (count(DISTINCT ?o) AS ?numD) (count(?r) AS ?numO) ?UniqueCountOf_o_within_the_OPTIONAL_clause
WHERE {
?i ex:predicate ?o.
OPTIONAL {
?o rdf:type ?r.
}
}
可以正确获取 numA、numD 和 numO 的值,但我不知道在 OPTIONAL 子句中获取 ?o 的唯一计数。有什么方法可以进行查询,还是应该将其分成两个查询?
谢谢。
解决方案
您可以将 OPTIONAL 子句中的 ?o 的值复制到新变量 ?o2 中,然后计算 ?o2 上不同值的数量。
SELECT (count(?o) AS ?numA) (count(DISTINCT ?o) AS ?numD) (count(?r) AS ?numO) (count(DISTINCT ?o2) AS ?numX) WHERE {
?i ex:predicate ?o.
OPTIONAL {
?o rdf:type ?r.
BIND (?o AS ?o2)
}
}
推荐阅读
- asp.net-core - 通过 RazorLight.NetCore3 模板键的 Razor 页面 HTML 渲染
- python - 无法获得熊猫的天数..它带有另一列的日期
- r - 根据项目数设置 par()
- python - 比较来自多个文本文件的列,与 csv 列文件 python
- java - java.lang.RuntimeException:处理时出错:分数值必须在 0 到 1 的范围内:2.0
- javascript - 过滤已过滤的表或一次使用多个过滤器
- javascript - Jest 和 React 测试库未在页面加载时加载最终 DOM
- synchronization - 尽管使用了 sync 和 eval 方法,但 ArrayFire 数组计算的数据在执行过程中有所不同
- python-3.x - 在特定索引中扩展列表
- wordpress - Apache HTTPS 重定向不适用于深层链接