package org.aksw.jena_sparql_api.core.utils;
import org.aksw.commons.collections.SinglePrefetchIterator;
import org.aksw.jena_sparql_api.core.ResultSetCloseable;
import org.apache.jena.graph.Node;
import org.apache.jena.sparql.core.Quad;
import org.apache.jena.sparql.engine.binding.Binding;
public class IteratorNQuads
extends SinglePrefetchIterator<Quad>
{
private ResultSetCloseable rs;
public IteratorNQuads(ResultSetCloseable rs) {
this.rs = rs;
}
@Override
protected Quad prefetch() throws Exception {
if(!rs.hasNext()) {
return finish();
}
Binding binding = rs.nextBinding();
Node g = binding.get(QueryExecutionUtils.vg);
Node s = binding.get(QueryExecutionUtils.vs);
Node p = binding.get(QueryExecutionUtils.vp);
Node o = binding.get(QueryExecutionUtils.vo);
Quad result = new Quad(g, s, p, o);
return result;
}
@Override
public void close() {
try {
rs.close();
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}