private void verbModel(Model model, String verb) { Model m = ModelFactory.createDefaultModel(); int testLimit = 1000; StmtIterator stmtIt = model.listStatements(); int count = 0; try { while (stmtIt.hasNext()) { count++; m.add(stmtIt.nextStatement()); if (count % testLimit == 0 || !stmtIt.hasNext()) { StringWriter sw = new StringWriter(); m.write(sw, "N-TRIPLE"); StringBuffer updateStringBuff = new StringBuffer(); String graphURI = graph.getGraphURI(); updateStringBuff.append( verb + " DATA { " + ((graphURI != null) ? "GRAPH <" + graphURI + "> { " : "")); updateStringBuff.append(sw); updateStringBuff.append(((graphURI != null) ? " } " : "") + " }"); String updateString = updateStringBuff.toString(); // log.info(updateString); graph.executeUpdate(updateString); m.removeAll(); } } } finally { stmtIt.close(); } }
@Override public void delete(Graph g) { Model[] model = separateStatementsWithBlankNodes(g); deleteModel(model[1] /*statements without blank nodes*/); // replace blank nodes in remaining statements with variables StringBuffer patternBuff = new StringBuffer(); Iterator<Triple> tripIt = g.find(null, null, null); while (tripIt.hasNext()) { Triple t = tripIt.next(); patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getSubject(), null)); patternBuff.append(" "); patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getPredicate(), null)); patternBuff.append(" "); patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getObject(), null)); patternBuff.append(" .\n"); } StringBuffer queryBuff = new StringBuffer(); String graphURI = graph.getGraphURI(); queryBuff.append( "DELETE { " + ((graphURI != null) ? "GRAPH <" + graphURI + "> { " : "") + " \n"); queryBuff.append(patternBuff); if (graphURI != null) { queryBuff.append(" } \n"); } queryBuff.append("} WHERE { \n"); if (graphURI != null) { queryBuff.append(" GRAPH <" + graphURI + "> { \n"); } queryBuff.append(patternBuff); if (graphURI != null) { queryBuff.append(" } \n"); } queryBuff.append("} \n"); log.debug(queryBuff.toString()); graph.executeUpdate(queryBuff.toString()); }