我试图为变量分配一个计数,以便以后在查询中使用(SPARQL)。
我甚至无法让以下工作:
SELECT ?resultsCount
WHERE{
?subject ?predicate ?object.
BIND(COUNT(?object) AS ?resultsCount)
}
这里我的语法或语义有问题,因为我只是多次重复?resultsCount
的空结果,而不是简单地86(结果数量)。
但是,当我执行以下操作时,我得到了结果数量(例如86):
SELECT (COUNT(?object) AS ?resultsCount)
WHERE{
?subject ?predicate ?object
}
有没有办法让BIND
像第一个例子一样使用COUNT
?如果没有,是否有不同的正确方法来获得相同的功能?
我使用的是Blazegraph 2.1.2。这可能是一个错误吗?
答案 0 :(得分:2)
count 是一个聚合函数。要使用计数,您需要在查询中使用分组,并在投影中使用计数。 计数将计算每个组中的结果数。您还可以将不同与计数一起使用,这样您就可以执行以下操作来获取每个主题的不同对象的数量:
select (count(*) as ?numResults) {
?subject ?predicate ?object
}
如果您只是尝试计算匹配数量,那么您可以使用计数而不使用组(这会给您一个隐含的,组):
{{1}}