如何进行计算 OPTIONAL 子句中唯一节点的 SPARQL 查询
How to make a SPARQL query that counts unique nodes within the OPTIONAL clause
我想创建一个 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)
}
}
我想创建一个 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)
}
}