2

cURL 経由で http PUT を使用して、openrdf-sesame のトリプル ストアを更新しようとしていますが、解決策が見つからない問題に遭遇しました。

POST を使用すると、トリプル データが完全にアップロードされます。

しかし、PUT を使用すると、提供されたデータを追加する代わりに、リポジトリからすべてのデータが削除されます。詳細モードで cURL を実行したところ、予想される HTTP ステータス コードが返されました。

私は追加しました

<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>

Apache Tomcat の web.xml に追加するには、こちらのガイドも試してみました: HTTP PUT Guideですが、どちらも役に立ちませんでした。

編集 バッチファイルからのcURLコマンドは次のとおりです。

call "%curl%" -# -X POST %endpoint%/statements -H "Content-Type:application/x-trig;charset=UTF-8" -d @%%X
call "%curl%" -# -X PUT %endpoint%/statements -H "Content-Type:application/x-trig;charset=UTF-8" -d @%%X

これは本質的に次のとおりです。

curl.exe -# -X POST http://myendpoint/statements -H "Content-Type:application/x-trig;charset=UTF-8" -d @MyTrigFile.trig
curl.exe -# -X PUT http://myendpoint/statements -H "Content-Type:application/x-trig;charset=UTF-8" -d @MyTrigFile.trig

とりあえず、認証を無効にしましたが、それ以外の場合は-u user:password引数も含めます。

4

1 に答える 1

0

curl を呼び出す正確な方法を使用していくつかのテストを実行しましたが、問題を再現できません (Sesame バージョン 2.6.8 を使用): ここでは期待どおりに動作します。

私が考えられる唯一の原因は、TriG ファイルに構文エラーがあり、Sesame が報告に失敗したことです。

もう 1 つの考えられる問題は、あなたの予想です。コマンドを実行すると、リポジトリ全体が完全に消去され、データが TriG ファイルの内容に置き換えられます。あなたはおそらく何か他のものを期待していましたか?

これをさらにデバッグするために、Sesame サーバーのログを見て、警告やエラーが表示されているかどうか教えていただけますか? サーバー ログはhttp://<server:port>/openrdf-sesame/ 、ブラウザで に移動し、左側のメニューで [システム] をクリックして表示できます。

于 2012-08-16T02:52:45.407 に答える