首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rdfs的rdfs推理: GraphDB中的域和范围

rdfs的rdfs推理: GraphDB中的域和范围
EN

Stack Overflow用户
提问于 2020-12-01 13:44:15
回答 1查看 296关注 0票数 1

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

具有规则集的

  • Repo A "RDFS
  • B有规则集"RDFS-Plus (优化)

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

代码语言:javascript
复制
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属性,因此它们应该被推断为回购A。而且由于RDFS是RDFS的扩展,我认为它们也会在回购B中被推断出来。

然而,这些tripels只能用规则集RDFS (Repo A)推断。如果我执行以下SPARQL查询,我只能在Repo A中得到一个结果,而在Repo B中没有结果。

代码语言:javascript
复制
PREFIX ex: <http://www.example.com#>
SELECT ?pet WHERE { 
    ?pet a ex:Pet.
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 10:30:31

把我的解决方案作为一个答案,这样将来有这个问题的人就不必深入了解上面的评论了。

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

为了使RDFS规则集成为RDFS规则集的适当扩展,并获得对rdfs:domainrdfs:range的支持,我在RDFS中添加了以下RDFS规则。规则集文件可以在<your-graphdb-folder>/configs/rules上找到。

代码语言:javascript
复制
    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的I( rdfs6rdfs7rdfs12rdfs13 )的规则。

I没有添加 rules rdfs5rdfs9rdfs11。规则rdfs5rdfs11由传递属性规则覆盖,rdfs9由关于psys:transitiveOver的公理和规则覆盖。

编辑:当我用编辑的RDFS规则集创建一个新的存储库时,GraphDB没有接收到这些更改。我必须选择“上载自定义规则集”并上传我所编辑的规则集(即RDFS规则集,该规则集仍然具有默认名称)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65091666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档