【发布时间】:2018-04-14 18:20:25
【问题描述】:
我刚刚开始使用三重存储 RDF4J(我正在使用它的工作台,版本 2.3.1,在带有 Tomcat 9.0 的 Windows 10 上运行)
我想在 RDF4J 中使用 SPIN 规则。因此,我创建了一个新的存储库(在内存中支持 RDFS+SPIN)。
我想从RDF4J documentation concerning how to add SPIN rules 中的 SPIN 示例开始。也就是说,我添加了数据(在Turtle中,并导入到RDF4J中)
@prefix ex: <http://example.org/>.
ex:John a ex:Father ;
ex:parentOf ex:Lucy .
ex:Lucy a ex:Person .
还有规则:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix sp: <http://spinrdf.org/sp#>.
@prefix spin: <http://spinrdf.org/spin#>.
@prefix ex: <http://example.org/>.
ex:Person a rdfs:Class ;
spin:rule [
a sp:Construct ;
sp:text """PREFIX ex: <http://example.org/>
CONSTRUCT { ?this ex:childOf ?parent . }
WHERE { ?parent ex:parentOf ?this . }"""
] .
按照文档中的说明,我公开了查询(选中了“包含推断语句”复选框),
PREFIX ex: <http://example.org/>
SELECT ?child
WHERE { ?child ex:childOf ?parent }
但是,没有返回结果:
谁能告诉我我做错了什么,为什么 SPIN 规则在我的 RDF4J 工作台中不起作用,我错过了什么吗?
【问题讨论】:
-
首先:我认为,SPIN 推理器当前假定所有数据都在默认上下文中。您能否验证您的数据未添加到命名图表中?第二:检查您是否先添加规则,然后再添加数据。我不是 100% 确定这一点,但从我的脑海中,它不会将新添加的规则应用于现有数据。
-
非常感谢!您的建议是有效的,现在规则有效。然而,这些限制削弱了 RDF4J 中 SPIN 规则推理的有用性,特别是数据不能在命名图中。这会解决吗?
-
老实说,开发已经转移到 SHACL,它是 SPIN 的继任者。 SPIN 功能本身不太可能得到改进,但另一方面,一旦 SHACL 退出测试版,它应该支持您所需的一切。
-
好消息,期待SHACL的进步。
标签: semantic-web inference reasoning rdf4j spin-rdf