【发布时间】:2018-03-25 15:15:15
【问题描述】:
我正在尝试从 dbpedia.org 中提取一些人的出生日期。但是,某些查询会失败,因为数据位于不同的属性中。例如:
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
select ?birthDate where {
dbr:Alan_Turing dbo:birthDate ?birthDate
}
按原样返回1912-06-23,但是:
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
select ?birthDate where {
dbr:Grace_Hopper dbo:birthDate ?birthDate
}
返回一个空的result。
编辑添加:
最初的问题被 live.dbpedia.org 和 dbpedia.org 之间的差异弄糊涂了,这意味着尽管 non-live 版本在两者中都有 dbo:birthDate 这在 live.dbpedia.org 上并不相同。如果您将Alan Turing 与Grace Hopper 进行比较,您会发现它们的出生日期在两个不同的本体中。所以现在的问题是如何优雅地处理这些问题。
【问题讨论】:
-
您在 live.dbpedia.org 上查询。你应该使用
dbp:birthDate|dbo:birthDate之类的东西。见live.dbpedia.org/page/Grace_Hopper。 -
@StanislavKralin 抱歉,我不太明白 - live.dbpedia.org 和 dbpedia.org 有什么区别?它们不是来自相同的数据吗,维基百科?我现在对这两种类型都使用了 UNION,但我仍然看到一些失败。
-
@StanislavKralin 啊,后来的失败在我处理表格时限制了速率。你是要提出一个我可以接受的答案,还是我自己回答?
-
我认为这是 stackoverflow.com/q/48345125 的副本,可能还有许多其他问题......
-
@stsquad 是的,来源是相同的,即维基百科——但是,一个是实时版本,另一个是基于转储的版本。但一切都在 Stanislav 的链接中详细解释。