似乎可以使用
计算单个实体(COUNT(DISTINCT ?x) as ?count)
以及使用
查询中所有变量的不同元组的数量(COUNT(DISTINCT *) as ?count)
但是,我无法弄清楚如何计算特定(不同)元组。像
这样的东西(COUNT(DISTINCT ?a ?b ?c) as ?count)
似乎不起作用。我做错了还是在SPARQL 1.1中真的不允许这样做?或者它应该工作,并且在Sesame 2.6.0中不支持我用于测试它?
答案 0 :(得分:9)
欢迎使用StackOverflow!
确保您的中间结果仅包含您感兴趣的三个变量?a ?b ?c
。
这样做的一种方法是使用子查询。子查询只投影三个所需的变量。像这样:
SELECT (COUNT(*) AS ?count) {
SELECT DISTINCT ?a ?b ?c {
…
}
}
(我不确定Sesame是否支持子查询。)
另一种方法是简单地确保您的查询只包含三个变量。如果查询中需要更多变量,则可以使用空白节点替换它们。 SPARQL图形模式中的空白节点的工作方式类似于“匿名变量”。虽然有一些有趣的范围问题,所以子查询方法可能更好。