/** * Retrieve the RDF Triples for a given named graph. * * @param graphName the named graph * @return the RDF triples */ default Stream<Triple> stream(IRI graphName) { return stream(singleton(graphName)); }
/** * Retrieve the RDF Triples for a given named graph. * * @param graphName the named graph * @return the RDF triples */ default Stream<Triple> stream(IRI graphName) { return stream(singleton(graphName)); }
/** * Retrieve the RDF Triples for a set of named graphs. * * @param graphNames the named graphs * @return the RDF triples */ default Stream<Triple> stream(Collection<IRI> graphNames) { return stream().filter(quad -> quad.getGraphName().filter(graphNames::contains).isPresent()) .map(Quad::asTriple); }
/** * Retrieve the RDF Triples for a set of named graphs. * * @param graphNames the named graphs * @return the RDF triples */ default Stream<Triple> stream(Collection<IRI> graphNames) { return stream().filter(quad -> quad.getGraphName().filter(graphNames::contains).isPresent()) .map(Quad::asTriple); }
/** * Retrieve the RDF Quads for a resource. * * @return the RDF quads */ default Dataset dataset() { try (final Stream<Quad> quads = stream()) { return quads.collect(TrellisUtils.toDataset().concurrent()); } }
/** * Retrieve the RDF Quads for a resource. * * @return the RDF quads */ default Dataset dataset() { try (final Stream<Quad> quads = stream()) { return quads.collect(TrellisUtils.toDataset().concurrent()); } }
private Predicate<IRI> isAgentInGroup(final IRI agent) { return group -> resourceService.get(cleanIdentifier(group)).thenApply(res -> { try (final Stream<RDFTerm> triples = res.stream(Trellis.PreferUserManaged) .filter(t -> t.getSubject().equals(group) && t.getPredicate().equals(VCARD.hasMember)) .map(Triple::getObject)) { return triples.anyMatch(agent::equals); } }).toCompletableFuture().join(); }
@BeforeEach public void setUp() { initMocks(this); when(mockResource.getIdentifier()).thenReturn(identifier); when(mockResource.getModified()).thenReturn(time); when(mockResource.stream()).thenAnswer(inv -> of(quad)); doCallRealMethod().when(mockMementoService).put(any(ResourceService.class), any(IRI.class)); when(mockResourceService.get(any(IRI.class))).thenAnswer(inv -> completedFuture(mockResource)); when(mockMementoService.put(any(Resource.class))).thenReturn(completedFuture(null)); }
@Test public void testDeleteNoChildren1() { when(mockVersionedResource.getInteractionModel()).thenReturn(LDP.BasicContainer); when(mockVersionedResource.stream(eq(LDP.PreferContainment))).thenAnswer(inv -> Stream.empty()); final Response res = target(RESOURCE_PATH).request().delete(); assertEquals(SC_NO_CONTENT, res.getStatus(), "Unexpected response code!"); }
@Test public void testDeleteNoChildren2() { when(mockVersionedResource.getInteractionModel()).thenReturn(LDP.Container); when(mockVersionedResource.stream(eq(LDP.PreferContainment))).thenAnswer(inv -> Stream.empty()); final Response res = target(RESOURCE_PATH).request().delete(); assertEquals(SC_NO_CONTENT, res.getStatus(), "Unexpected response code!"); }
@Test public void testResourceWithQuads() { final IRI subject = rdf.createIRI("ex:subject"); when(mockResource.stream()).thenAnswer((x) -> of( rdf.createQuad(prefer, subject, DC.title, rdf.createLiteral("A title")), rdf.createQuad(PreferUserManaged, subject, DC.title, rdf.createLiteral("Other title")))); assertEquals(1L, mockResource.stream(prefer).count(), "Resource stream has wrong number of triples!"); assertEquals(1L, mockResource.stream(singleton(prefer)).count(), "Resource has wrong number of triples!"); }
private List<Triple> updateGraph(final RDFSyntax syntax, final IRI graphName) { final List<Triple> triples; // Update existing graph try (final TrellisGraph graph = TrellisGraph.createGraph()) { try (final Stream<Triple> stream = getResource().stream(graphName)) { stream.forEachOrdered(graph::add); } getServices().getIOService().update(graph.asGraph(), updateBody, syntax, TRELLIS_DATA_PREFIX + getRequest().getPath() + (ACL.equals(getRequest().getExt()) ? "?ext=acl" : "")); triples = graph.stream().filter(triple -> !RDF.type.equals(triple.getPredicate()) || !triple.getObject().ntriplesString().startsWith("<" + LDP.getNamespace())).collect(toList()); } return triples; }
@Test public void testEntity() { final Triple triple = rdf.createTriple(identifier, RDFS.label, rdf.createLiteral("A label")); when(mockTrellisRequest.getContentType()).thenReturn(APPLICATION_SPARQL_UPDATE); when(mockResource.stream(eq(PreferUserManaged))).thenAnswer(x -> of(triple)); when(mockTrellisRequest.getPath()).thenReturn("resource"); final PatchHandler patchHandler = new PatchHandler(mockTrellisRequest, insert, mockBundler, null, null); final Response res = patchHandler.updateResource(patchHandler.initialize(mockParent, mockResource)) .toCompletableFuture().join().build(); assertEquals(NO_CONTENT, res.getStatusInfo(), "Incorrect response code!"); verify(mockIoService).update(any(Graph.class), eq(insert), eq(SPARQL_UPDATE), eq(identifier.getIRIString())); verify(mockResourceService).replace(any(Metadata.class), any(Dataset.class)); }
@Override public void write(final OutputStream out) throws IOException { try (final Stream<Quad> stream = getResource().stream()) { getServices().getIOService().write(stream.filter(filterWithPrefer(prefer)) .map(unskolemizeQuads(getServices().getResourceService(), getBaseUrl())) .filter(filterWithLDF(getRequest().getSubject(), getRequest().getPredicate(), getRequest().getObject())) .map(Quad::asTriple), out, syntax, ofNullable(profile).orElseGet(() -> getDefaultProfile(syntax, getIdentifier(), defaultJsonLdProfile))); } } };
@Test public void testDeleteWithChildren() { when(mockVersionedResource.getInteractionModel()).thenReturn(LDP.Container); when(mockVersionedResource.stream(eq(LDP.PreferContainment))).thenAnswer(inv -> Stream.of( rdf.createTriple(identifier, LDP.contains, rdf.createIRI(identifier.getIRIString() + "/child")))); final Response res = target(RESOURCE_PATH).request().delete(); assertEquals(SC_NO_CONTENT, res.getStatus(), "Unexpected response code!"); }
@Test public void testInvalidFile() { final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + "resource"); final File dir = new File(getClass().getResource("/resource.nq").getFile()).getParentFile(); final File file = new File(dir, "nonexistent"); assertFalse(file.exists(), "Non-existent file shouldn't exist!"); final Resource res = new FileResource(identifier, file); assertEquals(identifier, res.getIdentifier(), "Incorrect identifier!"); assertNull(res.getInteractionModel(), "Unexpected interaction model!"); assertEquals(0L, res.stream().count(), "Incorrect total triple count!"); }
@Test public void testResource() { assertEquals(0L, mockResource.stream(prefer).count(), "Resource stream has extra triples!"); assertEquals(0L, mockResource.stream(singleton(prefer)).count(), "Resource stream has extra triples!"); assertFalse(mockResource.getMembershipResource().isPresent(), "Membership resource unexpectedly present!"); assertFalse(mockResource.getMemberRelation().isPresent(), "Member relation unexpectedly present!"); assertFalse(mockResource.getMemberOfRelation().isPresent(), "Member of relation unexpectedly present!"); assertFalse(mockResource.getInsertedContentRelation().isPresent(), "Inserted content relation is present!"); assertFalse(mockResource.getBinaryMetadata().isPresent(), "Binary is unexpectedly present!"); assertFalse(mockResource.getExtraLinkRelations().findFirst().isPresent(), "Extra links unexpectedly present!"); assertFalse(mockResource.hasAcl(), "ACL unexpectedly present!"); }
@Test public void testAuthenticatedUser() { when(mockRootResource.stream(eq(Trellis.PreferAccessControl))).thenAnswer(inv -> Stream.of( rdf.createTriple(authIRI5, ACL.accessTo, rootIRI), rdf.createTriple(authIRI5, ACL.agentClass, ACL.AuthenticatedAgent), rdf.createTriple(authIRI5, ACL.mode, ACL.Read), rdf.createTriple(authIRI5, ACL.mode, ACL.Append))); when(mockSession.getAgent()).thenReturn(acoburnIRI); assertAll("Test authenticated user access", checkCanRead(rootIRI), checkCanAppend(rootIRI), checkCannotWrite(rootIRI), checkCannotControl(rootIRI)); }