package org.aksw.jena_sparql_api.views;
import org.aksw.jena_sparql_api.core.QueryExecutionFactory;
import org.aksw.jena_sparql_api.core.QueryExecutionFactoryBackQuery;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.sparql.algebra.Op;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class QueryExecutionFactorySparqlView
extends QueryExecutionFactoryBackQuery
{
private static Logger logger = LoggerFactory.getLogger(QueryExecutionFactorySparqlView.class);
private QueryExecutionFactory factory;
//private SparqlViewSystem system;
private CandidateViewSelector<SparqlView> candidateViewSelector;
private Dialect dialect;
public QueryExecutionFactorySparqlView(QueryExecutionFactory factory, CandidateViewSelector<SparqlView> candidateViewSelector, Dialect dialect) {
this.factory = factory;
this.candidateViewSelector = candidateViewSelector;
this.dialect = dialect;
}
@Override
public String getId() {
return factory.getId() + "-" + hashCode();
}
@Override
public String getState() {
return null;
}
@Override
public QueryExecution createQueryExecution(Query query) {
Op rewrittenOp = candidateViewSelector.getApplicableViews(query);
//rewrittenOp = Optimize.optimize(rewrittenOp, ARQ.getContext());
Query rewritten = MyOpAsQuery.asQuery(rewrittenOp, dialect);
System.out.println("Rewritten query: " + rewritten);
//Query rewritten = SparqlViewSystem.rewrite(query, system, dialect);
//logger.trace("Rewritten query: " + rewritten);
//System.out.println("Rewritten query: " + rewritten);
QueryExecution result = factory.createQueryExecution(rewritten);
return result;
}
}