private void addAll(QuadAcc acc, List<Quad> quads) { for (Quad q : quads) acc.addQuad(q) ; }
public List<Quad> getInsertQuads() { return insertPattern.getQuads() ; }
@Test public void testModify1() { DatasetGraph gStore = getEmptyDatasetGraph() ; defaultGraphData(gStore, data2()) ; namedGraphData(gStore, graphIRI, Factory.createDefaultGraph()) ; UpdateModify modify = new UpdateModify() ; Element element = QueryFactory.createElement("{ ?s <http://example/p> ?o }" ) ; modify.setElement(element) ; modify.getInsertAcc().addQuad(new Quad(graphIRI, triple1)) ; modify.getDeleteAcc().addTriple(SSE.parseTriple("(?s <http://example/p> ?o)")) ; modify.getDeleteAcc().addQuad(SSE.parseQuad("(<http://example/graph> ?s <http://example/p> ?o)")) ; UpdateAction.execute(modify, gStore) ; assertFalse(graphEmpty(gStore.getGraph(graphIRI))) ; assertTrue(graphEmpty(gStore.getDefaultGraph())) ; assertTrue(graphContains(gStore.getGraph(graphIRI), triple1)) ; }
public static Iterator<Diff<Set<Quad>>> createIteratorDiff(QueryExecutionFactory qef, UpdateDeleteWhere update, int batchSize) { UpdateModify tmp = new UpdateModify(); QuadAcc acc = tmp.getDeleteAcc(); for(Quad quad : update.getQuads()) { acc.addQuad(quad); } Element element = QuadUtils.toElement(acc.getQuads()); tmp.setElement(element); Iterator<Diff<Set<Quad>>> result = createIteratorDiff(qef, tmp, batchSize); return result; }
@Test public void testDelete2() { DatasetGraph gStore = getEmptyDatasetGraph() ; defaultGraphData(gStore, graph1) ; QuadAcc acc = new QuadAcc() ; UpdateDeleteWhere delete = new UpdateDeleteWhere(acc) ; acc.addTriple(SSE.parseTriple("(?s ?p ?o)")) ; UpdateAction.execute(delete, gStore) ; assertTrue("Not empty", graphEmpty(gStore.getDefaultGraph())) ; }
@Test public void testInsert2() { DatasetGraph gStore = getEmptyDatasetGraph() ; UpdateModify insert = new UpdateModify() ; insert.getInsertAcc().addTriple(triple1) ; UpdateAction.execute(insert, gStore) ; assertTrue(graphContains(gStore.getDefaultGraph(), triple1)) ; }
@Test public void testModifyInitialBindings() { DatasetGraph gStore = getEmptyDatasetGraph() ; defaultGraphData(gStore, data12()) ; namedGraphData(gStore, graphIRI, Factory.createDefaultGraph()) ; Binding initialBinding = BindingFactory.binding(Var.alloc("o"), o1) ; UpdateModify modify = new UpdateModify() ; Element element = QueryFactory.createElement("{ ?s <http://example/p> ?o }" ) ; modify.setElement(element) ; modify.getInsertAcc().addQuad(new Quad(graphIRI, triple1)) ; modify.getDeleteAcc().addTriple(SSE.parseTriple("(?s <http://example/p> ?o)")) ; modify.getDeleteAcc().addQuad(SSE.parseQuad("(<http://example/graph> ?s <http://example/p> ?o)")) ; UpdateAction.execute(modify, gStore, initialBinding) ; assertFalse(graphEmpty(gStore.getGraph(graphIRI))) ; assertFalse(graphEmpty(gStore.getDefaultGraph())) ; assertTrue(graphContains(gStore.getGraph(graphIRI), triple1)) ; assertTrue(graphContains(gStore.getDefaultGraph(), triple2)) ; assertFalse(graphContains(gStore.getDefaultGraph(), triple1)) ; }
/** * This code is equivalent to the SPARQL query below. * * <p><pre><code> * WITH trellis:PreferServerManaged * DELETE { IDENTIFIER dc:modified ?time } * INSERT { IDENTIFIER dc:modified TIME } * WHERE { IDENTIFIER dc:modified ?time } . * </code></pre></p> */ private UpdateRequest buildUpdateModificationRequest(final IRI identifier, final Literal time) { final UpdateRequest req = new UpdateRequest(); final Var modified = Var.alloc(MODIFIED); final UpdateDeleteInsert modify = new UpdateDeleteInsert(); modify.setWithIRI(rdf.asJenaNode(PreferServerManaged)); modify.getDeleteAcc().addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), modified)); modify.getInsertAcc().addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), rdf.asJenaNode(time))); final ElementGroup eg = new ElementGroup(); final ElementPathBlock epb = new ElementPathBlock(); epb.addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), modified)); eg.addElement(epb); modify.setElement(eg); req.add(modify); return req; }
/** * Create a DeleteWhere from the where clause. * @return a DeleteWhere update. */ public UpdateDeleteWhere buildDeleteWhere() { QuadAcc quadAcc = new QuadAcc( whereProcessor.getQuads().toList() ); return new UpdateDeleteWhere( quadAcc ); }
private void addAll(QuadAcc acc, List<Quad> quads) { for (Quad q : quads) acc.addQuad(q) ; }
@Test public void testModify2() { // Use blank nodes (will expose any problems in serialization when spill occurs) Triple t = new Triple(org.apache.jena.graph.NodeFactory.createBlankNode(),p,o2); DatasetGraph gStore = getEmptyDatasetGraph() ; // Set the threshold to in order to force spill to disk gStore.getContext().set(ARQ.spillToDiskThreshold, 0L) ; defaultGraphData(gStore, data(t)) ; namedGraphData(gStore, graphIRI, data(t)); UpdateModify modify = new UpdateModify() ; Element element = QueryFactory.createElement("{ ?s <http://example/p> ?o }" ) ; modify.setElement(element) ; modify.getInsertAcc().addQuad(new Quad(graphIRI, triple1)) ; modify.getDeleteAcc().addTriple(SSE.parseTriple("(?s <http://example/p> ?o)")) ; modify.getDeleteAcc().addQuad(SSE.parseQuad("(<http://example/graph> ?s <http://example/p> ?o)")) ; UpdateAction.execute(modify, gStore) ; assertFalse(graphEmpty(gStore.getGraph(graphIRI))) ; assertTrue(graphEmpty(gStore.getDefaultGraph())) ; assertTrue(graphContains(gStore.getGraph(graphIRI), triple1)) ; assertFalse(graphContains(gStore.getGraph(graphIRI), t)); }
/** * This code is equivalent to the SPARQL query below. * * <p><pre><code> * WITH trellis:PreferServerManaged * DELETE { IDENTIFIER dc:modified ?time } * INSERT { IDENTIFIER dc:modified TIME } * WHERE { IDENTIFIER dc:modified ?time } . * </code></pre></p> */ private UpdateRequest buildUpdateModificationRequest(final IRI identifier, final Literal time) { final UpdateRequest req = new UpdateRequest(); final Var modified = Var.alloc(MODIFIED); final UpdateDeleteInsert modify = new UpdateDeleteInsert(); modify.setWithIRI(rdf.asJenaNode(PreferServerManaged)); modify.getDeleteAcc().addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), modified)); modify.getInsertAcc().addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), rdf.asJenaNode(time))); final ElementGroup eg = new ElementGroup(); final ElementPathBlock epb = new ElementPathBlock(); epb.addTriple(triple(rdf.asJenaNode(identifier), rdf.asJenaNode(DC.modified), modified)); eg.addElement(epb); modify.setElement(eg); req.add(modify); return req; }
public List<Quad> getDeleteQuads() { return deletePattern.getQuads() ; }
/** * Create a DeleteWhere from the where clause. * @return a DeleteWhere update. */ public UpdateDeleteWhere buildDeleteWhere() { QuadAcc quadAcc = new QuadAcc( whereProcessor.getQuads().toList() ); return new UpdateDeleteWhere( quadAcc ); }
public static UpdateDeleteInsert createUpdateRename(Node before, Node after, int i) { Node[] deleteTerms = { Quad.defaultGraphIRI, Vars.s, Vars.p, Vars.o }; deleteTerms[i] = before; Quad deleteQuad = QuadUtils.arrayToQuad(deleteTerms); Node[] insertTerms = { Quad.defaultGraphIRI, Vars.s, Vars.p, Vars.o }; insertTerms[i] = after; Quad insertQuad = QuadUtils.arrayToQuad(insertTerms); UpdateDeleteInsert result = new UpdateDeleteInsert(); result.getDeleteAcc().addQuad(deleteQuad); result.getInsertAcc().addQuad(insertQuad); result.setElement(ElementUtils.createElement(deleteQuad)); return result; }
@Test public void testInsert4() { DatasetGraph gStore = getEmptyDatasetGraph() ; defaultGraphData(gStore, graph1) ; UpdateModify insert = new UpdateModify() ; insert.getInsertAcc().addTriple(SSE.parseTriple("(?s <http://example/p> 1066)")) ; Element element = QueryFactory.createElement("{ ?s <http://example/p> 2007 }" ) ; insert.setElement(element) ; UpdateAction.execute(insert, gStore) ; assertTrue(graphContains(gStore.getDefaultGraph(), triple2)) ; }
public List<Quad> getQuads() { return pattern.getQuads() ; }
@Override public void visit(UpdateDeleteWhere update) { List<Quad> quads = update.getQuads() ; List<Quad> quads2 = transform(quads) ; if ( quads == quads2 ) result = update ; else { QuadAcc acc = new QuadAcc() ; addAll(acc, quads2) ; result = new UpdateDeleteWhere(acc) ; } }