【问题标题】:SPARQL MINUS command not showing correct resultsSPARQL MINUS 命令未显示正确结果
【发布时间】: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,您将被重定向到其规范 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} }
  • 我认为它有效!从理论上讲,没有摘要的人是否可能与具有摘要的不同实体相关联,因此不会出现在结果中?无论如何,谢谢。
  • 这是一个不同的问题吗?您是否理解我的解释,为什么您在查询中返回了一些人,但在浏览器中却看到了摘要?

标签: sparql


【解决方案1】:

原因是 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} }

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-11
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多