package org.aksw.jena_sparql_api.stmt;
import com.google.common.base.Supplier;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.Syntax;
import org.apache.jena.sparql.core.Prologue;
public class SparqlQueryParserImpl
implements SparqlQueryParser
{
protected Supplier<Query> querySupplier;
protected Syntax syntax;
protected String baseURI;
public SparqlQueryParserImpl() {
this(new QuerySupplierImpl(), Syntax.syntaxARQ, "http://example.org/base/");
}
public SparqlQueryParserImpl(Supplier<Query> querySupplier, Syntax syntax, String baseURI) {
super();
this.querySupplier = querySupplier;
this.syntax = syntax;
this.baseURI = baseURI;
}
@Override
public Query apply(String queryString) {
Query result = querySupplier.get();
QueryFactory.parse(result, queryString, baseURI, syntax);
return result;
}
public static SparqlQueryParserImpl create(SparqlParserConfig config) {
SparqlQueryParserImpl result = create(config.getSyntax(), config.getPrologue());
return result;
}
public static SparqlQueryParserImpl create() {
SparqlQueryParserImpl result = create(Syntax.syntaxARQ, null);
return result;
}
public static SparqlQueryParserImpl create(Syntax syntax) {
SparqlQueryParserImpl result = create(syntax, null);
return result;
}
public static SparqlQueryParserImpl create(Syntax syntax, Prologue prologue) {
Supplier<Query> querySupplier = new QuerySupplierImpl(prologue);
SparqlQueryParserImpl result = new SparqlQueryParserImpl(querySupplier, syntax, null);
return result;
}
}