通过SPARQL通过来自节点js的HTTP POST请求插入数据

时间:2017-04-03 14:47:41

标签: node.js sparql ontology fuseki http-method

我在我的节点应用程序中使用'request'模块来在驻留在fuseki服务器中的本体模型中POST数据。我使用以下代码:

var request = require('request');
var querystring = require('querystring');

var myquery = querystring.stringify({update: "PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> INSERT { ?KPIs test:hasValue 2009} WHERE { ?KPIs test:hasValue ?Newvalue}"});


request.post('http://localhost:3030/DS-1/sparql?'+myquery, function (error, response, body) {
  if (!error && response.statusCode == 200) {
   // Show the HTML for the Google homepage.
console.log('successful update');
console.log(body);

  } else {
   console.log(response.statusCode);
   console.warn(error);
  }
});

PS:当我使用POSTMAN发送Post请求以插入数据时,它工作正常,但是从我的节点应用程序,它没有。它显示错误'错误请求400'。 P.S:GET方法在POSTMAN和节点应用程序中都能正常工作。

2 个答案:

答案 0 :(得分:0)

/DS-1/sparql是查询服务。

INSERT是一项更新操作。

尝试/DS-1/update

最好使用Content-type在请求正文中发布更新。 ?update=可能无效。

答案 1 :(得分:0)

解决问题: 我在发布请求的格式中犯了错误。更正后的格式如下。

&#13;
&#13;
var request = require('request');
var querystring = require('querystring');

var myquery2 = querystring.stringify({update: "PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> INSERT { ?KPI_Variables test:hasValue_ROB1 2000} WHERE { ?KPI_Variables test:hasValue_ROB1 ?Newvalue FILTER(?KPI_Variables= test:Actual_Production_Time)}"});

request.post({headers: {'content-type' : 'application/x-www-form-urlencoded'},url:'http://localhost:3030/DS-1/?'+myquery2 }, function (error, response, body) {
  if (!error && response.statusCode == 200) {
   // Show the HTML for the Google homepage.
console.log('successful update');
console.log(body);
  } 
  else
  {
   console.log(response.statusCode)
   console.warn(error);
  }
});
&#13;
&#13;
&#13;

我错过了标题&#39;和&#39; url&#39;我的request.post。

中的元素