8

似乎可以使用

(COUNT(DISTINCT ?x) as ?count)

以及查询中所有变量的不同元组的数量,使用

(COUNT(DISTINCT *) as ?count)

但是,我无法弄清楚如何计算特定的(不同的)元组。就像是

(COUNT(DISTINCT ?a ?b ?c) as ?count) 

似乎不起作用。我做错了还是在 SPARQL 1.1 中真的不允许这样做?或者它应该可以工作,只是在我用来测试它的 Sesame 2.6.0 中不受支持?

4

1 回答 1

9

欢迎来到 StackOverflow!

确保您的中间结果仅包含?a ?b ?c您感兴趣的三个变量。

一种方法是使用子查询。子查询仅投影三个所需的变量。像这样的东西:

SELECT (COUNT(*) AS ?count) {
   SELECT DISTINCT ?a ?b ?c {
      …
   }
}

(我不确定 Sesame 是否支持子查询。)

另一种方法是简单地确保您的查询仅包含三个变量。如果您在查询中需要更多变量,您可以用空白节点替换它们。SPARQL 图形模式中的空白节点就像“匿名变量”一样工作。虽然有一些有趣的范围问题,所以子查询方法可能更好。

于 2012-05-08T21:04:23.103 回答