问题描述
我正在尝试向内置的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规则语言无法做到。