我正在尝试通过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
参数。
答案 0 :(得分:0)
我刚刚使用你调用curl的确切方式运行了一些测试,我无法重现问题(使用Sesame版本2.6.8):它在这里按预期工作。
我能想到的唯一可能原因是你的TriG文件有一个语法错误,Sesame无法报告。
另一个可能的问题是您的期望:执行命令时,命令将完全清除整个存储库,并将数据替换为TriG文件的内容。你或许期待别的什么吗?
要进一步调试此问题,您可以查看Sesame服务器日志并告诉我们它是否显示任何警告或错误?通过转到浏览器中的http://<server:port>/openrdf-sesame/
并单击左侧菜单中的“系统”,可以查看服务器日志。