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

DBpedia SPARQL query for song information for ID3 tag

我正在尝试正确标记我所有的音乐。我已经通过 musicbrainz picard 和 MediaGo 迭代了我的音乐,但仍然有些歌曲没有标记或部分标记。 我遇到了 DBpedia 和 SPARQL。现在我想问 SPARQL 的查询是, " 显示 2010-2015 之间的所有音乐专辑,它是专辑艺术家、专辑中的所有标题、类型、发行年份和封面艺术" 起初我尝试了以下查询,但我无法理解它是如何不显示所有专辑的。我搜索了 "Hybrid Theory" 那里没有。

PREFIX dbpedia0: <http://dbpedia.org/ontology/>
SELECT ?album ?album_name WHERE {
?album a dbpedia0:Album .
?album dbpedia2:name ?album_name .
}

我也想稍后搜索 album/film 音乐信息,具体在 Cinema_of_India class.

请指引我正确的方向。

使用 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)
}

我把一些变量放在optional中的原因是,如果DBpedia没有包含这些信息的相册,它仍然会显示。

你下一个查询,也需要遵循同样的逻辑。例如,如果您要查找特定的相册,您可以使用此查询并获取相册的其他限制。

SELECT distinct * WHERE { 
    ?album a dbpedia-owl:Album.
Filter( ?album=dbpedia:Hybrid_Theory)
}