1

我正在尝试向内置 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 会导致此错误消息:“初始化推理器失败”,并且 GraphDB 控制台显示此异常:

    Invalid entity: 'c b a'

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

提前致谢,

佛朗哥

4

1 回答 1

1

正如 Damyan Ognyanov 在他的评论(GraphDB custom ruleset for inference over RDF* statements)中所说,我试图做的事情是不可能用 GraphDB 规则语言做的。

于 2020-10-14T00:04:03.830 回答