我使用的是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查询,它显然可以工作的事实只是不幸的副作用。不应原样使用。