我试图了解如何将请求类型从GET更改为POST。目前,我使用http://virtuoso.redisbiotech.com:8890/sparql作为端点,如果在其中编写查询,它将作为get请求发送,而且由于get请求对url长度有限制,因此对我来说不太好。因此,我需要将它更改为POST。有没有人熟悉Virtuoso并知道如何做到这一点?我的意思是,我需要从那个链接发送POST请求到服务器,查询应该在请求体内。我的Virtuoso服务器运行在Amazon实例上。
发布于 2015-09-24 11:26:23
您可以在该端点上发出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 ] ] .
发布于 2015-09-20 12:04:37
在同样的交互中回答了你的另一个问题之后,我强烈地认为需要后退一步,因为这个问题和另一个问题正在变得更加清楚地成为XY问题的元素。
解决您在SPARQL输入表单中看到的问题并不一定能解决您显然在Apache中看到的问题,您还没有描述过这一点。(我相信你已经复习了虚拟耶拿提供商的文档。)
我强烈建议您提供一个更大的描述,说明您要完成什么任务,您的起点是什么,以及您需要使用哪些(如果有的话)工具--例如,Apache是必需的吗?
所有这些都是--在Virtuoso中内置的SPARQL输入表单,这是在您的链接中发现的,有一些固有的局限性。它不是用来做任何事情的工具。输入的所有查询都是使用GET
方法提交的,该表单对该谓词的实现具有明显的URI长度限制。(您看到的问题并不是HTTPHTTP谓词本身的限制。)
我认为导致URI超过表单限制的查询应该会导致用户立即出错,而不会将截断的查询提交给SPARQL处理器,并建议您在虚拟用户邮件列表和/或Virtuoso GIT项目问题上提出这个问题。
https://stackoverflow.com/questions/32615623
复制