RDF——如何根据RDF:type进行可传递属性的转换?
我试图找到一种基于类型推断/传播属性的方法,以防止名称冲突:RDF——如何根据RDF:type进行可传递属性的转换?,rdf,owl,sesame,blazegraph,Rdf,Owl,Sesame,Blazegraph,我试图找到一种基于类型推断/传播属性的方法,以防止名称冲突: :AOrder :Store :AStore ; a :OrderType ; :user :AUser . :AStore :name "Store Name"; a :StoreType :AUser :name "Some User"; a :UserType 根据上面的三元组,我想推断出其他几个三元组: :AOrder :storeName "Store Na
:AOrder :Store :AStore ;
a :OrderType ;
:user :AUser .
:AStore :name "Store Name";
a :StoreType
:AUser :name "Some User";
a :UserType
根据上面的三元组,我想推断出其他几个三元组:
:AOrder :storeName "Store Name" .
:AOrder :userName "Some User" .
我该怎么做?仅供参考,我目前正在使用Bigdata和Sesame
一种方法是使用SPIN,但它看起来不像Bigdata+Sesame拥有它;看起来Jena是唯一具有可比性的东西。您可以使用SPARQL更新操作来表达这一点:
INSERT {
?x :storeName ?store_name ;
:userName ?user_name .
}
WHERE {
?x a :OrderType;
:Store [ :name ?store_name ] ;
:user [ :name ?user_name ] .
}
每当更新存储时执行此操作(如果您在本地工作,则可以使用来截获更改事件),并且将插入所需的三元组
或者,看看芝麻可用的一些自定义推理工具。我不确定Bigdata是否支持自定义推理器,但您可以看看(尽管它有点过时)。或者看一看,这是一个具有OWL推理功能的Sesame后端,它还支持自定义规则。感谢您的回复,我最终选择了Jena+Jena规则。但是无论如何,你知道你发布的自定义推理器是如何处理蕴涵/推理三元组的吗?它是否只是将所有内容添加到现有存储中,使其无法分辨推断出的内容和基础数据?不,因为首先,Sesame在API级别支持显式和推断出的三元组之间的区别,因此您将始终能够分辨出哪个是哪个。此外,自定义推理器为推断的三元组使用单独的上下文。