我使用的是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。
发布于 2015-01-28 08:37:08
从您的评论中,我推测您正在使用Jena查询远程Sesame服务器(之前并不清楚您正在做什么,我最初认为您已经将自己的客户端代码转换为使用Sesame,但发布了错误的/旧的代码)。虽然这是一个稍微非常规的设置(大多数使用Sesame Server的人也使用Sesame API来实际查询/访问它),但它肯定是可能的。
但是,很明显,您正在使用类似以下内容的内容作为Sesame SPARQL端点URL:
http://localhost:8080/openrdf-workbench/repositories/test (假设您的存储库名为'test')。
这不是要使用的正确URL。它应该是:
http://localhost:8080/openrdf-sesame/repositories/test 注意不同之处:不是"openrdf-workbench",而是"openrdf-sesame".
工作台是Sesame Server的客户端UI,它不打算用作SPARQL端点本身。如果您将它用于SELECT查询,那么它显然是有效的,这只是一个不幸的副作用。它的目的不是这样使用的。
https://stackoverflow.com/questions/28174615
复制相似问题