【发布时间】:2019-06-10 12:34:26
【问题描述】:
我正在尝试打印 dbpedia (http://dbpedia.org/sparql) 中缺少“抽象”属性的所有人员。当我运行这段代码时,我可以看到某些人,例如,输出中的 Hassan Al-Qazwini 具有属性 abstract。我做错了什么?
select ?s where {
?s a dbo:Person.
MINUS {?s dbo:abstract ?z}
}
【问题讨论】:
-
select ?s where { ?s a dbo:Person. filter not exists {?s dbo:abstract ?z} }做同样的事情,但也会返回“Hassan Al-Qazwini”。 -
原因很简单:DBpedia 重定向基于 Wikipedia 重定向。例如,
http://dbpedia.org/resource/Hassan_Al-Qazwini确实没有摘要,但是如果您在浏览器中打开此 URI,您将被重定向到其规范 URIhttp://dbpedia.org/resource/Sayed_Hassan_Al-Qazwini- 这样做是为了允许替代 URI 标识相同的资源但具有所有数据最后只是附加到单个 RDF 资源 -
解决这个问题的一种方法是检查重定向,即所有有摘要的人或被重定向到有摘要的人。例如这可能工作
select ?s where { ?s a dbo:Person. minus {?s dbo:wikiPageRedirects?/dbo:abstract ?z} } -
我认为它有效!从理论上讲,没有摘要的人是否可能与具有摘要的不同实体相关联,因此不会出现在结果中?无论如何,谢谢。
-
这是一个不同的问题吗?您是否理解我的解释,为什么您在查询中返回了一些人,但在浏览器中却看到了摘要?
标签: sparql