/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.sparql.graph;
import java.util.Iterator ;
import java.util.Set ;
import org.apache.jena.atlas.iterator.Iter ;
import org.apache.jena.graph.Graph ;
import org.apache.jena.graph.Node ;
import org.apache.jena.graph.Triple ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.Quad ;
/** Some operations on graphs */
public class GraphOps {
// Combine with Jena GraphUtils?
/** Check whether a dataset contains a named graph of the given name.
* Graph with special names (union and default) return true.
*/
public static boolean containsGraph(DatasetGraph dsg, Node gn) {
if ( Quad.isDefaultGraph(gn) || Quad.isUnionGraph(gn) )
return true ;
return dsg.containsGraph(gn) ;
}
/** Get a graph from the dataset - the graph name may be special
* - the union graph (which is immutable) or a special name for
* the default graph.
* <p>
* A graph name of "null" is interpreted as the default graph.
*/
public static Graph getGraph(DatasetGraph dsg, Node gn) {
if ( gn == null )
return dsg.getDefaultGraph() ;
if ( Quad.isDefaultGraph(gn) )
// Explicit or generated.
return dsg.getDefaultGraph() ;
if ( Quad.isUnionGraph(gn) )
return unionGraph(dsg) ;
return dsg.getGraph(gn) ;
}
/** Create an immutable union graph comprised of a set of named graphs. */
public static Graph unionGraph(DatasetGraph dsg, Set<Node> graphNames) {
return new GraphUnionRead(dsg, graphNames) ;
}
/** Create an immutable union graph of all the named graphs in the dataset.
* Future changes to the set of graphs in the dataset will be seen.
*/
public static Graph unionGraph(DatasetGraph dsg) {
return new GraphUnionRead(dsg) ;
}
public static void addAll(Graph g, Iterator<Triple> iter) {
while (iter.hasNext())
g.add(iter.next()) ;
Iter.close(iter) ;
}
public static void addAll(Graph g, Iterable<Triple> iter) {
addAll(g, iter.iterator()) ;
}
public static void deleteAll(Graph g, Iterator<Triple> iter) {
while (iter.hasNext())
g.delete(iter.next()) ;
Iter.close(iter) ;
}
public static void deleteAll(Graph g, Iterable<Triple> iter) {
deleteAll(g, iter.iterator()) ;
}
}