如何基于查询文件发送 SPARQL cURL 请求?
How to send a SPARQL cURL request based on a query file?
我在名为 test.rq
的文件中有一个 SPARQL 查询。使用来自该文件的查询的 cURL 发送 SPARQL 请求的好方法是什么?
(我可以使用专用的 SPARQL 客户端或通过使用 HTTP 库对请求进行编程来执行此类请求,但我假设使用快速命令行请求,例如使用 cURL 应该也是可行的。)
发送 SPARQL 请求的标准方式有以下三种:
尝试 1:GET
我尝试了类似下面的操作,但是 $(VALUE)
必须来自文件 test.rq
并且它必须是 URL 编码的。
curl -d 'query=$(VALUE)' $(ENDPOINT)
方法 2:URL-编码 POST
我尝试了类似下面的操作,但是 $(VALUE)
应该再次来自文件 test.rq
,并且应该应用 URL-编码。
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 端点不支持这第三种方法:(
文件中的案例 1:
URL 对文件内容进行编码,并将其作为 ?query=
放入 HTTP URL 查询字符串中
curl --data-urlencode 'query@Q.rq' $(ENDPOINT)
遗憾的是,支持哪种方法取决于三元组存储。 有效,例如。使用 Virtuoso,方法 3 有效,例如。使用 Blazegraph。
我在名为 test.rq
的文件中有一个 SPARQL 查询。使用来自该文件的查询的 cURL 发送 SPARQL 请求的好方法是什么?
(我可以使用专用的 SPARQL 客户端或通过使用 HTTP 库对请求进行编程来执行此类请求,但我假设使用快速命令行请求,例如使用 cURL 应该也是可行的。)
发送 SPARQL 请求的标准方式有以下三种:
尝试 1:GET
我尝试了类似下面的操作,但是 $(VALUE)
必须来自文件 test.rq
并且它必须是 URL 编码的。
curl -d 'query=$(VALUE)' $(ENDPOINT)
方法 2:URL-编码 POST
我尝试了类似下面的操作,但是 $(VALUE)
应该再次来自文件 test.rq
,并且应该应用 URL-编码。
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 端点不支持这第三种方法:(
文件中的案例 1:
URL 对文件内容进行编码,并将其作为 ?query=
curl --data-urlencode 'query@Q.rq' $(ENDPOINT)
遗憾的是,支持哪种方法取决于三元组存储。