用于推理 RDF* 语句的 GraphDB 自定义规则集

GraphDB custom ruleset for inference over RDF* statements

我正在尝试向内置的 RDFSPlus(优化)规则集添加一个简单的规则,以便能够让 GraphDB 从 RDF* 断言生成推断(隐式)语句。

具体来说,参考此处的 GraphDB 示例 https://graphdb.ontotext.com/documentation/9.4/free/devhub/rdf-sparql-star.html,从这些断言开始:

    :hasSpouse a owl:ObjectProperty ,
                 owl:SymmetricProperty .

    :man :hasSpouse :woman .

    <<:man :hasSpouse :woman>> :startDate "2020-02-11"^^xsd:date .

我想让 GraphDB 推理引擎推断出这两个语句:

    :woman :hasSpouse :man .
    <<:woman :hasSpouse :man>> :startDate "2020-02-11"^^xsd:date .

GraphDB 生成第一个没有问题(很明显),但事实证明 RDF* 有点棘手。

首先,我尝试将此规则添加到内置 RDFSPlus(优化)的副本中:

    Id: owl_rdfstarOverSym

      a b c
      b <rdf:type> <owl:SymmetricProperty>
      <<a b c>> p q
    ------------------------------------
      <<c b a>> p q

在这种情况下,我无法创建存储库; GraphDB 控制台显示此异常:

    Error in rule 'owl_rdfstarOverSym'. Invalid identifier: '>'

然后我尝试添加只有一个“<”和“>”的规则,如下所示:

    Id: owl_rdfstarOverSym

      a b c
      b <rdf:type> <owl:SymmetricProperty>
      <a b c> p q
    ------------------------------------
      <c b a> p q

GraphDB 似乎能够创建存储库,但是尝试使用 SPARQL 会导致此错误消息:'Failed initializing inferencer',并且 GraphDB 控制台显示此异常:

    Invalid entity: 'c b a'

所有这些测试 运行 使用 GraphDB 免费版:版本:9.3,修订:41892658

提前致谢,

佛朗哥

正如 Damyan Ognyanov 在他的评论中所述 (),我试图做的事情在 GraphDB 规则语言中是不可能的。