public static DatasetGraph create(Graph graph) { // Find the deepest graph, the one that may be attached to a DatasetGraph. Graph graph2 = unwrap(graph); if ( graph2 instanceof GraphView ) { // This becomes a simple class that passes all transaction operations the // underlying dataset and masks the fact here are other graphs in the storage. return new DatasetGraphOne(graph, ((GraphView)graph2).getDataset()); } // Didn't find a GraphView so no backing DatasetGraph; work on the graph as given. return new DatasetGraphOne(graph); }
/** * Create a DatasetGraph which only ever has a single default graph. */ public static DatasetGraph wrap(Graph graph) { return DatasetGraphOne.create(graph) ; }
@Override public Graph getGraph(Node graphNode) { if ( isDefaultGraph(graphNode) ) return getDefaultGraph(); if ( Quad.isUnionGraph(graphNode) ) return getUnionGraph(); return null; }
@Override public void delete(Quad quad) { if ( isDefaultGraph(quad) ) graph.delete(quad.asTriple()); else unsupportedMethod(this, "delete(named graph)"); }
@Override public Iterator<Quad> find(Node g, Node s, Node p, Node o) { if ( isWildcard(g) || isDefaultGraph(g) ) return triples2quadsDftGraph(graph.find(s, p, o)); else return new NullIterator<>(); }
@Override public void setDefaultGraph(Graph g) { unsupportedMethod(this, "setDefaultGraph"); }
@Override public boolean containsGraph(Node graphNode) { if ( isDefaultGraph(graphNode) ) return true; return false; }
@Override public void add(Quad quad) { if ( isDefaultGraph(quad) ) graph.add(quad.asTriple()); else unsupportedMethod(this, "add(named graph)"); }
@Override public void addGraph(Node graphName, Graph graph) { unsupportedMethod(this, "addGraph"); }
protected static boolean isDefaultGraph(Quad quad) { return isDefaultGraph(quad.getGraph()); }
@Override public void removeGraph(Node graphName) { unsupportedMethod(this, "removeGraph"); }
public DatasetOne(Model model) { super(DatasetGraphOne.create(model.getGraph())); this.defaultModel = model; }
@Override public void delete(Node g, Node s, Node p, Node o) { if ( Quad.isDefaultGraph(g) ) graph.delete(new Triple(s, p, o)); else unsupportedMethod(this, "delete(named graph)"); }
@Override public void add(Node g, Node s, Node p, Node o) { if ( Quad.isDefaultGraph(g) ) graph.add(new Triple(s, p, o)); else unsupportedMethod(this, "add(named graph)"); }