gpt4 book ai didi

sparql - 来自 dbpedia 的简单 sparql 查询

转载 作者:行者123 更新时间:2023-12-04 10:48:31 31 4
gpt4 key购买 nike

我有一个关于我试图从教程构建的 SPARQL 查询的问题。我想生成三元组,使用 DBPedia 端点返回乐队成员列表和他们所在的乐队。

my query

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?name ?bandname where {
?person foaf:name ?name .
?band dbo:bandMember ?person .
?band dbo:genre dbpedia:Punk_rock .
?band dbp:name ?bandname .
}

我也在使用 [SPARQL 查询验证器][2] 来尝试找出我的问题,似乎我使用了不正确的前缀“dbp:name ?bandname”,如果可能,我只希望以 JSON 返回三元组。

一旦我可以运行它,如果可能的话,我想从 GeoNames 添加另一个前缀,以查看与波段关联的位置(但那部分是在 future )。任何见解将不胜感激!

最佳答案

您的查询存在一些问题。

  • 乐队的“名称”属性具有以下 URI:http://dbpedia.org/property/name .这是一个 属性(property) ,而不是 资源 ,但你在前缀中定义了它。您应该将其定义如下:PREFIX dbp: <http://dbpedia.org/property/>
  • 我刚刚快速检查了一下 a band page has as properties ,并看到,除了您正在使用的 dbo:bandMember 之外,还有另一个属性 currentMembers,它似乎可以检索更多信息。这似乎是合乎逻辑的,因为 dbo:bandMember 仅检索实体( 成员 URI ),而 dbp:currentMembers 也检索文字。这取决于您的用例...
  • 您在查询中使用了 dbpedia:prefix,它似乎没有预先定义。

  • 这是我用来检索与其成员相关联的乐队列表的查询:
    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX dbr: <http://dbpedia.org/resource/>
    PREFIX dbp: <http://dbpedia.org/property/>
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

    SELECT ?members ?bandName where {
    ?band dbo:genre dbr:Punk_rock .
    ?band dbp:currentMembers ?members.
    ?band foaf:name ?bandName
    FILTER(langMatches(lang(?bandName), "en"))
    }

    如果文字也用其他语言定义,过滤器部分允许我们避免重复。

    但如果您仍想使用 dbo:bandMember 属性,此查询也可以完成以下工作:
    PREFIX dbo: <http://dbpedia.org/ontology/>
    PREFIX dbr: <http://dbpedia.org/resource/>
    PREFIX dbp: <http://dbpedia.org/property/>
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

    SELECT ?personName ?bandName where {
    ?band dbo:bandMember ?person .
    ?person foaf:name ?personName .
    ?band dbo:genre dbr:Punk_rock .
    ?band foaf:name ?bandName
    FILTER(langMatches(lang(?bandName), "en"))
    FILTER(langMatches(lang(?personName), "en"))
    }

    希望有帮助!

    关于sparql - 来自 dbpedia 的简单 sparql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595777/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com