DBpedia SPARQL查询ID3标签的歌曲信息

时间:2015-05-28 13:46:11

标签: sparql dbpedia id3

我正在尝试正确标记我的所有音乐。我已经通过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课程中。

请引导我走向正确的方向。

1 个答案:

答案 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)
}