package org.aksw.jena_sparql_api.concept_cache.core;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.aksw.jena_sparql_api.utils.BindingUtils;
import org.aksw.jena_sparql_api.utils.VarUtils;
import org.apache.jena.query.ResultSet;
import org.apache.jena.sparql.algebra.Table;
import org.apache.jena.sparql.algebra.TableFactory;
import org.apache.jena.sparql.algebra.table.TableN;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.engine.binding.Binding;
import org.apache.jena.sparql.graph.NodeTransform;
public class TableUtils {
public static Table createTable(ResultSet rs) {
List<Var> vars = VarUtils.toList(rs.getResultVars());
Table result = TableFactory.create(vars);
while(rs.hasNext()) {
Binding binding = rs.nextBinding();
result.addBinding(binding);
}
return result;
}
public static Table transform(Table table, NodeTransform transform) {
List<Var> oldVars = table.getVars();
List<Var> newVars = new ArrayList<Var>(oldVars.size());
for(Var o : oldVars) {
Var n = (Var)transform.apply(o);
newVars.add(n);
}
//List<Binding> newBindings = new ArrayList<Binding>(table.size());
Table result = new TableN(newVars);
Iterator<Binding> it = table.rows();
while(it.hasNext()) {
Binding o = it.next();
Binding n = BindingUtils.transformKeys(o, transform);
result.addBinding(n);
}
return result;
}
}