[{ "type" : "/music/artist","name":null,"album" : [{ "name" : null,"count":null,"limit":50 }],"limit":5}]
首先尝试 – 没有子查询
我可以像这样编写SPARQL:
SELECT ?artist ?albumWHERE{ ?artist :type :/music/artist . ?artist :album ?album}liMIT n
但是,我不知道应该指定多少n,因为据我所知,SPARQL没有层次结构.
第二次尝试 – 使用子查询(不确定这是否正常)
以下子查询看起来像工作.
SELECT ?artist ?albumWHERE{ ?artist :album ?album . { SELECT ?artist WHERE { ?artist :type :/music/artist } liMIT k }}liMIT n
但我不知道如何指定k,n来获得50张专辑,前5位艺术家.
一些带端点的数据
> SPARQL端点:http://dbpedia.org/sparql
谁能写出SPARQL,为每位艺术家印刷5位艺术家和他们的5幅画作?
下面的查询打印艺术家及其绘画,没有限制结果.
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>PREFIX prop:<http://dbpedia.org/property/>SELECT ?painting ?artistWHERE{ ?painting prop:artist ?artist . { SELECT ?artist { ?artist rdf:type dbpedia-owl:Artist. } }}
谢谢.
解决方法 Max和我在 a chat进行了一些讨论,这可能最终与Max采取的方法相同.不过,我认为它更具可读性.它有15位艺术家的专辑,每张专辑最多5张专辑.如果您希望能够包含没有任何相册的艺术家,您需要选择一些部分.select ?artist ?album { #-- select 15 bands that have albums (i.e.,#-- such that they are the artist *of* something). { select distinct ?artist { ?artist a dbpedia-owl:Band ; ^dbpedia-owl:artist [] } limit 15 } #-- grab ordered pairs (x,y) (where y > x) of their #-- albums. By asking how many x's for each y,we #-- get just the first n y's. ?artist ^dbpedia-owl:artist ?album,?album_ filter ( ?album_ <= ?album ) }group by ?artist ?albumhaving count(?album_) <= 5 #-- take up 5 albums for each artistorder by ?artist ?album
SPARQL results
总结以上是内存溢出为你收集整理的rdf – 将freebase MQL转换为SPARQL全部内容,希望文章能够帮你解决rdf – 将freebase MQL转换为SPARQL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)