package at.ac.univie.mminf.qskos4j.util;
import org.openrdf.OpenRDFException;
import org.openrdf.model.Resource;
import org.openrdf.model.Value;
import org.openrdf.query.BindingSet;
import org.openrdf.query.QueryEvaluationException;
import org.openrdf.query.TupleQueryResult;
import java.util.*;
public class TupleQueryResultUtil {
public static Set<Value> getValuesForBindingName(TupleQueryResult result, String bindingName)
throws QueryEvaluationException
{
Set<Value> ret = new HashSet<Value>();
while (result.hasNext()) {
ret.add(result.next().getValue(bindingName));
}
return ret;
}
public static String getFilterForBindingName(TupleQueryResult result, String bindingName, boolean exclusive)
throws QueryEvaluationException
{
String filterExpression = "FILTER (?" +bindingName+ (exclusive ? " NOT" : "") +" IN (";
Iterator<Value> subPropIt = getValuesForBindingName(result, bindingName).iterator();
while (subPropIt.hasNext()) {
filterExpression += "<"+ subPropIt.next().stringValue() +">"+ (subPropIt.hasNext() ? "," : "))");
}
return filterExpression;
}
public static long countResults(TupleQueryResult result) throws QueryEvaluationException {
long count = 0;
while (result.hasNext()) {
count++;
result.next();
}
return count;
}
public static Collection<Tuple<Resource>> createCollectionOfResourcePairs(TupleQueryResult result, String value1, String value2)
throws OpenRDFException
{
Collection<Tuple<Resource>> resultCollection = new ArrayList<Tuple<Resource>>();
while (result.hasNext()) {
BindingSet queryResult = result.next();
Resource concept1 = (Resource) queryResult.getValue(value1);
Resource concept2 = (Resource) queryResult.getValue(value2);
resultCollection.add(new Tuple<Resource>(concept1, concept2));
}
return resultCollection;
}
}