从Angular发送SPARQL更新查询到Graphdb

时间:2019-03-21 19:38:55

标签: angular curl insert sparql graphdb

我正尝试从ANGULAR Web应用程序(打字稿)开始向Graphdb实例发送UPDATE(插入)。因此,我需要创建一个HTTP GET请求,但是我无法解决如何在ANGULAR应用程序中正确格式化该HTTP请求。大多数在线教程都使用.JSON文件来获取/发布数据,而不是使用RDF图。

我希望通过'curl'做到这一点,并以某种方式从angular内启动curl命令,但我什至无法使curl命令在我自己的控制台中工作。我遵循了这个Guide并筛选了stackoverflow的答案,直到我进入针对graphDB的SPARQL UPDATE的以下命令:

curl -G -H "Accept:application/x-trig" 
-d update=INSERT+DATA+%7B%3Chttp%3A%2F%2Fexample%2F3aan%3E+dc%3Atitle+%22pullnaam%22%7D+
http://localhost:7200/repositories/myrepository/statements

当我执行此命令时,控制台将返回图形内的所有资源/节点,但实际上不会执行curl命令内的更新。

任何帮助将不胜感激,如果我忘了添加一些重要内容,我向您致歉。我正在测试curl命令的更多变体,希望很快编辑这个问题。

谢谢!

编辑:工作curl命令是:

curl -X POST -G -H "Accept:application/x-trig" -d
update=INSERT+DATA+%7B%3Chttp%3A%2F%2Fexample%2F4aan%3E+dc%3Atitle+%22pullnaam%22%7D+ 
http://localhost:7200/repositories/myrepository/statements

编辑:打字稿/角度内的有效POST命令为:

function(event){
const body = "update=INSERT+DATA+%7B%3Chttp%3A%2F%2Fexample%2Ftesteroo%3E+dc%3Atitle+%22pullnaam%22%7D+";
const headers = new HttpHeaders().set('Accept', 'application/x-trig').set('Content-Type','application/x-www-form-urlencoded');
let options = { headers:HttpHeaders};
var url = "http://128.199.58.129:7200/repositories/repo/statements";
return this.http.post(url,body,{headers:headers}).toPromise().then(function(response) { console.log(response.toString())});
}

1 个答案:

答案 0 :(得分:2)

您正在返回语句,因为您正在对/statements资源执行GET请求。 SPARQL更新是POST请求。您需要在卷曲请求中添加-X POST