如何使用SPARQL 1.1查询不同元组的数量?

时间:2012-05-08 15:19:55

标签: select count sparql

似乎可以使用

计算单个实体
(COUNT(DISTINCT ?x) as ?count)

以及使用

查询中所有变量的不同元组的数量
(COUNT(DISTINCT *) as ?count)

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

这样的东西
(COUNT(DISTINCT ?a ?b ?c) as ?count) 

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

1 个答案:

答案 0 :(得分:9)

欢迎使用StackOverflow!

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

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

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

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

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