Refine search
@Override protected Node[] getNodes(QuadWritable tuple) { Quad q = tuple.get(); if (q.isDefaultGraph()) { return new Node[] { q.getSubject(), q.getPredicate(), q.getObject() }; } else { return new Node[] { q.getSubject(), q.getPredicate(), q.getObject(), q.getGraph() }; } }
@Override public void addTriple(int index, Triple triple) { check(triple) ; quads.add(index, new Quad(graphNode, triple)) ; }
private static ExtendedIterator<Triple> quadsToTriples(DatasetGraph dsg, Node graphName, Triple m) { Iterator<Quad> qIter = dsg.findNG(graphName, m.getSubject(), m.getPredicate(), m.getObject()); Iterator<Triple> tIter = Iter.map(qIter, quad->quad.asTriple()); return WrappedIterator.createNoRemove(tIter) ; }
/** * Quad filter to reflect the security policy of this {@link SecurityContextAllowNamedGraphs}. It is * better to call {@link #createQueryExecution(Query, DatasetGraph)} which may be more * efficient. */ @Override public Predicate<Quad> predicateQuad() { return q-> ! Quad.isDefaultGraph(q.getGraph()); } }
@Override public void quad(Quad quad) { if ( quad.isTriple() ) dsg.add(Quad.defaultGraphNodeGenerated, quad.getSubject(), quad.getPredicate(), quad.getObject()) ; else dsg.add(quad) ; }
@Override protected QuadWritable createValue(int i) { return new QuadWritable(new Quad(Quad.defaultGraphNodeGenerated, new Triple( NodeFactory.createURI("http://subjects/" + i), NodeFactory.createURI("http://predicate"), NodeFactory.createLiteral(Integer.toString(i), XSDDatatype.XSDinteger)))); } }
@Override protected final boolean accepts(TKey key, QuadWritable tuple) { Quad q = tuple.get(); return (q.getGraph().isURI() || q.getGraph().isBlank()) && (q.getSubject().isURI() || q.getSubject().isBlank()) && q.getPredicate().isURI() && (q.getObject().isURI() || q.getObject().isBlank() || q.getObject().isLiteral()); }
@Override protected boolean accepts(Object key, QuadWritable tuple) { Quad q = tuple.get(); if (!q.isConcrete()) return false; // Ground if all nodes are URI/Literal return (q.getGraph().isURI() || q.getGraph().isLiteral()) && (q.getSubject().isURI() || q.getSubject().isLiteral()) && (q.getPredicate().isURI() || q.getPredicate().isLiteral()) && (q.getObject().isURI() || q.getObject().isLiteral()); }
@Override public Quad apply(Triple triple) { return new Quad( defaultGraph, AbstractQueryBuilder.checkVar( triple.getSubject()), AbstractQueryBuilder.checkVar( triple.getPredicate()), AbstractQueryBuilder.checkVar( triple.getObject())); } };
@Override protected NodeWritable[] getNodes(QuadWritable tuple) { Node object = tuple.get().getObject(); if (!object.isLiteral()) return EMPTY; String dtUri = object.getLiteralDatatypeURI(); if (dtUri == null) return EMPTY; return new NodeWritable[] { new NodeWritable(NodeFactory.createURI(dtUri)) }; } }
@Test public void unionGraphWorksProperly() { DatasetGraph dsg = emptyDataset(); // quads from named graphs should appear in union Quad q = Quad.create(createBlankNode(), createBlankNode(), createBlankNode(), createBlankNode()); dsg.add(q); // Expected in the union graph Quad q2 = Quad.create(unionGraph, q.asTriple()); assertTrue(iter(dsg.find(unionGraph, ANY, ANY, ANY)).some(q2::equals)); // no triples from default graph should appear in union Triple t = Triple.create(createBlankNode(), createBlankNode(), createBlankNode()); dsg.getDefaultGraph().add(t); assertFalse(iter(dsg.find(unionGraph, ANY, ANY, ANY)).some(Quad::isDefaultGraph)); }
@Test public void deleteAny_01() { DatasetGraph dsg = emptyDataset() ; Node subject = NodeFactory.createURI("http://example/s"); Node predicate = NodeFactory.createURI("http://example/p"); Node object = NodeFactory.createBlankNode(); dsg.add(new Quad(Quad.defaultGraphIRI, subject, predicate, object)); dsg.deleteAny(Node.ANY, subject, null, null); }
@Override protected QuadWritable createValidValue(int i) { return new QuadWritable( new Quad(Quad.defaultGraphNodeGenerated, NodeFactory.createURI("http://subjects/" + i), NodeFactory.createURI("http://predicate"), NodeFactory.createLiteral(Integer.toString(i), XSDDatatype.XSDinteger))); }
@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)); }
@Test public void find_union_01() { List<Quad> x = toList(dsg.find(Quad.unionGraph, null, null, null)) ; assertEquals(3, x.size()) ; x.stream().allMatch(q->q.getGraph().equals(Quad.unionGraph)) ; List<Triple> z = x.stream().map(Quad::asTriple).collect(Collectors.toList()) ; assertTrue(z.contains(q4.asTriple())) ; assertTrue(z.contains(q5.asTriple())) ; Quad qx = Quad.create(Quad.unionGraph, q4.asTriple()) ; assertTrue(x.contains(qx)) ; Quad qz = Quad.create(Quad.unionGraph, q2.asTriple()) ; assertFalse(x.contains(qz)) ; }
@Test public void graph_txn_3() { Node gn = SSE.parseNode(":gn"); Graph g = dsg.getGraph(gn); Triple t = SSE.parseTriple("(:S :P :O)"); Quad q = Quad.create(gn, t); g.getTransactionHandler().execute(()->g.add(t)); g.getTransactionHandler().execute(()->{ Assert.assertTrue(g.contains(t)); dsg.contains(q); }); } }
private static Iterator<Triple> projectQuadsToTriples(Node graphNode, Iterator<Quad> iter) { // Checking. Function<Quad, Triple> f = (q) -> { if ( graphNode != null && !q.getGraph().equals(graphNode) ) throw new InternalError("projectQuadsToTriples: Quads from unexpected graph (expected=" + graphNode + ", got=" + q.getGraph() + ")"); return q.asTriple(); }; // Without checking //Function<Quad, Triple> f = (q) -> q.asTriple(); return Iter.map(iter, f); }