0

我正在使用 Ontotext GraphDB 来存储语义数据。

GraphDB 允许存储/保存作为 Web 服务公开的 sparql 查询。但是我想通过 HTTP POST 请求存储/保存 sparql 查询。以下是我的查询,查询的名称将是Query-1

let $Query := fn:concat('PREFIX dc: <http://insert/>
                         INSERT DATA
                         {
                             dc:a@gmail.com dc:played dc:1234 .
                         }
                       ')
let $EncodeUri  := fn:encode-for-uri($Query)

谁能帮我编写 HTTP-POST 请求命令以将此查询保存在 GraphDB 中?我只想使用xdmp:http-post()

为了获得我使用的查询结果xdmp:http-get('http://localhost:8080//rest/sparql/saved-queries/Query-2'),它工作正常。

4

2 回答 2

3

您可以执行 POST 请求来存储查询。以下示例使用 curl:

curl -X POST http://localhost:8080/rest/sparql/saved-queries\
 -H 'Content-Type:application/json'\
 -d '{
     "body": "select * { ?s ?p ?o }",
     "name": "Query-2"
 }'

您还可以使用 GraphDB Workbench (Admin -> REST API Documentation) 找到有关 REST API 的更多详细信息

于 2016-03-09T13:56:43.670 回答
1

您似乎想通过 MarkLogic 制作和摄取 Sparql 查询。您可以使用以下代码来实现它:

import module namespace  sem    = "http://marklogic.com/semantics"          at "/MarkLogic/semantics.xqy";

let $Query := 'select * { ?s ?p ?o }'
let $QueryName := 'abcdef'
let $EncodesQuery  := fn:encode-for-uri($Query)
let $QData := fn:concat('{
                          "body": "',$Query,'",
                          "name": "',$QueryName,'"
                        }')
return
  xdmp:http-post(concat('http://localhost:9080/rest/sparql/saved-queries'),
              <options xmlns="xdmp:http">
                <data>{$QData}</data>
                <headers>
                  <content-type>application/json</content-type>
                </headers>
              </options>
              )
于 2016-04-07T05:37:14.497 回答