我正在尝试通过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,
Ive还尝试了以下指南: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参数。

最佳答案

我刚刚使用您调用卷发的确切方法进行了一些测试,但我无法重现该问题(使用Sesame 2.6.8版):它按预期在这里工作。

我能想到的唯一可能原因是TriG文件存在语法错误,Sesame无法报告该错误。

另一个可能的问题是您的期望:执行命令时,它将完全清除整个存储库,并将数据替换为TriG文件的内容。您可能还期待其他吗?

为了进一步调试,您能否查看一下芝麻服务器日志,并告诉我们它是否显示任何警告或错误?通过转到浏览器中的http://<server:port>/openrdf-sesame/并单击左侧菜单中的“系统”,可以查看服务器日志。

10-06 09:53
查看更多