0

我想通过 SPARQLs marmotta webservice 从 AngularJS 控制器执行 apache marmotta 的示例 SPARQL 查询。示例代码:

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:在默认HttpResponseTransform(http://localhost:63342/ws/)的fromJson( http ://localhost:63342/ws/app/script/angular.js:1075:14)的Object.parse(本机)的意外令牌q 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?

4

3 回答 3

0

因为 SPARQL 端点实际上位于http://localhost:8080/marmotta/sparql/select.

您应该在 Marmotta 的 SPARQL 模块中拥有该文档。

于 2015-07-01T10:36:07.083 回答
0

在流星平台中,它使用包“http”并调用 Apache Marmotta 的 Web 服务。

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);
});

于 2017-02-01T21:07:02.850 回答
0

我之前有同样的问题。但实际上我通过检查 apache marrmotta Web 应用程序生成的 ajax 请求找到了解决方案。这里适用于我的示例请求

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);
});

我认为主要问题是标题。

于 2016-06-15T04:24:26.377 回答