Как использовать Apache Marmotta SPARQL веб-сервис API с AngularJS?
Я хочу выполнить пример запроса SPARQL для apm marmotta с контроллера AngularJS через веб-сервис SPARQLs marmotta. Образец кода:
var url = "http://localhost:8080/marmotta/";
var query = "SELECT * WHERE { ?subject ?property ?object }"
$http.post(url+"sparql/select",{
'output': "json",
'query': query
} ).then(function(data){
$scope.hello = data;
}).catch(function(error){
alert(error);
});
Я получаю "запрос не поддерживается", затем 500 SyntaxError:
SyntaxError: неожиданный токен q в Object.parse (нативный) в fromJson ( http://localhost:63342/ws/app/script/angular.js:1075:14) в defaultHttpResponseTransform ( http://localhost:63342/ws/app/script/angular.js:8650:16) на http://localhost:63342/ws/app/script/angular.js:8735:12 на forEach ( http://localhost:63342/ws/app/script/angular.js:326:20) в transformData ( http://localhost:63342/ws/app/script/angular.js:8734:3) в transformResponse ( http://localhost:63342/ws/app/script/angular.js:9464:23) в processQueue ( http://localhost:63342/ws/app/script/angular.js:13292:27) в http://localhost:63342/ws/app/script/angular.js:13308:27 в Scope. $ get.Scope. $ eval ( http://localhost:63342/ws/app/script/angular.js:14547:28)
Или когда я использую такой код:
var url = "http://localhost:8080/marmotta/";
var query = "SELECT * WHERE { ?subject ?property ?object }";
$http.get(url+"sparql/select/query="+query+"&output='json'")
.then(function(data){
$scope.hello = data;
}).catch(function(error){
$scope.hello = error.stack;
});
Я получаю 404. Есть идеи, как правильно использовать SPARQL WS API?
3 ответа
Поскольку конечная точка SPARQL фактически расположена в http://localhost:8080/marmotta/sparql/select
,
Вы должны иметь эту документацию в модуле SPARQL в Marmotta.
В метеорном платформе он работает, используя пакет "http" и вызывая веб-сервис Apache Marmotta.
HTTP.call("GET", "http://IP:8080/sparql/select", {
params: {
"query": "select * where {?s ?p ?o } limit 10",
"output": "xml"
}
}, function(error, result) {
console.log(result);
});
У меня была такая же проблема ранее. Но на самом деле я нашел решение, проверив ajax-запрос, сгенерированный веб-приложением apache marrmotta. Вот пример запроса, который работает для меня
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:8080/marmotta/sparql/select",
"method": "POST",
"headers": {
"content-type": "application/sparql-query;charset=UTF-8",
"accept": "application/sparql-results+json"
},
"data": "SELECT * WHERE { ?s ?p ?o } LIMIT 10"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Я думаю, что главная проблема - заголовки.