【发布时间】:2015-02-07 09:25:48
【问题描述】:
按照 freebase MQL 查找 5 位艺术家和每位艺术家的 50 张专辑。
[{
"type" : "/music/artist",
"name":null,
"album" : [{
"name" : null,
"count":null,
"limit":50
}],
"limit":5
}]
第一次尝试 - 没有子查询
我可以这样写 SPARQL:
SELECT ?artist ?album
WHERE
{
?artist :type :/music/artist .
?artist :album ?album
}
LIMIT n
但是,我不知道应该指定多少个n,因为据我所知,SPARQL 没有层次结构。
第二次尝试 - 使用子查询(不确定这是否正确)
以下子查询看起来可以工作。
SELECT ?artist ?album
WHERE
{
?artist :album ?album .
{
SELECT ?artist
WHERE
{
?artist :type :/music/artist
}
LIMIT k
}
}
LIMIT n
但我不知道如何指定k、n 来为 5 位艺术家获得 50 张专辑。
一些带有端点的数据
- SPARQL 端点:http://dbpedia.org/sparql
谁能写SPARQL 打印 5 位艺术家和他们的 5 幅画为每位艺术家?
以下查询打印艺术家和他们的绘画,但没有LIMITing 结果。
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX prop:<http://dbpedia.org/property/>
SELECT ?painting ?artist
WHERE
{
?painting prop:artist ?artist .
{
SELECT ?artist
{
?artist rdf:type dbpedia-owl:Artist.
}
}
}
谢谢。
【问题讨论】:
-
您是在问如何获取 n 个艺术家,每个艺术家最多有 k 个结果?
-
如果是这种情况,请查看(可能重复,但也没有答案):Nested queries in sparql with limits,并查看有关该问题的 cmets,包括其他问题的链接网站。但是,answers.semanticweb.com 现在已关闭,请参阅 How to limit SPARQL solution group size? 和 SPARQL INNER LIMIT
-
@JoshuaTaylor 感谢您提供良好的资源。最后两个链接对我帮助很大。我发现我的
sub-query是错误的(与内部查询和外部查询混淆)并且使用 SPARQL 很难做到这一点。谢谢。
标签: rdf sparql semantic-web freebase mql