首页 文章

将Sparql查询插入Ontotext GraphDB

提问于
浏览
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') ,它工作正常 .

2 回答

  • 1

    您可以执行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(管理员 - > REST API文档)找到有关REST API的更多详细信息

  • 3

    您似乎想通过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>
                  )
    

相关问题