【问题标题】:DBpedia SPARQL query for song information for ID3 tagDBpedia SPARQL 查询 ID3 标签的歌曲信息
【发布时间】:2015-05-28 13:46:11
【问题描述】:

我正在尝试正确标记我的所有音乐。我已经通过 musicbrainz picard 和 MediaGo 迭代了我的音乐,但仍有一些歌曲没有标记或部分标记。 我遇到了 DBpedia 和 SPARQL。现在我想问 SPARQL 的查询是, “给我看 2010-2015 年间的所有音乐专辑、专辑艺术家、专辑中的所有标题、流派、发行年份和封面艺术” 起初我尝试了以下查询,但我无法理解它是如何不显示所有专辑的。我搜索了不存在的“混合理论”。

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

我还想稍后搜索专辑/电影音乐信息,特别是在 Cinema_of_India 类中。

请指引我正确的方向。

【问题讨论】:

    标签: sparql dbpedia id3


    【解决方案1】:

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

    【讨论】:

    • 伟大的开始!干净易懂!!感谢您的正确解释。我用Filter ( lang(?albumName)='en' &amp;&amp; xsd:dateTime(?date) &gt;= '1990-01-01T00:00:00Z'^^xsd:dateTime) } 编辑了过滤器块以查看专辑 Hybrid Theory (Released 1999/2000) ,但我在查询输出中没有找到这张专辑。我浏览了 dbpedia.org/page/Hybrid_Theory 以查看该艺术家和标签的存在。我在这里错过了什么吗?
    • 即使我用以下查询也看不到混合理论专辑,SELECT distinct * WHERE { ?album a dbpedia-owl:Album .} 尽管dbpedia.org/page/Hybrid_Theoryrdf:type 下具有属性dbpedia-owl:Album
    • 这回答了你的问题吗?
    • 您的主要查询已经解决了我的问题,但我认为 dbpedia 可能存在一些问题,因为它没有找到一些(例如 Hybrid_Theory)专辑,即使专辑存在于dbpedia 数据库中。甚至对 Hybrid_Theory 的特定查询也导致了 null。所以我不知道问题出在dbpedia 还是查询脚本上。如果问题出在dbpedia 上,我会将这个帖子设为已回答并提出另一个问题。所以请自行运行脚本找出问题并分享原因。
    • 我不确定你的意思,如果你在我写的主查询的过滤器中添加?album=dbpedia:Hybrid_Theory,它会找到它。找不到记录时我能想到的唯一原因是主要变量之一(例如 ?album、?albumName 或 ?artist)不存在,因此查询将忽略它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多