java - OpenRDF/Sesame 不提供模型

标签 java rdf sesame

我之前使用的是 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 服务器(之前不清楚您在做什么,我最初以为您已经将自己的客户端代码切换为使用 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 查询,它显然可以工作,但这只是一个不幸的副作用。它不打算这样使用。

关于java - OpenRDF/Sesame 不提供模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174615/

相关文章:

java - 错误: Could not find or load main class concurrency.主测试

java - 如何在 libgdx 中重用帧缓冲区纹理

rdf - 如何从 SPARQL 中的术语列表中获取基本术语关联

rdf - 在 Web 应用程序中实现语义搜索

java - allegro graph - 位于不同服务器上的联合存储库

switch-statement - SPARQL BIND 破坏了值?

web - OSGi 和芝麻与 OWLIM

java - 使用 Java 在 EPS 文件中添加元数据

java - 使用 pdfbox 2.0.8 时 block 类型无效

namespaces - "http://"或 "mailto:"是否被视为语义语言(如 RDF)中的命名空间?