package org.aksw.jena_sparql_api.batch.cli.main; import java.util.Iterator; import com.google.common.base.Predicate; import com.google.common.collect.Iterators; import org.apache.jena.graph.Graph; import org.apache.jena.graph.Node; import org.apache.jena.query.ReadWrite; import org.apache.jena.sparql.core.DatasetGraph; import org.apache.jena.sparql.core.DatasetGraphBase; import org.apache.jena.sparql.core.Quad; class PredicateIfQuadExists implements Predicate<Quad> { protected DatasetGraph datasetGraph; public PredicateIfQuadExists(DatasetGraph datasetGraph) { super(); this.datasetGraph = datasetGraph; } @Override public boolean apply(Quad quad) { boolean result = datasetGraph.contains(quad); return result; } } public class DatasetGraphDiff extends DatasetGraphBase { protected DatasetGraph core; protected DatasetGraph added; protected DatasetGraph removed; @Override public Iterator<Quad> find(Node g, Node s, Node p, Node o) { Predicate<Quad> pred = new PredicateIfQuadExists(removed); Iterator<Quad> itAdded = added.find(g, s, p, o); Iterator<Quad> result = core.find(g, s, p, o); result = Iterators.filter(result, pred); result = Iterators.concat(result, itAdded); return result; } @Override public Iterator<Quad> findNG(Node g, Node s, Node p, Node o) { Predicate<Quad> pred = new PredicateIfQuadExists(removed); Iterator<Quad> itAdded = added.findNG(g, s, p, o); Iterator<Quad> result = core.findNG(g, s, p, o); result = Iterators.filter(result, pred); result = Iterators.concat(result, itAdded); return result; } @Override public Iterator<Node> listGraphNodes() { Iterator<Node> result = core.listGraphNodes(); return result; } @Override public void addGraph(Node arg0, Graph arg1) { } @Override public Graph getDefaultGraph() { return null; // Graph result = core.getDefaultGraph(); // return result; } @Override public Graph getGraph(Node arg0) { return null; // Graph result = core.getDefaultGraph(); // return result; } @Override public void removeGraph(Node arg0) { // TODO Auto-generated method stub } @Override public boolean supportsTransactions() { // TODO Auto-generated method stub return false; } @Override public void abort() { // TODO Auto-generated method stub } @Override public void begin(ReadWrite arg0) { // TODO Auto-generated method stub } @Override public void commit() { // TODO Auto-generated method stub } @Override public void end() { // TODO Auto-generated method stub } @Override public boolean isInTransaction() { // TODO Auto-generated method stub return false; } }