如何加快删除所有确定类型的RDF主题?

时间:2015-03-21 19:31:41

标签: rdf sparql jena

我正在使用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分钟。如何更有效地解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如@ AndyS&#39;注释,将容器从ArrayList更改为LinkedList使其在几秒钟内执行。但是,它需要将Java堆空间变大。