我在名为test.rq
的文件中有一个SPARQL查询。使用来自该文件的查询的cURL发送SPARQL请求的好方法是什么?
(我能够使用专用的SPARQL客户端或通过使用HTTP库对请求进行编程来执行此类请求,但我假设快速命令行请求,例如,使用cURL也应该可行。 )
发送SPARQL请求有三种标准化方法:
GET
我尝试了以下内容,但$(VALUE)
必须来自文件test.rq
,并且必须进行网址编码。
curl -d 'query=$(VALUE)' $(ENDPOINT)
POST
我尝试了以下内容,但$(VALUE)
应该 - 再次 - 来自文件test.rq
,并且应该应用网址编码。
curl -X POST -d '$(VALUE)' -H 'Content-Type: application/x-www-form-urlencoded' $(ENDPOINT)
POST
这应该没有URL编码,可以执行以下操作。
curl -X POST -d '@query.rq' -H 'Content-Type: application/sparql-query' $(ENDPOINT)
不幸的是,大多数SPARQL端点不支持第三种方法:(
答案 0 :(得分:1)
文件中的案例1:
URL对文件内容进行编码,并将其作为?query=
curl --data-urlencode 'query@Q.rq' $(ENDPOINT)
答案 1 :(得分:0)
不幸的是,支持哪种方法取决于三元组存储。 Approach 1 url-encoded的工作原理例如方法3与Virtuoso一起工作使用Blazegraph。