3

名前の衝突を防ぐために、タイプに基づいてプロパティを推測/伝播する方法を見つけようとしています。

: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" .

これどうやってするの?参考までに、私は現在ビッグデータとゴマを使用しています。

1つの方法はSPINを使用することですが、Bigdata+Sesameがそれを持っているようには見えません。イエナだけが匹敵するものを持っているように見えます。

4

1 に答える 1

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がカスタム推論機能をサポートしているかどうかはわかりませんが、このカスタムルールベースの推論機能拡張機能を確認できます(少し古くなっていますが)。または、OWL推論機能を備えたSesameバックエンドであるOWLIMを見てください。これは、カスタムルールもサポートしています。

于 2011-11-28T05:57:21.500 に答える