首页 > 解决方案 > SPARQL MINUS 命令未显示正确结果

问题描述

我正在尝试打印 dbpedia ( http://dbpedia.org/sparql ) 中缺少“抽象”属性的所有人员。当我运行此代码时,我可以看到某些人,例如输出中的 Hassan Al-Qazwini 具有属性 abstract。我做错了什么?

select ?s where {
    ?s a dbo:Person.
    MINUS {?s dbo:abstract ?z}
}

标签: sparql

解决方案


原因是 DBpedia 重定向基于 Wikipedia 重定向。例如,http://dbpedia.org/resource/Hassan_Al-Qazwini确实没有摘要,但是如果您在浏览器中打开此 URI,您将被重定向到其规范 URI http://dbpedia.org/resource/Sayed_Hassan_Al-Qazwini- 这样做是为了允许替代 URI 标识相同的资源,但所有数据仅附加到单个 RDF资源到底。

解决此问题的一种方法是同时检查重定向,即所有具有摘要的人或被重定向到具有摘要的人。例如,这可能有效:

select ?s 
where { ?s a dbo:Person. minus {?s dbo:wikiPageRedirects?/dbo:abstract ?z} }

推荐阅读