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