CumulusRDF更新查询

时间:2017-09-20 18:18:31

标签: rest sparql rdf

我正在尝试通过REST插入我的CumulusRDF数据。

问题:如果我正在进行查询,那么使用GET方法

就可以了

Ex:一个简单的查询:

    MockEndpoint mockEndPointTest = getMockEndpoint("mock:catchCSVList");
    context.start();

    // set expectations on mock here
    mockEndPointTest.expectedMessageCount(1);
    mockEndPointTest.assertIsSatisfied();

    // okay now we can get the exchange's from the mock
    List<List<String>> test = (List<List<String>>) mockEndPointTest.getExchanges().get(0).getIn().getBody();
    assertEquals("4227",test.get(1).get(0));
    assertEquals("370",test.get(1).get(1));
    assertEquals("",test.get(1).get(2));

    context.stop();

GET方法:

select * 
where
{ 
  ?s ?p ?o.
}

但是,当我尝试插入数据时,它会失败。

查询:

curl -X GET --header 'Accept: application/sparql-results' 'http://localhost:9090/cumulus/sparql?query=select+*+where+%7B%3Fs+%3Fp+%3Fo.%7D&accept=text%2Fhtml'

POST方法:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA
{ 
  <http://example/book1> dc:title "Harry Potter".
}

Erro:

curl -i -X POST -H 'Content-Type: application/sparql-query' 'http://localhost:9090/cumulus/sparql?query=PREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0AINSERT+DATA%0A%7B+%0A++%3Chttp%3A%2F%2Fexample%2Fbook1%3E+dc%3Atitle+%22Harry+Potter%22.%0A%7D

我做错了什么? CumulusRDF在Apache Cassandra DB的Docker中进行了调整。

1 个答案:

答案 0 :(得分:3)

在SPARQL中,查询不是更新。有两种不同的语言。

如果使用HTTP查询字符串,则content-type无关紧要。它应该是?update=

最好是使用HTTP正文中的更新进行POST并使用

Content-Type: application/sparql-update