我正在尝试通过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中进行了调整。
答案 0 :(得分:3)
在SPARQL中,查询不是更新。有两种不同的语言。
如果使用HTTP查询字符串,则content-type无关紧要。它应该是?update=
。
最好是使用HTTP正文中的更新进行POST并使用
Content-Type: application/sparql-update