【问题标题】:RDFS-Plus Reasoning for rdfs:domain and range in GraphDBRDFS 的 RDFS-Plus 推理:GraphDB 中的域和范围
【发布时间】:2020-12-01 13:44:15
【问题描述】:

考虑两个具有不同推理规则集的 GraphDB 存储库:

  • Repo A 带有规则集“RDFS(优化)”
  • Repo B 带有规则集“RDFS-Plus(优化)”

我在这两个存储库中执行了以下 SPARQL INSERT:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ex: <http://www.example.com#>
INSERT DATA { 
    ex:hasPet a owl:ObjectProperty;
        rdfs:domain ex:Human;
        rdfs:range ex:Pet.
    ex:someHuman ex:hasPet ex:somePet. 
}

在这两个存储库中,我希望通过rdfs:domainrdfs:range,应该推断出以下类断言:

  • ex:someHuman rdf:type ex:Human
  • ex:somePet rdf:type ex:Pet

rdfs:domainrdfs:range 是 RDFS 属性,因此应该为 Repo A 推断它们。而且由于 RDFS-Plus 是 RDFS 的扩展,我认为它们也会在 Repo B 中推断出来。

但是,这些三元组只能通过规则集 RDFS (Repo A) 推断出来。如果我执行以下 SPARQL 查询,我只会在 Repo A 中得到结果,而在 Repo B 中没有结果。

PREFIX ex: <http://www.example.com#>
SELECT ?pet WHERE { 
    ?pet a ex:Pet.
}

有人能告诉我为什么上面的两个三元组只能用 RDFS 规则集推断,而不能用 RDFS-Plus 规则集推断吗?

【问题讨论】:

  • 哪个版本? 9.4?
  • RDFS-Plus 规则集没有为rdfs:domain 派生三元组的必要规则。您可以通过查看&lt;gdb-dist&gt;/configs/rules 的 PIE 文件来了解每个规则集中使用了哪些规则
  • @StanislavKralin 是的,v9.4.1。
  • @DamyanOgnyanov 好的,但这是故意的吗?我希望 RDFS-Plus 包含 RDFS 的所有规则等等。
  • @DamyanOgnyanov 这显然是违反直觉的,因为众所周知,语义 Web 中的 RDFS Plus 具有 RDFS + 一些基于 OWL 的结构的一切。此外,甚至 GraphDB 文档也声明 “通过 OWL 词汇表支持对称、逆向和传递属性的 RDFS 的扩展版本:” - 那么为什么省略了 rdfs:domain 规则?对我来说,这要么是一个“错误”,要么你应该重命名规则集。

标签: owl rdfs graphdb reasoning rdfs+


【解决方案1】:

将我的解决方案发布为答案,以便将来遇到此问题的人不必深入研究上面的 cmets。

正如@DamyanOgnyanov 在我的问题的 cmets 中指出的那样,GraphDB 的 RDFS-Plus 和 RDFS-Plus 中不包括基于 rdfs:domainrdfs:range 推断类型的必要规则(优化)规则集。 但是,它们包含在 RDFS 规则集中,这是违反直觉的,因为 RDFS 应该是 RDFS-Plus 的基础。

为了使 RDFS-Plus 规则集成为 RDFS 规则集的适当扩展并获得对 rdfs:domainrdfs:range 的支持,我在 RDFS-Plus 中添加了以下 RDFS 规则。规则集文件位于&lt;your-graphdb-folder&gt;/configs/rules

    Id: rdfs2

      a b c [Constraint b != <rdf:type>]
      b <rdfs:domain> d
    ------------------------------------
      a <rdf:type> d


    Id: rdfs3

      a b c
      b <rdfs:range> d
    ------------------------------------
      c <rdf:type> d

此外,我还添加了从 RDFS 到 RDFS-Plus 的 ID 为 rdfs6rdfs7rdfs12rdfs13 的规则。

没有添加规则rdfs5rdfs9rdfs11。规则rdfs5rdfs11 被传递属性规则覆盖,rdfs9 被公理和psys:transitiveOver 规则覆盖。

编辑:当我使用已编辑的 RDFS-Plus 规则集创建新存储库时,GraphDB 没有接受这些更改。我必须选择“上传自定义规则集”并上传我编辑过的规则集(即仍然具有默认名称的 RDFS-Plus 规则集)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多