【问题标题】:RDF--How do I make a transitive property shift, based on the rdf:type?RDF——如何根据 rdf:type 进行传递属性转换?
【发布时间】:2011-11-27 00:06:46
【问题描述】:

我正在尝试找到一种方法来根据类型推断/传播属性以防止名称冲突:

: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 似乎没有它;看起来耶拿是唯一可以与之媲美的东西。

【问题讨论】:

    标签: rdf owl sesame blazegraph


    【解决方案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推理能力,也支持自定义规则。

    【讨论】:

    • 感谢您的回复-我最终选择了 Jena + Jena Rules。但是无论如何,您知道您发布的自定义推理器如何处理蕴涵/推理三元组吗?它是否只是将所有内容添加到现有存储中,从而无法分辨推断出的内容和基础数据是什么?
    • 不,因为首先 Sesame 在 API 级别支持显式三元组和推断三元组之间的区别,因此您将始终能够分辨出哪个是哪个。此外,自定义推理器为推断的三元组使用单独的上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2019-08-12
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多