List of usage examples for org.apache.commons.rdf.api Dataset add
void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object);
From source file:org.trellisldp.test.MementoResourceTests.java
/** * Test the content of memento resources. *///from ww w. j ava 2 s .co m @Test @DisplayName("Test the content of memento resources") default void testMementoContent() { final RDF rdf = getInstance(); final Dataset dataset = rdf.createDataset(); final Map<String, String> mementos = getMementos(); mementos.forEach((memento, date) -> { try (final Response res = target(memento).request().get()) { assertEquals(SUCCESSFUL, res.getStatusInfo().getFamily(), "Check for a successful request"); readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE).stream() .forEach(triple -> dataset.add(rdf.createIRI(memento), triple.getSubject(), triple.getPredicate(), triple.getObject())); } }); final IRI subject = rdf.createIRI(getResourceLocation()); final List<IRI> urls = mementos.keySet().stream().sorted().map(rdf::createIRI).collect(toList()); assertEquals(3L, urls.size(), "Check that three mementos were found"); assertTrue(dataset.getGraph(urls.get(0)).isPresent(), "Check that the first graph is present"); dataset.getGraph(urls.get(0)).ifPresent(g -> { assertTrue(g.contains(subject, type, SKOS.Concept), "Check for a skos:Concept type"); assertTrue(g.contains(subject, SKOS.prefLabel, rdf.createLiteral("Resource Name", "eng")), "Check for a skos:prefLabel property"); assertTrue(g.contains(subject, DC.subject, rdf.createIRI("http://example.org/subject/1")), "Check for a dc:subject property"); assertEquals(3L, g.size(), "Check for three triples"); }); assertTrue(dataset.getGraph(urls.get(1)).isPresent(), "Check that the second graph is present"); dataset.getGraph(urls.get(1)).ifPresent(g -> { assertTrue(g.contains(subject, type, SKOS.Concept), "Check for a skos:Concept type"); assertTrue(g.contains(subject, SKOS.prefLabel, rdf.createLiteral("Resource Name", "eng")), "Check for a skos:prefLabel property"); assertTrue(g.contains(subject, DC.subject, rdf.createIRI("http://example.org/subject/1")), "Check for a dc:subject property"); assertTrue(g.contains(subject, DC.title, rdf.createLiteral("Title")), "Check for a dc:title property"); assertEquals(4L, g.size(), "Check for four triples"); }); assertTrue(dataset.getGraph(urls.get(2)).isPresent(), "Check that the third graph is present"); dataset.getGraph(urls.get(2)).ifPresent(g -> { assertTrue(g.contains(subject, type, SKOS.Concept), "Check for a skos:Concept type"); assertTrue(g.contains(subject, SKOS.prefLabel, rdf.createLiteral("Resource Name", "eng")), "Check for a skos:prefLabel property"); assertTrue(g.contains(subject, DC.subject, rdf.createIRI("http://example.org/subject/1")), "Check for a dc:subject property"); assertTrue(g.contains(subject, DC.title, rdf.createLiteral("Title")), "Check for a dc:title property"); assertTrue(g.contains(subject, DC.alternative, rdf.createLiteral("Alternative Title")), "Check for a dc:alternative property"); assertEquals(5L, g.size(), "Check for five triples"); }); }
From source file:org.trellisldp.test.ResourceServiceTests.java
/** * Test replacing a resource.// w ww . jav a2 s . c om * @throws Exception if the operation failed */ @Test @DisplayName("Test replacing resource") default void testReplaceResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Replacement Test", SUBJECT2); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow( () -> getResourceService().create(Metadata.builder(identifier).interactionModel(LDP.RDFSource) .container(ROOT_CONTAINER).build(), dataset).toCompletableFuture().join(), "Check that the LDP-RS was successfully created"); dataset.clear(); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.prefLabel, rdf.createLiteral("preferred label")); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.altLabel, rdf.createLiteral("alternate label")); dataset.add(Trellis.PreferUserManaged, identifier, type, SKOS.Concept); assertDoesNotThrow( () -> getResourceService().replace(Metadata.builder(identifier).interactionModel(LDP.RDFSource) .container(ROOT_CONTAINER).build(), dataset).toCompletableFuture().join(), "Check that the LDP-RS was successfully replaced"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the replaced LDP-RS stream", res.stream(Trellis.PreferUserManaged).map(toQuad(Trellis.PreferUserManaged)) .map(q -> () -> assertTrue(dataset.contains(q), "Check that the quad comes from the dataset: " + q))); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the total user-managed triple count"); }
From source file:org.trellisldp.test.ResourceServiceTests.java
/** * Test adding immutable data.// ww w . j a v a 2 s . c o m * @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.test.ResourceServiceTests.java
/** * Test an LDP:DirectContainer./* w w w.jav a 2 s . c o m*/ * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-DC") default void testLdpDC() throws Exception { // Only test DC if the backend supports it assumeTrue(getResourceService().supportedInteractionModels().contains(LDP.DirectContainer)); final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final IRI member = rdf.createIRI(base + "/member"); final Dataset dataset0 = buildDataset(identifier, "Direct Container Test", SUBJECT0); dataset0.add(Trellis.PreferUserManaged, identifier, LDP.membershipResource, member); dataset0.add(Trellis.PreferUserManaged, identifier, LDP.isMemberOfRelation, DC.isPartOf); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check that the DC doesn't exist"); assertDoesNotThrow(() -> getResourceService() .create(Metadata.builder(identifier).membershipResource(member).memberOfRelation(DC.isPartOf) .interactionModel(LDP.DirectContainer).container(ROOT_CONTAINER).build(), dataset0) .toCompletableFuture().join(), "Check that creating the LDP-DC succeeds"); final IRI child1 = rdf.createIRI(base + "/child1"); final Dataset dataset1 = buildDataset(child1, "Child 1", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(child1).toCompletableFuture().join(), "Check that no child resource exists"); assertDoesNotThrow( () -> getResourceService().create( Metadata.builder(child1).interactionModel(LDP.RDFSource).container(identifier).build(), dataset1).toCompletableFuture().join(), "Check that the child resource is successfully created"); final IRI child2 = rdf.createIRI(base + "/child2"); final Dataset dataset2 = buildDataset(child2, "Child 2", SUBJECT2); assertEquals(MISSING_RESOURCE, getResourceService().get(child2).toCompletableFuture().join(), "Check that no child2 resource exists"); assertDoesNotThrow( () -> getResourceService().create( Metadata.builder(child2).interactionModel(LDP.RDFSource).container(identifier).build(), dataset2).toCompletableFuture().join(), "Check that the child2 resource is successfully created"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the resource", checkResource(res, identifier, LDP.DirectContainer, time, dataset0)); assertEquals(of(member), res.getMembershipResource(), "Check for ldp:membershipResource"); assertEquals(of(DC.isPartOf), res.getMemberOfRelation(), "Check for ldp:isMemberOfRelation"); assertFalse(res.getMemberRelation().isPresent(), "Check for no ldp:hasMemberRelation"); assertFalse(res.getInsertedContentRelation().filter(isEqual(LDP.MemberSubject).negate()).isPresent(), "Check for no ldp:InsertedContentRelation, excepting ldp:MemberSubject"); assertEquals(2L, res.stream(LDP.PreferContainment).count(), "Check the containment count"); final Graph graph = rdf.createGraph(); res.stream(LDP.PreferContainment).forEach(graph::add); assertTrue(graph.contains(identifier, LDP.contains, child1), "Check that child1 is contained in the LDP-DC"); assertTrue(graph.contains(identifier, LDP.contains, child2), "Check that child2 is contained in the LDP-DC"); assertEquals(5L, res.stream(Trellis.PreferUserManaged).count(), "Check the user-managed triple count"); }
From source file:org.trellisldp.test.ResourceServiceTests.java
/** * Test an LDP:IndirectContainer./*ww w.j av a2 s .c o m*/ * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-IC") default void testLdpIC() throws Exception { // Only execute this test if the backend supports it assumeTrue(getResourceService().supportedInteractionModels().contains(LDP.IndirectContainer)); final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final IRI member = rdf.createIRI(base + "/member"); final Dataset dataset0 = buildDataset(identifier, "Indirect Container Test", SUBJECT0); dataset0.add(Trellis.PreferUserManaged, identifier, LDP.membershipResource, member); dataset0.add(Trellis.PreferUserManaged, identifier, LDP.hasMemberRelation, DC.relation); dataset0.add(Trellis.PreferUserManaged, identifier, LDP.insertedContentRelation, FOAF.primaryTopic); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for a missing resource"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier).membershipResource(member) .memberRelation(DC.relation).insertedContentRelation(FOAF.primaryTopic) .interactionModel(LDP.IndirectContainer).container(ROOT_CONTAINER).build(), dataset0) .toCompletableFuture().join(), "Check that creating a resource succeeds"); final IRI child1 = rdf.createIRI(base + "/child1"); final Dataset dataset1 = buildDataset(child1, "Indirect Container Child 1", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(child1).toCompletableFuture().join(), "Check that the child resource doesn't exist"); assertDoesNotThrow(() -> getResourceService() .create(Metadata.builder(child1).interactionModel(LDP.RDFSource).container(identifier).build(), dataset1) .toCompletableFuture().join(), "Check that creating a child resource succeeds"); final IRI child2 = rdf.createIRI(base + "/child2"); final Dataset dataset2 = buildDataset(child2, "Indirect Container Child 2", SUBJECT2); assertEquals(MISSING_RESOURCE, getResourceService().get(child2).toCompletableFuture().join(), "Check that the child resource doesn't exist"); assertDoesNotThrow(() -> getResourceService() .create(Metadata.builder(child2).interactionModel(LDP.RDFSource).container(identifier).build(), dataset2) .toCompletableFuture().join(), "Check that creating the child resource succeeds"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the resource", checkResource(res, identifier, LDP.IndirectContainer, time, dataset0)); assertEquals(of(member), res.getMembershipResource(), "Check for ldp:membershipResource"); assertEquals(of(DC.relation), res.getMemberRelation(), "Check for ldp:hasMemberRelation"); assertEquals(of(FOAF.primaryTopic), res.getInsertedContentRelation(), "Check for ldp:insertedContentRelation"); assertFalse(res.getMemberOfRelation().isPresent(), "Check for no ldp:isMemberOfRelation"); assertEquals(2L, res.stream(LDP.PreferContainment).count(), "Check the containment triple count"); final Graph graph = rdf.createGraph(); res.stream(LDP.PreferContainment).forEach(graph::add); assertTrue(graph.contains(identifier, LDP.contains, child1), "Check that child1 is contained in the LDP-IC"); assertTrue(graph.contains(identifier, LDP.contains, child2), "Check that child2 is contained in the LDP-IC"); assertEquals(6L, res.stream(Trellis.PreferUserManaged).count(), "Check the total triple count"); }
From source file:org.trellisldp.test.ResourceServiceTests.java
/** * Build a dataset./* w ww. java 2 s . c om*/ * @param resource the resource IRI * @param title a title * @param subject a subject * @return a new dataset */ default Dataset buildDataset(final IRI resource, final String title, final String subject) { final Dataset dataset = getInstance().createDataset(); dataset.add(Trellis.PreferUserManaged, resource, DC.title, getInstance().createLiteral(title)); dataset.add(Trellis.PreferUserManaged, resource, DC.subject, getInstance().createIRI(subject)); dataset.add(Trellis.PreferUserManaged, resource, type, SKOS.Concept); return dataset; }
From source file:org.trellisldp.triplestore.TriplestoreResourceService.java
private void createOrReplace(final Metadata metadata, final Dataset dataset, final OperationType type) { final Instant eventTime = now(); // Set the LDP type dataset.add(PreferServerManaged, metadata.getIdentifier(), RDF.type, metadata.getInteractionModel()); // Relocate some user-managed triples into the server-managed graph metadata.getMembershipResource().ifPresent(member -> { dataset.add(PreferServerManaged, metadata.getIdentifier(), LDP.member, getBaseIRI(member)); dataset.add(PreferServerManaged, metadata.getIdentifier(), LDP.membershipResource, member); });/* ww w. j ava 2 s . c o m*/ metadata.getMemberRelation().ifPresent(relation -> dataset.add(PreferServerManaged, metadata.getIdentifier(), LDP.hasMemberRelation, relation)); metadata.getMemberOfRelation().ifPresent(relation -> dataset.add(PreferServerManaged, metadata.getIdentifier(), LDP.isMemberOfRelation, relation)); if (asList(LDP.IndirectContainer, LDP.DirectContainer).contains(metadata.getInteractionModel())) { dataset.add(PreferServerManaged, metadata.getIdentifier(), LDP.insertedContentRelation, metadata.getInsertedContentRelation().orElse(LDP.MemberSubject)); } // Set the parent relationship metadata.getContainer().ifPresent( parent -> dataset.add(PreferServerManaged, metadata.getIdentifier(), DC.isPartOf, parent)); metadata.getBinary().ifPresent(binary -> { dataset.add(PreferServerManaged, metadata.getIdentifier(), DC.hasPart, binary.getIdentifier()); binary.getMimeType().map(rdf::createLiteral).ifPresent( mimeType -> dataset.add(PreferServerManaged, binary.getIdentifier(), DC.format, mimeType)); }); storeResource(metadata.getIdentifier(), dataset, eventTime, type); }
From source file:org.trellisldp.triplestore.TriplestoreResourceService.java
/** * This is equivalent to the SPARQL below. * * <p><pre><code>//from w w w. j a va 2 s .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.TriplestoreResourceServiceTest.java
@Test public void testUpdateRoot() throws Exception { final Instant early = now(); final TriplestoreResourceService svc = new TriplestoreResourceService( connect(wrap(rdf.createDataset().asJenaDatasetGraph()))); svc.initialize();/*from w ww . j av a 2 s .c om*/ final Resource res1 = svc.get(root).toCompletableFuture().join(); assertAll("Check resource", checkResource(res1, root, LDP.BasicContainer, early)); assertAll("Check resource stream", checkResourceStream(res1, 0L, 5L, 0L, 0L, 0L)); final Dataset data = rdf.createDataset(); svc.get(root) .thenAccept(res -> res.stream() .filter(q -> !q.getGraphName().filter(Trellis.PreferServerManaged::equals).isPresent()) .forEach(data::add)) .toCompletableFuture().join(); data.add(Trellis.PreferUserManaged, root, RDFS.label, rdf.createLiteral("Resource Label")); data.add(Trellis.PreferUserManaged, root, RDFS.seeAlso, rdf.createIRI("http://example.com")); data.add(Trellis.PreferUserManaged, root, LDP.inbox, rdf.createIRI("http://ldn.example.com/")); data.add(Trellis.PreferUserManaged, root, RDF.type, rdf.createLiteral("Some weird type")); data.add(Trellis.PreferAudit, rdf.createBlankNode(), RDF.type, AS.Update); final Instant later = meanwhile(); assertDoesNotThrow(() -> svc.replace(builder(root).interactionModel(LDP.BasicContainer).build(), data) .toCompletableFuture().join(), "Unsuccessful replace operation!"); final Resource res2 = svc.get(root).toCompletableFuture().join(); assertAll("Check resource", checkResource(res2, root, LDP.BasicContainer, later)); assertAll("Check resource stream", checkResourceStream(res2, 4L, 5L, 1L, 0L, 0L)); }
From source file:org.trellisldp.triplestore.TriplestoreResourceServiceTest.java
@Test public void testPutLdpRs() throws Exception { final TriplestoreResourceService svc = new TriplestoreResourceService( connect(wrap(rdf.createDataset().asJenaDatasetGraph()))); svc.initialize();/*from w ww. j a v a 2 s.c om*/ final Dataset dataset = rdf.createDataset(); final BlankNode bnode = rdf.createBlankNode(); dataset.add(Trellis.PreferUserManaged, resource, DC.title, rdf.createLiteral("title")); dataset.add(Trellis.PreferAudit, resource, PROV.wasGeneratedBy, bnode); dataset.add(Trellis.PreferAudit, bnode, RDF.type, PROV.Activity); dataset.add(Trellis.PreferAudit, bnode, RDF.type, AS.Create); final Instant later = meanwhile(); assertDoesNotThrow( () -> allOf(svc .create(builder(resource).interactionModel(LDP.RDFSource).container(root).build(), dataset) .toCompletableFuture(), svc.touch(root).toCompletableFuture()).join(), "Unsuccessful create operation!"); allOf(svc.get(resource).thenAccept(checkResource(later, LDP.RDFSource, 1L, 3L, 0L)).toCompletableFuture(), svc.get(root).thenAccept(checkRoot(later, 1L)).toCompletableFuture()).join(); }