2012-03-27 17 views
7

ミュージシャンがいれば、私は、最も一般的な "関連アクト"を持っている他のミュージシャンを特定のアーティストと見つけることを試みています。私はエミネムのために次のクエリを持っており、それはDBpedia SPARQL - 他のアーティストのイメージとリソースのリンクを取得していますか?

SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ? 
} 
}group by ?c order by desc(?count) LIMIT 10 

正常に動作します。しかし、私は芸術家の絵だけでなく、そのDBpediaのリソースリンクを取り戻すしたい(?C)を追加します。この

SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c. 
?c <http://dbpedia.org/ontology/thumbnail> ?i 
} 
}group by ?c order by desc(?count) LIMIT 10 

をしようとすると、私にエラーを与える「変数?私は総計ではなく、GROUP BY句に言及した外部の結果セットで使用されています」。もし私がグループバイであればうまくいくが、私は得ることができない。

どうすれば画像とリソースリンクが他のマッチングアーティストとリンクできますか?

答えて

6

使用サブクエリ:

SELECT ?c ?i ?count WHERE { {SELECT ?c (COUNT(*) AS ?count) WHERE { 
{ 
?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c . 

} 
} group by ?c order by desc(?count) LIMIT 10} . ?c <http://dbpedia.org/ontology/thumbnail> ?i } 

あなたは結果hereを見つけることができます。

1

SQLと同じように、複数の変数でGROUP BYを使用できます。

これは動作するようです:

SELECT ?c (COUNT(*) AS ?count) ?i WHERE { 

?b <http://dbpedia.org/property/associatedActs> <http://dbpedia.org/resource/Eminem>. 
?b <http://dbpedia.org/property/associatedActs> ?c. 
?c <http://dbpedia.org/ontology/thumbnail> ?i 

} GROUP BY ?c ?i ORDER BY desc(?count) LIMIT 10 

は結果hereを参照してください。

関連する問題