Example usage for org.apache.commons.rdf.api Dataset stream

List of usage examples for org.apache.commons.rdf.api Dataset stream

Introduction

In this page you can find the example usage for org.apache.commons.rdf.api Dataset stream.

Prototype

@Override
Stream<? extends Quad> stream();

Source Link

Document

Get all quads contained by the dataset.

The iteration does not contain any duplicate quads, as determined by the Quad#equals(Object) method for each Quad .

Usage

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);
}