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

问题描述

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

具体来说,请从以下声明开始,在此处https://graphdb.ontotext.com/documentation/9.4/free/devhub/rdf-sparql-star.html中参考GraphDB示例:

    :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

预先感谢

Franco

解决方法

正如Damyan Ognyanov在他的评论(GraphDB custom ruleset for inference over RDF* statements)中所述,我试图使用GraphDB规则语言无法做到。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...