将Sesame存储库复制到新存储库中

时间:2015-07-08 05:48:42

标签: sparql owl sesame owlim

我想将现有Sesame存储库中的所有数据复制到新存储库中。我需要迁移,以便在我的triplestore上使用OWL-inferencing,这在内存存储库(现有存储库的类型)中使用OWLIM是不可能的。

将所有三元组从存储库复制到新存储库的最有效方法是什么?

更新1:

我很想知道为什么使用SPARQL INSERT不能成为一种有效的方法。我在新存储库的SPARQL Update部分尝试了此代码:

PREFIX : <http://dbpedia.org/resource/>
INSERT{?s ?p ?o} 
WHERE 
{ 
SERVICE <http://my.ip.ad.here:8080/openrdf-workbench/repositories/rep_name>
{ 
?s ?p ?o 
} 
}

我收到以下错误:

org.openrdf.query.UpdateExecutionException: org.openrdf.sail.SailException: org.openrdf.query.QueryEvaluationException:

查询中是否有错误,或者数据不能以这种方式插入?我使用类似结构的查询从DBpedia插入数据。

1 个答案:

答案 0 :(得分:1)

手动(工作台)

  1. 从中打开要复制的存储库。
  2. 选择“导出”。
  3. 选择合适的导出格式('TriG'或'BinaryRDF'是很好的选择,因为它们都保留了上下文信息),然后点击'下载'按钮将数据导出保存到本地磁盘。
  4. 打开要将复制到的存储库。
  5. 选择“添加”。
  6. 选择“选择包含您要上传的RDF数据的文件”
  7. 单击“浏览”以在本地磁盘上查找数据导出文件。
  8. 确保“使用基本URI作为上下文标识符”被选中。
  9. 点击'上传',然后坐下来。
  10. 编程

    首先,打开RepositoryConnnection到两个存储库:

    RepositoryConnection source = sourceRepo.getConnection();
    RepositoryConnection target = targetRepo.getConnection();
    

    然后,阅读source中的所有语句并立即插入target

    target.add(source.getStatements(null, null, null, true)); 
    

    基本方法应该适用于任何大小约为几百万三倍的存储库。当然,对于更大的体积尺寸,有许多更先进的方法。