如何在使用VIRTUOSO sparql服务时将请求类型从GET更改为POST

如何在使用VIRTUOSO sparql服务时将请求类型从GET更改为POST,sparql,virtuoso,Sparql,Virtuoso,我试图理解如何将请求类型从GET改为POST。目前,我正在使用它作为端点,如果我在其中编写查询,它将作为get请求发送,因为get请求对url长度有限制,所以对我来说并不合适。所以我需要把它改成POST。是否有人熟悉演奏家并知道如何做到这一点?我的意思是,我需要将POST请求从该链接发送到服务器,并且查询应该位于请求体的内部。我的Virtuoso服务器运行在Amazon AWS实例上。在回答了相同的交互之后,我强烈认为需要退后一步,因为这个问题和另一个问题都越来越清楚地成为一个问题的要素 解决您

我试图理解如何将请求类型从GET改为POST。目前,我正在使用它作为端点,如果我在其中编写查询,它将作为get请求发送,因为get请求对url长度有限制,所以对我来说并不合适。所以我需要把它改成POST。是否有人熟悉演奏家并知道如何做到这一点?我的意思是,我需要将POST请求从该链接发送到服务器,并且查询应该位于请求体的内部。我的Virtuoso服务器运行在Amazon AWS实例上。

在回答了相同的交互之后,我强烈认为需要退后一步,因为这个问题和另一个问题都越来越清楚地成为一个问题的要素

解决您所看到的问题并不一定会解决您在ApacheJena中所看到的问题,您没有描述过这一点。(我相信你已经看过了。)

我强烈建议您提供一个更全面的描述,描述您试图完成的任务、起点以及需要使用的工具(如果有的话)——例如,ApacheJena是强制性的吗

所有这些——Virtuoso中内置的SPARQL输入表单(在链接中可以找到)有一些固有的局限性。它不是作为一个无所不能的工具构建的。在那里输入的所有查询都是使用
GET
方法提交的,该表单对该动词的实现有一个明显的URI长度限制。(您看到的问题并不是HTTP
GET
动词本身的限制。)


我认为,导致URI超过表单限制的查询应该会立即导致用户出错,而不会将截断的查询提交给SPARQL处理器,建议您在和/或上提出此问题。

您可以在该端点上发出POST请求,只需配置java代码即可。下面是使用curl和POST的默认查询:

curl -X POST -F "format=text/turtle" -F "query=select distinct ?Concept where {[] a ?Concept} LIMIT 5" http://virtuoso.redisbiotech.com:8890/sparql
结果:

@prefix res: <http://www.w3.org/2005/sparql-results#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:_ a res:ResultSet .
_:_ res:resultVariable "Concept" .
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:_ res:solution [
      res:binding [ res:variable "Concept" ; res:value rdf:Property ] ] .
@prefix virtrdf:    <http://www.openlinksw.com/schemas/virtrdf#> .
_:_ res:solution [
      res:binding [ res:variable "Concept" ; res:value virtrdf:QuadMapFormat ] ] .
_:_ res:solution [
      res:binding [ res:variable "Concept" ; res:value virtrdf:QuadStorage ] ] .
_:_ res:solution [
      res:binding [ res:variable "Concept" ; res:value virtrdf:array-of-QuadMap ] ] .
_:_ res:solution [
      res:binding [ res:variable "Concept" ; res:value virtrdf:QuadMap ] ] .
@前缀res:。
@前缀rdf:。
_:ua res:ResultSet。
_:uures:resultVariable“Concept”。
@前缀rdf:。
_:ures:解决方案[
res:binding[res:variable“Concept”;res:value-rdf:Property]]。
@前缀virtrdf:。
_:ures:解决方案[
res:binding[res:variable“Concept”;res:value-virtrdf:QuadMapFormat]]。
_:ures:解决方案[
res:binding[res:variable“Concept”;res:value-virtrdf:QuadStorage]]。
_:ures:解决方案[
res:binding[res:variable“Concept”;res:value-virtrdf:QuadMap数组]]。
_:ures:解决方案[
res:binding[res:variable“Concept”;res:value-virtrdf:QuadMap]]。

使用Webapp UI(可能使用GET或POST传输查询)和使用实际SPARQL端点(据我所知)之间存在差异,而实际SPARQL端点不是基于HTTP的。为什么不以编程方式查询SPARQL端点?@JoshuaTaylor实际上,我有一个使用ApacheJena的java应用程序,它发送一个查询。然而,由于我的问题,我正在手动尝试。相关的问题和答案,我尝试了这一点,尽管是在一个不同的客户端实用程序和。我得到了409个内容类型
text/turtle
和200个其他类型的内容,但它返回HTML,数据不会被插入