List of usage examples for org.apache.commons.rdf.api Dataset stream
@Override
Stream<? extends Quad> stream();
The iteration does not contain any duplicate quads, as determined by the Quad#equals(Object) method for each Quad .
From source file:org.trellisldp.test.ResourceServiceTests.java
/** * Test adding immutable data.// w ww . j a va 2 s. com * @throws Exception if the operation failed */ @Test @DisplayName("Test adding immutable data") default void testAddImmutableData() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset0 = buildDataset(identifier, "Immutable Resource Test", SUBJECT2); assertDoesNotThrow( () -> getResourceService().create(Metadata.builder(identifier).interactionModel(LDP.RDFSource) .container(ROOT_CONTAINER).build(), dataset0).toCompletableFuture().join(), "Check the successful creation of an LDP-RS"); final IRI audit1 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset1 = rdf.createDataset(); dataset1.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit1); dataset1.add(Trellis.PreferAudit, audit1, type, PROV.Activity); dataset1.add(Trellis.PreferAudit, audit1, type, AS.Create); dataset1.add(Trellis.PreferAudit, audit1, PROV.atTime, rdf.createLiteral(now().toString(), XSD.dateTime)); assertDoesNotThrow(() -> getResourceService().add(identifier, dataset1).toCompletableFuture().join(), "Check the successful addition of audit quads"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the audit stream", res.stream(Trellis.PreferAudit).map(toQuad(Trellis.PreferAudit)) .map(q -> () -> assertTrue(dataset1.contains(q), "Check that the audit stream includes: " + q))); assertEquals(4L, res.stream(Trellis.PreferAudit).count(), "Check the audit triple count"); final IRI audit2 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset2 = rdf.createDataset(); dataset2.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit2); dataset2.add(Trellis.PreferAudit, audit2, type, PROV.Activity); dataset2.add(Trellis.PreferAudit, audit2, type, AS.Update); dataset2.add(Trellis.PreferAudit, audit2, PROV.atTime, rdf.createLiteral(now().toString(), XSD.dateTime)); assertDoesNotThrow(() -> getResourceService().add(identifier, dataset2).toCompletableFuture().join(), "Check that audit triples are added successfully"); final Resource res2 = getResourceService().get(identifier).toCompletableFuture().join(); final Dataset combined = rdf.createDataset(); dataset1.stream().forEach(combined::add); dataset2.stream().forEach(combined::add); assertAll("Check the audit stream", res2.stream(Trellis.PreferAudit).map(toQuad(Trellis.PreferAudit)) .map(q -> () -> assertTrue(combined.contains(q), "Check that the audit stream includes: " + q))); assertEquals(8L, res2.stream(Trellis.PreferAudit).count(), "Check the audit triple count"); }
From source file:org.trellisldp.triplestore.TriplestoreResourceService.java
/** * This is equivalent to the SPARQL below. * * <p><pre><code>//from w ww. j a v a 2s.c o m * DELETE WHERE { GRAPH IDENTIFIER { ?s ?p ?o } }; * DELETE WHERE { GRAPH IDENTIFIER?ext=acl { ?s ?p ?o } }; * DELETE WHERE { GRAPH trellis:PreferServerManaged { * IDENTIFIER a ldp:NonRDFSource . * IDENTIFIER dc:hasPart ?s . * ?s ?p ?o . * }; * DELETE WHERE { GRAPH trellis:PreferServerManaged { IDENTIFIER ?p ?o } }; * INSERT DATA { * GRAPH IDENTIFIER { ... } * GRAPH IDENTIFIER?ext=acl { ... } * GRAPH trellis:PreferServerManaged { ... } * GRAPH IDENTIFIER?ext=audit { ... } * } * </code></pre></p> */ private UpdateRequest buildUpdateRequest(final IRI identifier, final Literal time, final Dataset dataset, final OperationType type) { // Set the time dataset.add(PreferServerManaged, identifier, DC.modified, time); final UpdateRequest req = new UpdateRequest(); req.add(new UpdateDeleteWhere( new QuadAcc(singletonList(new Quad(rdf.asJenaNode(identifier), SUBJECT, PREDICATE, OBJECT))))); req.add(new UpdateDeleteWhere( new QuadAcc(singletonList(new Quad(getAclIRI(identifier), SUBJECT, PREDICATE, OBJECT))))); req.add(new UpdateDeleteWhere(new QuadAcc(asList( new Quad(rdf.asJenaNode(PreferServerManaged), rdf.asJenaNode(identifier), rdf.asJenaNode(RDF.type), rdf.asJenaNode(LDP.NonRDFSource)), new Quad(rdf.asJenaNode(PreferServerManaged), rdf.asJenaNode(identifier), rdf.asJenaNode(DC.hasPart), SUBJECT), new Quad(rdf.asJenaNode(PreferServerManaged), SUBJECT, PREDICATE, OBJECT))))); req.add(new UpdateDeleteWhere(new QuadAcc(singletonList( new Quad(rdf.asJenaNode(PreferServerManaged), rdf.asJenaNode(identifier), PREDICATE, OBJECT))))); final QuadDataAcc sink = new QuadDataAcc(synchronizedList(new ArrayList<>())); if (type == OperationType.DELETE) { dataset.stream().filter(q -> q.getGraphName().filter(PreferServerManaged::equals).isPresent()) .map(rdf::asJenaQuad).forEach(sink::addQuad); } else { dataset.stream().filter(q -> q.getGraphName().filter(PreferServerManaged::equals).isPresent()) .map(rdf::asJenaQuad).forEach(sink::addQuad); dataset.getGraph(PreferUserManaged).ifPresent(g -> g.stream() .map(t -> new Quad(rdf.asJenaNode(identifier), rdf.asJenaTriple(t))).forEach(sink::addQuad)); dataset.getGraph(PreferAccessControl).ifPresent(g -> g.stream() .map(t -> new Quad(getAclIRI(identifier), rdf.asJenaTriple(t))).forEach(sink::addQuad)); dataset.getGraph(PreferAudit).ifPresent(g -> g.stream() .map(t -> new Quad(getAuditIRI(identifier), rdf.asJenaTriple(t))).forEach(sink::addQuad)); } req.add(new UpdateDataInsert(sink)); return req; }
From source file:org.trellisldp.triplestore.TriplestoreUtils.java
/** * TODO Replace when COMMONSRDF-74 is released. * * @param dataset a Commons RDF {@link Dataset} * @return a Jena {@link org.apache.jena.query.Dataset} *///from ww w. j a v a 2 s . c o m public static org.apache.jena.query.Dataset asJenaDataset(final Dataset dataset) { final DatasetGraph dsg; if (dataset instanceof JenaDataset) { dsg = ((JenaDataset) dataset).asJenaDatasetGraph(); } else { dsg = DatasetGraphFactory.createGeneral(); dataset.stream().map(rdf::asJenaQuad).forEach(dsg::add); } return wrap(dsg); }