我注意到使用 RepositoryConnection 方法的add
实例化比通过使用 SPARQL 查询修改模型的实例化要慢。尽管存在差异,即使是 SPARQL 更新方法也需要很长时间来实例化(3.4 分钟到 10,000 个三元组)。多个insert
s(每个三元组一个查询)或一个大insert
查询的执行不会改变方法的性能。它仍然很慢。是否有另一种适合添加 100 万个三元组的方法,或者是否有任何特殊配置可以提供帮助?
RepositoryConnection 的代码
Repository myRepository = new HTTPRepository(serverURL, repositoryId);
myRepository.initialize();
RepositoryConnection con = myRepository.getConnection();
ValueFactory f = myRepository.getValueFactory();
i = 0;
j = 1000000;
while(i < j)(
URI event = f.createURI(ontologyIRI + "event"+i);
URI hasTimeStamp = f.createURI(ontologyIRI + "hasTimeStamp");
Literal timestamp = f.createLiteral(fields.get(0));
con.add(event, hasTimeStamp, timestamp);
i++
}
SPARQL 代码
Repository myRepository = new HTTPRepository(serverURL, repositoryId);
myRepository.initialize();
RepositoryConnection con = myRepository.getConnection();
i = 0;
j = 1000000;
while(i < j)(
query = "INSERT {";
query += "st:event"+i+" st:hasTimeStamp '"+fields.get(0)+"'^^<http://www.w3.org/2001/XMLSchema#float> .\n"
+ "}"
+ "WHERE { ?x ?y ?z }";
Update update = con.prepareUpdate(QueryLanguage.SPARQL, query);
update.execute();
i++;
}
我已经尝试过同步值等于 0 的 Sesame 存储库In Memory
的版本Native Store