@Test public void testResourceWithoutChildren() { final JenaDataset dataset = buildLdpDataset(LDP.RDFSource); dataset.add(Trellis.PreferServerManaged, identifier, DC.isPartOf, root); getChildIRIs().forEach(c -> dataset.add(Trellis.PreferServerManaged, c, DC.isPartOf, identifier)); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.RDFSource, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 0L, 0L, 0L)); }
@Test public void testResourceWithChildren() { final JenaDataset dataset = buildLdpDataset(LDP.Container); dataset.add(Trellis.PreferServerManaged, identifier, DC.isPartOf, root); getChildIRIs().forEach(c -> dataset.add(Trellis.PreferServerManaged, c, DC.isPartOf, identifier)); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.Container, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 0L, 0L, 4L)); }
@Test public void testMinimalResource() { final JenaDataset dataset = buildLdpDataset(LDP.RDFSource); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.RDFSource, false, false, false)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 0L, 0L, 0L)); }
@Test public void testResourceWithAuditQuads() { final JenaDataset dataset = buildLdpDataset(LDP.RDFSource); auditService.creation(identifier, mockSession).forEach(q -> dataset.add(auditId, q.getSubject(), q.getPredicate(), q.getObject())); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.RDFSource, false, false, false)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 5L, 0L, 0L)); }
@Test public void testDirectContainer() { final JenaDataset dataset = buildLdpDataset(LDP.DirectContainer); dataset.add(Trellis.PreferServerManaged, identifier, DC.isPartOf, root); dataset.add(Trellis.PreferServerManaged, identifier, LDP.member, member); dataset.add(Trellis.PreferServerManaged, identifier, LDP.membershipResource, member); dataset.add(Trellis.PreferServerManaged, identifier, LDP.hasMemberRelation, DC.subject); dataset.add(Trellis.PreferServerManaged, identifier, LDP.insertedContentRelation, LDP.MemberSubject); dataset.add(Trellis.PreferServerManaged, identifier, DC.modified, rdf.createLiteral(time, XSD.dateTime)); dataset.add(Trellis.PreferServerManaged, member, DC.isPartOf, root); getChildIRIs().forEach(c -> dataset.add(Trellis.PreferServerManaged, c, DC.isPartOf, identifier)); final RDFConnection rdfConnection = connect(wrap(dataset.asJenaDatasetGraph())); final TriplestoreResource res = new TriplestoreResource(rdfConnection, identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.DirectContainer, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(res, member, DC.subject, null, LDP.MemberSubject)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 0L, 0L, 4L)); final TriplestoreResource memberRes = new TriplestoreResource(rdfConnection, member); memberRes.fetchData(); assertTrue(memberRes.exists(), "Missing resource!"); assertAll("Check resource", checkResource(memberRes, member, LDP.RDFSource, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(memberRes, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(memberRes, 1L, 0L, 0L, 4L, 0L)); assertEquals(4L, memberRes.stream(singleton(LDP.PreferMembership)).map(Triple::getPredicate) .filter(isEqual(DC.subject)).count(), "Incorrect triple count!"); }
@Test public void testResourceWithAclQuads() { final JenaDataset dataset = buildLdpDataset(LDP.RDFSource); dataset.add(aclId, aclSubject, ACL.mode, ACL.Read); dataset.add(aclId, aclSubject, ACL.agentClass, FOAF.Agent); dataset.add(aclId, aclSubject, ACL.accessTo, identifier); auditService.creation(identifier, mockSession).forEach(q -> dataset.add(auditId, q.getSubject(), q.getPredicate(), q.getObject())); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.RDFSource, false, true, false)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 3L, 5L, 0L, 0L)); }
@Test public void testIndirectContainer() { final JenaDataset dataset = buildLdpDataset(LDP.IndirectContainer); dataset.add(Trellis.PreferServerManaged, identifier, DC.isPartOf, root); dataset.add(Trellis.PreferServerManaged, identifier, LDP.member, member); dataset.add(identifier, identifier, DC.alternative, rdf.createLiteral("An LDP-IC resource")); dataset.add(member, member, DC.alternative, rdf.createLiteral("A membership resource")); getChildIRIs().forEach(c -> { dataset.add(Trellis.PreferServerManaged, c, DC.isPartOf, identifier); dataset.add(c, c, DC.subject, rdf.createIRI("http://example.org/" + randomUUID())); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); assertAll("Check resource", checkResource(res, identifier, LDP.IndirectContainer, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(res, member, DC.relation, null, DC.subject)); assertAll("Check RDF stream", checkRdfStream(res, 3L, 0L, 0L, 0L, 4L)); assertAll("Check resource", checkResource(res2, member, LDP.RDFSource, false, false, true)); assertAll("Check LDP properties", checkLdpProperties(res2, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res2, 2L, 0L, 0L, 4L, 0L)); assertEquals(4L, res2.stream(singleton(LDP.PreferMembership)).map(Triple::getPredicate) .filter(isEqual(DC.relation)).count(), "Incorrect triple count!");
@Test public void testBinaryResource() { final String mimeType = "image/jpeg"; final IRI binaryIdentifier = rdf.createIRI("file:///binary"); final JenaDataset dataset = buildLdpDataset(LDP.NonRDFSource); dataset.add(Trellis.PreferServerManaged, identifier, DC.hasPart, binaryIdentifier); dataset.add(Trellis.PreferServerManaged, binaryIdentifier, DC.format, rdf.createLiteral(mimeType)); auditService.creation(identifier, mockSession).forEach(q -> dataset.add(auditId, q.getSubject(), q.getPredicate(), q.getObject())); final TriplestoreResource res = new TriplestoreResource(connect(wrap(dataset.asJenaDatasetGraph())), identifier); res.fetchData(); assertTrue(res.exists(), "Missing resource!"); res.getBinaryMetadata().ifPresent(b -> { assertEquals(binaryIdentifier, b.getIdentifier(), "Incorrect binary identifier!"); assertEquals(of(mimeType), b.getMimeType(), "Incorrect binary mime type!"); }); assertAll("Check resource", checkResource(res, identifier, LDP.NonRDFSource, true, false, false)); assertAll("Check LDP properties", checkLdpProperties(res, null, null, null, null)); assertAll("Check RDF stream", checkRdfStream(res, 2L, 0L, 5L, 0L, 0L)); }