我使用的是FUSEKI,现在改为OpenRDF / Sesame。
一切正常,我只有一个问题。 在一种方法中,我需要在模型中返回我的repositori的完整数据库。方法如下所示:
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合作。
答案 0 :(得分:1)
根据您的评论我收集到您正在使用Jena查询远程芝麻服务器(之前不清楚这是您正在做的事情,我最初认为您已经将自己的客户端代码切换为使用芝麻同样,但发布了错误/旧代码)。虽然这是一个稍微不同寻常的设置(大多数人使用Sesame Server也使用Sesame API实际查询/访问它),但它当然应该是可能的。
然而,显然,您使用的是Sesame SPARQL端点URL:
http://localhost:8080/openrdf-workbench/repositories/test
(假设您的存储库名为' test')。
这不是正确使用的网址。 应该:
http://localhost:8080/openrdf-sesame/repositories/test
注意区别:不是" openrdf- 工作台",但" openrdf- 芝麻"。
工作台是Sesame Server的客户端UI,不旨在用作SPARQL端点本身。如果你将它用于SELECT查询它显然有效的事实只是一个不幸的副作用。它不打算这样使用。