我正在寻找广泛的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"
答案 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+"
对于大量文档,有Virtuoso website和Virtuoso product manual。
OpenLink Community Forum和Virtuoso 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;