package org.aksw.jena_sparql_api.core;
import org.aksw.jena_sparql_api.core.utils.QueryExecutionUtils;
import org.aksw.jena_sparql_api.core.utils.QueryGenerationUtils;
import org.apache.jena.graph.Triple;
import org.apache.jena.graph.impl.GraphBase;
import org.apache.jena.query.Query;
import org.apache.jena.util.iterator.ExtendedIterator;
public class GraphSparqlService
extends GraphBase
{
private SparqlService sparqlService;
// Whether to delegate a call to close to the underlying qef
// True by default
boolean delegateClose;
public GraphSparqlService(SparqlService sparqlService) {
this(sparqlService, true);
}
public GraphSparqlService(SparqlService sparqlService, boolean delegateClose) {
this.sparqlService = sparqlService;
this.delegateClose = delegateClose;
}
// @Override
// protected ExtendedIterator<Triple> graphBaseFind(TripleMatch m) {
//
// }
@Override
public void close() {
if(delegateClose) {
//this.sparqlService.close();
}
}
@Override
protected ExtendedIterator<Triple> graphBaseFind(Triple m) {
Query query = QueryGenerationUtils.createQueryTriple(m);
QueryExecutionFactory qef = sparqlService.getQueryExecutionFactory();
ExtendedIterator<Triple> result = QueryExecutionUtils.execConstruct(qef, query);
return result;
}
}