2011-06-20 6 views
8

私はセサミとVirtuoso Triplestoresを試しています。モーメントでは、Sesame Java APIを使用して、両方のTriplestoresにRDFデータを追加します。TriplestoreのRDFを更新してください

私のRDFデータは、現時点ではなどUserdataのビデオデータ、 などの異なるもの、私はTriplestore

にビデオのRDF(タイトル、説明、場所など)を追加することができます。しかし、私は更新できる方法を表しストア内のRDF?

たとえば、ゴマのRESTインターフェイスを使用して、更新されたRDFでPUTリクエストを作成すると、ストア内のすべてが最初に削除されます。

更新されたデータ(たとえばビデオのタイトルが変更されている)でPOSTを使用すると、両方のタイトル(古いものと新しいもの)が保存されます。

トリプラストストアではどのように作業しますか? 多分私はここに欠かせない何かを見逃しています。


EDIT:

私は今、すべてのRDFエントリのヴィルトゥオーゾでゴマとグラフでコンテキストを使用しています。この方法で私はコンテキストをクリアしてからもう一度追加することができます。私は両方のTriplestoreにSesame APIを使用しています(私たちはどちらを使用するのかまだ分かりません)、コードはまったく同じように見えます。ヘルプ

+0

注:cyrgiあなたはSPARQL更新サポートストアを使用示唆ようなら、あなたは更新エンドポイントに(名前付きグラフを使うと仮定し)、次を発行することができますクワッドストア:http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSesame2Provider – hwilliams

+0

@hwilliams。はい、私はそれを使用しました。しかし、私は店舗内のRDFをAPIで更新する方法はまだ分かりません。 – superbly

+0

VirtuosoにはSPARULの「変更」操作があり、埋め込みの削除操作と挿入操作では、http://docs.openlinksw.com/virtuoso/sparqlextensions.html#rdfsparulexamples13 – hwilliams

答えて

4

ため

ValueFactory f = rep.getValueFactory(); 
URI uri = f.createURI(urn); 
con.clear(uri); 
con.add(reader,this.baseURI, RDFFormat.RDFXML,uri); 

おかげで私はあなたがSPARQLで作業していると仮定します。そうでない場合は、おそらく:-)

多くのトリプルストアは、SPARQL Updateをサポートしています。これは、SPARQLストアでRDFトリプルを変更するための言語です。それは、SQLのINSERT,UPDATEDELETEのようなものです。 Sesameがまだサポートしているかどうかは分かりませんが、SPARQL Updateはまだ完全に完成されていない非常に新しい仕様です。

特にRESTfulな方法で作業したい場合は、注意が必要です。Named Graphsです。これにより、異なるグラフでトリプルを管理できるので、データを分けておくことができます。たとえば、それぞれのビデオに関するトリプルを別々の名前付きグラフに保持し、その名前付きグラフのみをPUT要求で更新することができます。 SPARQLを使用して、名前付きグラフ全体のストア全体を照会することはできます。セサミのREST APIが名前付きグラフへのアクセスを提供しているかどうかは、私は完全にはわかりません。 (私は、JavaのAPIがないことをかなり確信している。私は、彼らはしかし、それを別の何かを呼んだと思いコンテキスト。?)ですから、そのようにオリジナルのRDFを持っていると仮定すると、タイトルのあなたの具体的な例を挙げて

+0

にお答えいただきありがとうございます。それでも私のために何が最善の方法であるかを考え出す。 SPARQLとにかく後で使用する必要があります。だから私はそれを試してみる。 – superbly

+0

はいゴマグラフのコンテキストを呼び出すと、 – RobV

+0

この回答に再度感謝します。すべてのrdfエントリにコンテキストまたはグラフを使用できることを認識していませんでした。これは非常に便利でした。 – superbly

2

:something :title "Original Title" . 

そして、あなたが何かのようになり、それを変更したい:ごまのPOST のみという名前のグラフ(ゴマの用語ではコンテキスト)に新しい情報を追加して使用して

:something :title "Updated Title" . 

重要は既存の情報であるを削除しません。

RDF用語では、これらの2つのトリプルは異なる事実を表します。セサミ(または他のトリプルストア)は、第2トリプルが第1トリプルを置き換えるべきであることを知らない。これは、従来のSQL /リレーショナル・モデルとはまったく違うので、プロパティを更新する場所に慣れている可能性があります。そのようなトリプルを変更することはできないため、RDFには適切な概念がありません。新しいトリプルを追加するか、既存のトリプルを削除することができます。

古いトリプルを削除する必要があります(セサミのREST APIはこれに対してHTTP DELETEをサポートしています)、新しいトリプルを追加してください(現在行っているようにセサミのPOST操作を使用してください)。

あなたが使用するトリプルストアはほぼ同じです。ヴィルトゥオーゾセサミプロバイダのドキュメントをインクルードするRDFデータを追加する例を示します

DELETE DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Original Title" . } 
}; 
INSERT DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Updated Title" . } 
} 
関連する問題