我正在使用Jena执行以下代码来删除涉及类型为ItemDespesa
的主题的所有语句:
StmtIterator it = m.listStatements(null, ResourceFactory.createProperty(RDF("type")), ResourceFactory.createResource(LOA("ItemDespesa")));
ArrayList l = new ArrayList<Statement>();
while (it.hasNext()) {
Statement n = it.nextStatement();
StmtIterator it2 = m.listStatements(n.getSubject(), null, (RDFNode)null);
while (it2.hasNext()) l.add(it2.nextStatement());
}
m.remove(l);
...我想这相当于以下SPARQL:
DELETE WHERE {
?x rdf:type loa:ItemDespesa
?x ?y ?z
}
但是,在具有5.342.213元组的数据库中执行大约需要15分钟。如何更有效地解决这个问题?
答案 0 :(得分:0)
正如@ AndyS&#39;注释,将容器从ArrayList
更改为LinkedList
使其在几秒钟内执行。但是,它需要将Java堆空间变大。