RDF - 如何根据rdf:type进行传递属性转换?

时间:2011-11-27 00:06:47

标签: 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 Name" .
:AOrder :userName "Some User" .

我该怎么做?仅供参考,我目前正在使用Bigdata和Sesame。

一种方法是使用SPIN,但似乎没有Bigdata + Sesame拥有它;看起来Jena是唯一可以与之相提并论的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用SPARQL更新操作来表达这一点:

INSERT { 
  ?x :storeName ?store_name ; 
     :userName ?user_name . 
 }
 WHERE { 
  ?x a :OrderType;
     :Store [ :name ?store_name ] ;
     :user [ :name ?user_name ] .
 }

每当您的商店更新时执行此操作(如果您在本地工作,您可以使用RepositoryListener拦截更改事件),并且将插入您想要的三元组。

或者,看一下Sesame可用的一些自定义推理工具。我不确定Bigdata是否支持自定义推理器,但您可以查看this custom rule-based reasoner extension(虽然它稍微过时了)。或者看看OWLIM,它是具有OWL推理功能的芝麻后端,也支持自定义规则。