@Override public Dataset replaceNamedModel(String uri, Model model) { delegate.replaceNamedModel(uri, model); return this; }
@Override public Dataset replaceNamedModel(String uri, Model model) { delegate.replaceNamedModel(uri, model); return this; }
@Override public void putModel(String uri, Model model) { getDataset().replaceNamedModel(uri, model); }
@Override public BiConsumer<Dataset, Dataset> accumulator() { return (d1, d2) -> { d1.getDefaultModel().add(d2.getDefaultModel()); d2.listNames().forEachRemaining(name -> { Model union = d1.getNamedModel(name).union(d2.getNamedModel(name)); d1.replaceNamedModel(name, union); }); }; } }
@Override public BiConsumer<Dataset, Dataset> accumulator() { return (d1, d2) -> { if (afterFirstElement) { d1.setDefaultModel(d1.getDefaultModel().intersection(d2.getDefaultModel())); d1.listNames().forEachRemaining(name -> { if (d2.containsNamedModel(name)) { Model intersection = d1.getNamedModel(name).intersection(d2.getNamedModel(name)); d1.replaceNamedModel(name, intersection); } else d1.removeNamedModel(name); }); } else { // first element of the stream d1.setDefaultModel(d2.getDefaultModel()); d2.listNames().forEachRemaining(name -> d1.replaceNamedModel(name, d2.getNamedModel(name))); afterFirstElement = true; } }; } }
@Test public void dataset_05() { String graphName = "http://example/"; Dataset ds = createDataset(); ds.addNamedModel(graphName, model1); ds.replaceNamedModel(graphName, model2); assertTrue(ds.containsNamedModel(graphName)); List<String> x = Iter.toList(ds.listNames()); assertEquals(1, x.size()); assertEquals(graphName, x.get(0)); assertFalse(model1.isIsomorphicWith(ds.getNamedModel(graphName))); assertTrue(model2.isIsomorphicWith(ds.getNamedModel(graphName))); }