我想将现有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插入数据。
答案 0 :(得分:1)
首先,打开RepositoryConnnection
到两个存储库:
RepositoryConnection source = sourceRepo.getConnection();
RepositoryConnection target = targetRepo.getConnection();
然后,阅读source
中的所有语句并立即插入target
:
target.add(source.getStatements(null, null, null, true));
基本方法应该适用于任何大小约为几百万三倍的存储库。当然,对于更大的体积尺寸,有许多更先进的方法。