代码之家  ›  专栏  ›  技术社区  ›  Ivan Fazaniuk

查找Winston_Churchill数据

  •  1
  • Ivan Fazaniuk  · 技术社区  · 9 年前

    我无法想象为什么这样做:

    select * {
    <http://dbpedia.org/resource/Mahatma_Gandhi> dbpedia-owl:birthName ?name.
    OPTIONAL{<http://dbpedia.org/resource/Mahatma_Gandhi> dbpedia-owl:birthDate ?birthDate}
    OPTIONAL{<http://dbpedia.org/resource/Mahatma_Gandhi> dbpedia-owl:restingPlace ?restingPlace}
    OPTIONAL{<http://dbpedia.org/resource/Mahatma_Gandhi> dbpedia-owl:deathDate ?deathDate}
    }
    

    以及this-NOT(空绑定):

    select * {
    <http://dbpedia.org/resource/Winston_Churchill> dbpedia-owl:birthName ?name.
    OPTIONAL{<http://dbpedia.org/resource/Winston_Churchill> dbpedia-owl:birthDate ?birthDate}
    OPTIONAL{<http://dbpedia.org/resource/Winston_Churchill> dbpedia-owl:restingPlace ?restingPlace}
    OPTIONAL{<http://dbpedia.org/resource/Winston_Churchill> dbpedia-owl:deathDate ?deathDate}
    }
    

    在…上 http://live.dbpedia.org/sparql

    更新

    This answer 很好,但当我试图寻找Vincent_van_Gogh时-同样的问题

    2 回复  |  直到 7 年前
        1
  •  4
  •   svick Raja Nadar    9 年前

    dbpedia:Mahatma_Gandhi dbpedia-owl:birthName dbpprop:birthName 另一方面 dbpedia:Winston_Churchill 只有 dbpprop:birthname (注意不同的大写)。

    不知道正确的处理方法是什么。

        2
  •  3
  •   Community    7 年前

    这似乎是DBpedia Live和DBpedia之间的区别。在标准DBpedia上,您的查询工作时没有问题:

    SPARQL results

    svick's answer 指出,在DBpedia Live中,丘吉尔有一个 dbpprop:出生名 ,但不是 dbpedia owl:birthName 在这种情况下,你能做的就是要求任何一个。你可以用 交替属性路径。以下查询适用于DBpedial Live。(我使用值来绑定 ?厕所 数据库:Winston_Churchill ,但这只是为了使查询更可读。重要的部分是三重属性路径: dbpedia:Winston_Churchill dbpediaowl:birthName | dbpprop:birthName?出生名 .

    select * {
      values ?wc { dbpedia:Winston_Churchill }
      ?wc dbpedia-owl:birthName|dbpprop:birthname ?birthName
      optional { ?wc dbpedia-owl:birthDate ?birthDate}
      optional { ?wc dbpedia-owl:restingPlace ?restingPlace}
      optional { ?wc dbpedia-owl:deathDate ?deathDate}
    }
    

    DBpedia Live results

    当然,如果你把它恢复到Churchill同时拥有这两个属性的普通DBpedia,你现在可以得到 结果,每个属性一个。如果你只想要一个结果,你可以分别要求属性和 绑定 合并 他们:

    select ?birthName ?birthDate ?restingPlace ?deathDate {
      values ?wc { dbpedia:Winston_Churchill }
      optional { ?wc dbpedia-owl:birthName ?birthname0 }
      optional { ?wc dbpprop:birthname ?birthname1 }
      bind ( coalesce(?birthname0,?birthname1) as ?birthName )
      optional { ?wc dbpedia-owl:birthDate ?birthDate}
      optional { ?wc dbpedia-owl:restingPlace ?restingPlace}
      optional { ?wc dbpedia-owl:deathDate ?deathDate}
    }
    

    SPARQL results