Sparql 从 Dbpedia 获取“是 dbo:parent of”记录

问题描述

我正在尝试获取人的孩子。有些人在“dbo:child”中列出了孩子,其他人则将他们列为“is dbo:parent of”

以下是两种类型的示例

  1. https://dbpedia.org/page/Elizabeth_II
  2. https://dbpedia.org/page/George_V

对于第一个,我可以按如下方式提取子记录:

SELECT * WHERE {
  <http://dbpedia.org/resource/Elizabeth_II> 
dbo:child?child 
}

第二个有点难,因为我想我必须找到其他指向 George_V 的记录。我正在努力寻找任何有用的东西,这是我能想到的最好的

SELECT *
WHERE
{
  ?person a              dbo:Person ;
   dbo:parent [dbo:Person dbr:George_V] 
}
limit 10

这样做的最佳方法是什么?有没有办法将这两种方法结合起来?

解决方法

这是一个解决问题的例子。请注意,您必须查看家族属性(关系类型)的数据,然后探索数据质量。

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/> 

SELECT DISTINCT ?royal ?ancestor
WHERE {
        { 
          <http://dbpedia.org/resource/Charles,_Prince_of_Wales>
                    <http://dbpedia.org/property/father>+ ?ancestor .
        }
        UNION
        {
          <http://dbpedia.org/resource/Charles,_Prince_of_Wales>
                    <http://dbpedia.org/property/mother>+ ?ancestor .
        }
        BIND ( <http://dbpedia.org/resource/Charles,_Prince_of_Wales> as ?royal )
      }

Live DBpedia Query Solution Link

或者,它更接近您的原始属性偏好(即 dbo:parent),这是另一个基于属性路径的示例。

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/> 

SELECT DISTINCT ?royal ?ancestor ?ancestorName
WHERE {
        <http://dbpedia.org/resource/Elizabeth_II>
              dbo:parent* ?ancestor     . 
        ?ancestor 
              foaf:name   ?ancestorName . 
        FILTER (LANG(?ancestorName) = "en")                

        BIND ( <http://dbpedia.org/resource/Elizabeth_II> as ?royal )
      }

Live Query Results Link

我们正在开发一个新的 DBpedia 版本,该版本应该提高此类信息的质量。

最后,对一些早期的建议(作为评论发布)进行了调整。

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbr: <http://dbpedia.org/resource/>

SELECT DISTINCT ?royal ?child
WHERE { 
        dbr:George_V  dbo:child+|^dbo:parent+  ?child .
        BIND ( dbr:George_V AS ?royal )
      }

Live DBpedia Query Link

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...