如何根据查询文件发送SPARQL cURL请求?

时间:2017-10-12 11:43:33

标签: curl sparql

我在名为test.rq的文件中有一个SPARQL查询。使用来自该文件的查询的cURL发送SPARQL请求的好方法是什么?

(我能够使用专用的SPARQL客户端或通过使用HTTP库对请求进行编程来执行此类请求,但我假设快速命令行请求,例如,使用cURL也应该可行。 )

发送SPARQL请求有三种标准化方法:

尝试1:GET

我尝试了以下内容,但$(VALUE)必须来自文件test.rq,并且必须进行网址编码。

curl -d 'query=$(VALUE)' $(ENDPOINT)

方法2:URL编码POST

我尝试了以下内容,但$(VALUE)应该 - 再次 - 来自文件test.rq,并且应该应用网址编码。

curl -X POST -d '$(VALUE)' -H 'Content-Type: application/x-www-form-urlencoded' $(ENDPOINT)

方法3:直接POST

这应该没有URL编码,可以执行以下操作。

curl -X POST -d '@query.rq' -H 'Content-Type: application/sparql-query' $(ENDPOINT)

不幸的是,大多数SPARQL端点不支持第三种方法:(

2 个答案:

答案 0 :(得分:1)

文件中的案例1:

URL对文件内容进行编码,并将其作为?query=

放入HTTP URL查询字符串中

curl --data-urlencode 'query@Q.rq' $(ENDPOINT)

答案 1 :(得分:0)

不幸的是,支持哪种方法取决于三元组存储。 Approach 1 url-encoded的工作原理例如方法3与Virtuoso一起工作使用Blazegraph。