鉴于一位音乐艺术家,我正在努力寻找其他音乐艺术家,他们与特定的艺术家有最常见的“相关行为”。我对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子句中没有提到”。如果我和我一起工作它可以正常工作,但我无法回复。
那么如何才能获得其他匹配艺术家的图片和资源链接?
答案 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。