如何将SPARQL发布到Virtuoso?

时间:2016-12-01 21:18:46

标签: post sparql virtuoso

我使用了两个不同的HTTP POST实用程序(poster以及Python requests API)来发布一个简单的SPARQL插入{ {1}}。

我的网址是:Virtuoso

我的请求参数是:

http://localhost:8890/sparql

我将实际的SPARQL(default-graph-uri: <MY_GRAPH> should-sponge: soft debug: on timeout: format: application/xml save: display fname: )放在邮件的内容中。

我尝试了不同的内容类型,但都没有。虽然上面的参数集指定INSERT DATA { GRAPH...,但我确实得到200,但是响应是HTML格式,但是没有插入数据。当我尝试application/xml的内容类型时,我得到409无效路径,这也在this post中引用。

我可以成功地执行text/turtle,但是,由于性能原因,我希望超出有效负载长度限制。与GET的唯一区别是SPARQL在HTTP GET参数下的URL中,POST 在消息内容中启用更大的有效负载,方法是在同一请求中包含多个三元组,而不仅仅是一个(我有100个千片的插入)。我试图关注this documentation page

2 个答案:

答案 0 :(得分:1)

几天前我在这个问题上停下来试图用 curl 实现同样的目标。由于它是浏览器扩展的强大(且更方便)的替代方案,因此最终证明是成功的公式如下:

curl -X POST \
     -H "Content-Type:application/sparql-update" \
     -H "Accept:text/html" \
     --data "select distinct ?Concept where {[] a ?Concept} LIMIT 100" http://localhost:8890/sparql

有关 this thread 中标题的更多详细信息。

答案 1 :(得分:0)

这个“问题”有很多方面,很难提供适合本网站的简单答案。这是我建议邮件列表的原因之一,它更适合于对话和/或多方面的帮助。

  • 您是否尝试过使用curl作为我们的大部分示例?

  • 查看Mozilla附加组件的Poster页面,我发现您可能需要手动将?添加到目标URI的末尾 - 所以{{1}而不是http://localhost:8890/sparql? - 并且不清楚你是否在测试中做到了这一点。在project page上,我还注意到其last commit是在2012年,有a great many open issues

  • 我对Python并不熟悉,所以我没有在那里挖掘。

  • 您是否尝试过设置http://localhost:8890/sparql标题?这可能会对服务器返回的内容产生重大影响。

  • 如果我理解您所描述的努力,则Accept:查询参数应为format:,其值不应为output-format:,而是支持的格式之一{{3 }}

  • listed in the documentation或此问题都没有足够的详细信息来分析application/xml错误的原因。允许我们重现此结果的明确细节将有助于,最佳地在一个独特的线程中。