package org.aksw.jena_sparql_api.cache.tests; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.StreamSupport; import org.aksw.jena_sparql_api.core.FluentQueryExecutionFactory; import org.aksw.jena_sparql_api.core.QueryExecutionFactory; import org.aksw.jena_sparql_api.utils.BindingUtils; import org.aksw.jena_sparql_api.utils.QueryUtils; import org.aksw.jena_sparql_api.utils.ResultSetUtils; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; import org.apache.jena.query.ResultSet; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.sparql.core.Var; import org.apache.jena.sparql.engine.binding.Binding; import org.apache.jena.util.iterator.ClosableIterator; import com.google.common.collect.Range; class QueryExecutionSliceSupplier implements Function<Range<Long>, QueryExecution> { protected QueryExecutionFactory qef; protected Query queryTemplate; @Override public QueryExecution apply(Range<Long> range) { Query query = queryTemplate.cloneQuery(); QueryUtils.applyRange(query, range); QueryExecution result = qef.createQueryExecution(query); return result; } } class QueryExecutionSegmentedCache { protected Query query; protected Map<Var, Var> varMap; // Mapping to rename variables of the bindings in the cache //protected SegmentedList<Binding> listCache; protected Function<Range<Long>, ClosableIterator<Binding>> bindingSupplier; protected Range<Long> range; protected List<String> varNames; protected transient ClosableIterator<Binding> it; public ResultSet execSelect() { it = bindingSupplier.apply(range); Iterator<Binding> i = it; if(varMap != null) { Iterable<Binding> tmp = () -> it; i = StreamSupport.stream(tmp.spliterator(), false) .map(b -> BindingUtils.rename(b, varMap)) .iterator(); } ResultSet result = ResultSetUtils.create(varNames, i); return result; } public void close() { if(it != null) { it.close(); } } public static void main(String[] args) { QueryExecutionFactory qef = FluentQueryExecutionFactory .from(ModelFactory.createDefaultModel()) .create(); } }