DBpedia SPARQL - 获取其他艺术家的图像和资源链接?

时间:2012-03-27 12:06:48

标签: sparql dbpedia

鉴于一位音乐艺术家,我正在努力寻找其他音乐艺术家,他们与特定的艺术家有最常见的“相关行为”。我对Eminem有以下查询,它工作正常

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子句中没有提到”。如果我和我一起工作它可以正常工作,但我无法回复。

那么如何才能获得其他匹配艺术家的图片和资源链接?

2 个答案:

答案 0 :(得分: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 :(得分: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