如何通过curl(通过HTTP)将SPARQL查询发送到Openlink Virtuoso并以JSON获取结果

时间:2019-07-01 07:16:51

标签: virtuoso openlink-virtuoso

我正在寻找广泛的sparql-graph-crud文档或其他机制,详细说明如何向Openlink Virtuoso SPARQL端点提交查询。

简而言之,我想学习如何通过WHERE(通过HTTP)将SPARQL查询(带有curl子句)发送到Openlink Virtuoso并以JSON获取结果。

例如,我想向SELECT * FROM <http://www.example.com/ABC> where { ?s ?p ?o } LIMIT 100的Openlink Virtuoso提交一个查询,例如localhost

OpenLink Virtuoso页面上提供的示例(如下)不足以满足我的查询要求。

  

curl --verbose --url "http://localhost:8890/sparql-graph-crud?graph-uri=urn:graph:update:test:post"

2 个答案:

答案 0 :(得分:0)

described in the Virtuoso documentation一样,/sparql-graph-crud端点专门用于SPARQL 1.1 Graph Store HTTP Protocol。如果您只想像样本一样执行SELECT查询,则可以简单地使用/sparql端点,其中包含&query=和查询的URI转义字符串,以及&format=application/rdf+json在URI中获取结果作为JSON。

在您的Web浏览器(即http://localhost:8890/sparql)中使用Virtuoso /sparql查询表单来提交查询以请求默认(HTML)输出,然后仅通过以下方式调整结果URI,这可能是有指导意义的将&format=参数更改为-

  

curl --verbose --url "http://localhost:8890/sparql-graph-crud?default-graph-uri=&query=SELECT+*+FROM+%3Chttp%3A%2F%2Fwww.example.com%2FABC%3E+where+%7B+%3Fs+%3Fp+%3Fo+%7D+LIMIT+100&format=application/rdf+json&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on&run=+Run+Query+"

还请注意,您可以加载the above URI, having changed only the &query= to &qtxt=, to see the whole form filled out in your browser

对于大量文档,有Virtuoso websiteVirtuoso product manual

OpenLink Community ForumVirtuoso Users mailing list也是寻找特别了解Virtuoso的人们(包括许多Virtuoso开发人员)的好地方。

答案 1 :(得分:0)

advice from @TallTed之后,我编写了以下解决方案。

date;time curl -X POST "http://localhost:8890/sparql" \
   -H "Content-Type: application/x-www-form-urlencoded" \
   -H "Accept:application/sparql-results+json" \
   --data-urlencode 'format=json' \
   --data-urlencode 'default-graph-uri=http://www.example.com/ABC' \
   --data-urlencode 'query=SELECT * FROM <http://www.example.com/ABC> WHERE { ?s ?p ?o } LIMIT 5' \
   --write-out '%{url_effective};%{http_code};%{time_total};%{time_namelookup};%{time_connect};%{size_download};%{speed_download}\n';date;