我试图获取 dbpedia.org 中的每个事件以及各自的 startDate 和 endDate (startDate& endDate是http://schema.org/Event)
中定义的属性这是sparql请求:
PREFIX db-owl: <http://dbpedia.org/ontology/>
SELECT *
WHERE {
?r a db-owl:Event .
OPTIONAL{ ?r db-owl:startDate ?c }
} LIMIT 2000
(我使用Virtuoso Sparql Query editor在http://dbpedia.org/sparql端点上对其进行测试)
自己测试并且您发现只有 veeeerryyy 这些事件的小子集具有指定的startDate。
例如,如果我更专注我的查询,如下:
PREFIX db-owl: <http://dbpedia.org/ontology/>
SELECT *
WHERE {
?r a db-owl:MilitaryConflict .
OPTIONAL{ ?r db-owl:startDate ?c }
} LIMIT 2000
您可以看到startDate在NO militaryConflict中指定。
这怎么可能?
我错过了什么,或者只是因为英文版的dbpedia缺少一些关键信息,比如事件的开始日期?
注意:如果我在法语dbpedia端点(http://fr.dbpedia.org/sparql)上运行相同的查询,我会得到完全不同的结果,即:一堆MilitaryConflict填充了相应的startDate < / p>
答案 0 :(得分:3)
当然,其中很多(没有)具有 dbo:startDate 属性,但很多属性具有 dbo:date 属性,甚至更多有 dbp:日期属性。 (本体值往往比原始值更清晰,但两者都有用。)例如,看看结果:
SELECT * {
?r a dbo:MilitaryConflict .
OPTIONAL{ ?r dbo:startDate ?startDate }
OPTIONAL{ ?r dbo:date ?oDate }
OPTIONAL{ ?r dbp:date ?pDate }
} LIMIT 2000
确定DBpedia中有哪些数据和哪些数据不可用是一个试错过程。我通过浏览其中一些实例找到了 dbo:date 属性,例如,2015 Douma market massacre具有该属性的值。
注意:如果我在法语dbpedia端点(http://fr.dbpedia.org/sparql)上运行相同的查询,我会得到完全不同的结果,即:一堆MilitaryConflict填充了相应的startDate
这确实使问题变得更有趣,但我猜它归结为法语DBpedia上使用的不同信息框,这有助于将更多信息输入系统。