【问题标题】:How to make a SPARQL query that counts unique nodes within the OPTIONAL clause如何进行 SPARQL 查询来计算 OPTIONAL 子句中的唯一节点
【发布时间】:2020-02-21 17:06:55
【问题描述】:

我想做一个 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 的唯一计数。有什么方法可以进行查询,还是应该将其分成两个查询?

谢谢。

【问题讨论】:

  • 您已经在计算所有计数值,那么“?o 的唯一计数”是什么?可以举个例子吗?

标签: sparql


【解决方案1】:

您可以将 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)
  }
}

【讨论】:

  • 谢谢!实际上,我尝试了绑定,但当时失败了,现在它可以在 Apache Jena Fuseki 3.14.0 上运行。我不知道为什么...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多