我正在尝试正确标记我的所有音乐。我已经通过musicbrainz picard和MediaGo迭代了我的音乐,但是有些歌曲没有被标记或部分标记。 我遇到了DBpedia和SPARQL。现在我要问SPARQL的查询是, “向我展示2010-2015之间的所有音乐专辑,它的专辑艺术家,专辑中的所有标题,Genere,发行年份和封面艺术” 起初我尝试了以下查询,但我无法理解它是如何显示所有相册的。我搜索了不存在的“混合理论”。
PREFIX dbpedia0: <http://dbpedia.org/ontology/>
SELECT ?album ?album_name WHERE {
?album a dbpedia0:Album .
?album dbpedia2:name ?album_name .
}
我也想稍后搜索专辑/电影音乐信息,特别是在Cinema_of_India课程中。
请引导我走向正确的方向。
答案 0 :(得分:3)
使用DBpedia,首先需要定义要提取的实例类型。在这个特定的例子中,您正在寻找专辑:
?album a dbpedia-owl:Album .
然后您需要查找属于此相册的属性。正如您所知,他们正在寻找:
rdfs:label
dbpedia-owl:artist
dbpedia-owl:genre
dbpedia-owl:releaseDate
dbpprop:title
最后,您希望过滤您的相册名称,仅包含英语(或您正在寻找的任何语言)标签。此外,您对发布日期有约束。
SELECT distinct *
WHERE {
?album a dbpedia-owl:Album .
?album rdfs:label ?albumName.
?album dbpedia-owl:artist ?Artist.
Optional{
?album dbpedia-owl:genre ?genre.
?album dbpedia-owl:releaseDate ?date.
?album dbpprop:title ?title.
}
Filter (
lang(?albumName)='en' &&
xsd:dateTime(?date) >= '2010-01-01T00:00:00Z'^^xsd:dateTime)
}
我将一些变量放在可选项中的原因是,如果有一个DBpedia不包含这些信息的专辑,它仍然会显示出来。
您下一个查询,也需要遵循相同的逻辑。例如,如果您要查找特定相册,则可以使用此查询并对相册进行其他限制。
SELECT distinct * WHERE {
?album a dbpedia-owl:Album.
Filter( ?album=dbpedia:Hybrid_Theory)
}