我使用的是FUSEKI,现在更改为OpenRDF / Sesame。

一切正常,我只有一个问题。
在一种方法中,我需要在模型中取回我的存储库的完整数据库。该方法如下所示:

  private static Model getRepositoryModel() throws ResourceRepositoryException{
  String queryString = "DESCRIBE * WHERE {?r ?s ?p}";
  Model currentModel = QueryExecuter.executeSparqlDescribeQuery(queryString);
  return currentModel; }

public static Model executeSparqlDescribeQuery(String queryString) throws ResourceRepositoryException {
Model resultModel = null;
try{
  QueryExecution qe = QueryExecutionFactory.sparqlService(SESAME_SERVICE_QUERY, queryString);
  resultModel = qe.execDescribe();
} catch(QueryExceptionHTTP | QueryParseException e){
  throw new ResourceRepositoryException(e.getMessage());
}
correctNsPrefixes(resultModel);
return resultModel;}


但是我实际上并没有找回模型。但是在SPARQL中,如果调用此方法,则必须取回一个。它还与FUSEKI合作。

最佳答案

从您的评论中,我发现您正在使用Jena来查询远程Sesame Server(之前不清楚这是您在做什么,我起初以为您也切换了自己的客户端代码以使用Sesame,但已经发布了错误/旧代码)。尽管这是一个有点非常规的设置(大多数使用Sesame Server的人也使用Sesame API来实际查询/访问它),但肯定应该可行。

但是,显然,您使用的是这样的东西作为Sesame SPARQL端点URL:

http://localhost:8080/openrdf-workbench/repositories/test


(假设您的存储库名为“测试”)。

这不是正确的URL。它应该是:

http://localhost:8080/openrdf-sesame/repositories/test


注意区别:不是“ openrdf-workbench”,而是“ openrdf-芝麻”。

该工作台是Sesame Server的客户端UI,不应用作SPARQL端点本身。如果将其用于SELECT查询,它显然可以工作的事实只是不幸的副作用。不应原样使用。

08-06 19:49