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中間結果には、関心のある 3 つの変数のみが含まれていることを確認してください。

これを行う 1 つの方法は、サブクエリを使用することです。サブクエリは、必要な 3 つの変数のみを射影します。このようなもの:

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

(Sesame がサブクエリをサポートしているかどうかはわかりません。)

もう 1 つの方法は、クエリに 3 つの変数のみが含まれていることを確認することです。クエリ内でさらに変数が必要な場合は、それらを空白のノードに置き換えることができます。SPARQL グラフ パターンの空白ノードは、「無名変数」のように機能します。ただし、これには面白いスコープの問題がいくつかあるため、サブクエリのアプローチの方がおそらく優れています。

于 2012-05-08T21:04:23.103 に答える