我正在使用我的节点应用程序中的'请求'模块来将数据置于驻留在fuseki服务器中的本体模型中。我使用下面的代码:通过SPARQL通过来自节点j的HTTP 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:当我使用邮递员发送POST请求,将数据插入它工作正常,但是从我的节点的应用程序,它没有。它显示错误'错误请求400'。 P:GET方法从POSTMAN和节点应用都能正常工作。
我的猜测是服务器正在寻找表单数据而不是查询参数,在Postman中,你在发送POST请求时如何发送它?也可能值得在'myquery'上做一个'console.log'来查看它是否正确。 – BenShelton
在Postman中,查询类似于POST方法:: http:// localhost:3030/DS-1 /?update = PREFIX + test%3A%3Chttp%3A%2F%2Fwww.semanticweb.org%2Fmuhammad%2Fontologies %2F2017%2F2%2Funtitled-本体的14%23%3E%0D%0AINSERT +%7B +%3FKPIs +试验%3AhasValue + 11%7D%0D%0AWHERE%0D%0A ++%7B +%3FKPIs +试验%3AhasValue +%3FNewvalue%7D 。 P.s:我已经在节点应用中尝试过这种格式,但它不起作用,并且是'myquery'是正确组成的,我已经检查过它,并且我也尝试过直接将网址像上面那样。 –