1

jenaarqを使用してSPARQLUpdateクエリでローカルrdfファイルを更新しようとしています。以下はコードです

GraphStore graphstore = GraphStoreFactory.create();
UpdateRequest req = UpdateFactory.create();
req.add("  PREFIX : myprefixuri  INSERT DATA { GRAPH file:///path-to-file/file.n3 { :person :name 'xyz'. } } ");
UpdateAction.execute(req, graphstore); 

コードを実行した後、クエリは正常に実行されたが、ローカルファイルは更新されなかったと表示されます。

4

2 に答える 2

3

ファイル名をグラフ名として使用すると、混乱が生じると思います。

INSERT DATA { GRAPH file:///path-to-file/file.n3

これは、という名前のファイルにデータを挿入するのではなく、という名前file.n3のグラフに挿入します。そのグラフは、グラフストアが作成する場所にあり、セットアップするとメモリ内オブジェクトになります。更新を永続化するには、たとえばTDBを使用して永続的なグラフを管理するグラフストアを使用するか、更新後にグラフをディスクに書き出す必要があります。あなたは後者を望んでいると思います。 file:///path-to-file/file.n3

RDF の記述は現在Model、基礎となる JenaGraphオブジェクトのファサードである で API メソッドを使用しますが、I/O を含む追加の便利な機能を備えています。したがって、グラフ ストアからグラフへの参照を取得し、それをモデルとしてラップしてから書き出す必要があります。警告 - テストされていないコード:

Node graphName = Node.createURI( "file:///path-to-file/file.n3" );
Graph g = graphstore.getGraph( graphName );
Model m = ModelFactory.createModelForGraph( g );
g.write( new FileWriter("/path-to-file/file.n3"), "Turtle" );
于 2012-12-05T08:22:15.943 に答える
2

ストアを作成し、そこにファイルをアップロードしてから、ストアに対して更新を実行しました。ストアは正常に更新されましたが、まだストアのコンテンツをファイルにエクスポートしていません。

于 2012-12-04T21:50:58.523 に答える