cbd.remove(cbd.listStatements().filterDrop(isRelevant).toList()); LOGGER.info("|cbd_filtered(" + uri + ")|=" + cbd.size() + " triples");
@Override public InputStream getEntailedTriples(final String subject, final InputStream input, final String contentType, final String acceptType) { final Model model = createDefaultModel(); read(model, input, contentTypeToLang(contentType.split(";")[0])); final Model entailed = createDefaultModel(); entailed.setNsPrefixes(model); createRDFSModel(schema, model).listStatements() // We don't care about rdfs:Class and rdfs:Resource types .filterDrop(s -> isRdfsClass(s) || isRdfsResource(s)) .filterDrop(t -> schema.contains(t.getSubject(), null)) .forEachRemaining(entailed::add); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); write(baos, entailed, getRdfLanguage(acceptType.split(";")[0]).orElse(DEFAULT_LANG)); return new ByteArrayInputStream(baos.toByteArray()); }
@Test public void testUnion() { final Graph g1 = parseGraph("(graph (triple <s1> <p1> <o1> ))"); final Model m1 = createModelForGraph(g1); final Dataset dsg1 = DatasetFactory.create(m1); final String graphName1 = NodeFactory.createBlankNode().toString(); dsg1.addNamedModel(graphName1, m1); final Graph g2 = parseGraph("(graph (triple <s2> <p2> <o2> ))"); final Dataset dsg2 = DatasetFactory.create(createModelForGraph(g2)); final Model m2 = createModelForGraph(g2); final String graphName2 = NodeFactory.createBlankNode().toString(); dsg2.addNamedModel(graphName2, m2); final Stream<Dataset> stream = Stream.<Dataset>builder().add(dsg1).add(dsg2).build(); Dataset dataset = stream.collect(testInstance()); assertEquals(2, Iter.count(dataset.listNames())); assertTrue(m1.isIsomorphicWith(dataset.getNamedModel(graphName1))); assertTrue(m2.isIsomorphicWith(dataset.getNamedModel(graphName2))); // all statements in any input should be present in the union m1.listStatements().mapWith(dataset.getDefaultModel()::contains).forEachRemaining(Assert::assertTrue); m2.listStatements().mapWith(dataset.getDefaultModel()::contains).forEachRemaining(Assert::assertTrue); // all statements in the union should be present in an input List<Statement> leftovers = dataset.getDefaultModel().listStatements() .filterDrop(m1::contains) .filterDrop(m2::contains).toList(); assertTrue(leftovers.isEmpty()); } }