
org.aksw.jena_sparql_api.utils.QuadPatternUtils Maven / Gradle / Ivy
package org.aksw.jena_sparql_api.utils;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import org.apache.jena.graph.Graph;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.core.BasicPattern;
import org.apache.jena.sparql.core.Quad;
import org.apache.jena.sparql.core.QuadPattern;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.graph.GraphFactory;
import org.apache.jena.sparql.util.NodeComparator;
import org.apache.jena.sparql.util.TripleComparator;
public class QuadPatternUtils {
public static String toNTripleString(QuadPattern quadPattern) throws Exception {
List quads = quadPattern.getList();
String result = "";
for(Quad quad : quads) {
Triple triple = quad.asTriple();
String tmp = TripleUtils.toNTripleString(triple);
if(!result.isEmpty()) {
result += "\n";
}
result += tmp;
}
return result;
}
public static QuadPattern create(Iterable quads) {
QuadPattern result = new QuadPattern();
for(Quad quad : quads) {
result.add(quad);
}
return result;
}
//public static QuadPattern
public static QuadPattern toQuadPattern(BasicPattern basicPattern) {
return toQuadPattern(Quad.defaultGraphNodeGenerated, basicPattern);
}
// This method is implictely part of OpQuadPattern, but its not reusable yet
public static QuadPattern toQuadPattern(Node g, BasicPattern basicPattern) {
QuadPattern result = new QuadPattern();
for(Triple triple : basicPattern) {
Quad quad = new Quad(g, triple);
result.add(quad);
}
return result;
}
/**
* Creates a set of triples by omitting the graph node of the quads
*
* @param quadPattern
* @return
*/
public static BasicPattern toBasicPattern(QuadPattern quadPattern)
{
BasicPattern result = new BasicPattern();
for(Quad quad : quadPattern) {
Triple triple = quad.asTriple();
result.add(triple);
}
return result;
}
public static Map indexBasicPattern(Iterable quads)
{
Map result = new HashMap(); //new TreeMap(new NodeComparator());
for(Quad q : quads) {
BasicPattern basicPattern = result.get(q.getGraph());
if(basicPattern == null) {
basicPattern = new BasicPattern();
result.put(q.getGraph(), basicPattern);
}
basicPattern.add(q.asTriple());
}
return result;
}
public static Map> indexSorted(Iterable quads)
{
Map> result = new TreeMap>(new NodeComparator());
for(Quad q : quads) {
Set triples = result.get(q.getGraph());
if(triples == null) {
triples = new TreeSet(new TripleComparator());
result.put(q.getGraph(), triples);
}
triples.add(q.asTriple());
}
return result;
}
public static Map indexAsGraphs(Iterable quads) {
Map result = indexAsGraphs(quads.iterator());
return result;
}
public static Map indexAsGraphs(Iterator it) {
Map result = new HashMap();
while(it.hasNext()) {
Quad quad = it.next();
Graph graph = result.get(quad.getGraph());
if(graph == null) {
graph = GraphFactory.createDefaultGraph();
result.put(quad.getGraph(), graph);
}
graph.add(quad.asTriple());
}
return result;
}
public static Set getVarsMentioned(Iterable quadPattern) {
Set result = new HashSet();
for (Quad quad : quadPattern) {
Set tmp = QuadUtils.getVarsMentioned(quad);
result.addAll(tmp);
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy