我在一个名为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 来自文件:
URL 编码文件的内容并将其作为
?query=
放在 HTTP URL 查询字符串中curl --data-urlencode 'query@Q.rq' $(ENDPOINT)
不幸的是,支持哪种方法取决于三重存储。 方法 1 url-encoded有效。与 Virtuoso 一起,方法 3 的工作原理如下。与 Blazegraph。