首页 文章

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

提问于
浏览
2

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

(我能够使用专用的 SPARQL 客户端或通过使用 HTTP 库对请求进行编程来执行此类请求,但我假设快速 command-line 请求,e.g. ,cURL 应该可以作为 well.)

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

尝试 1:GET

我尝试了类似下面的内容,但$(VALUE)必须来自文件test.rq,它必须是 URL-encoded。

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

方法 2:URL-encoded POST

我尝试了类似下面的内容,但$(VALUE)应该 - 再次 - 来自文件test.rq,并且应该应用 URL-encoding。

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 回答

  • 1

    案例 1 来自文件:

    URL 编码文件的内容并将其作为?query=放在 HTTP URL 查询字符串中

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

  • 0

    不幸的是,支持哪种方法取决于三重存储。 方法 1 url-encoded有效。与 Virtuoso 一起,方法 3 的工作原理如下。与 Blazegraph。

相关问题