package org.aksw.jena_sparql_api.stmt;
import org.apache.jena.riot.system.IRIResolver;
import com.google.common.base.Supplier;
import org.apache.jena.query.Syntax;
import org.apache.jena.sparql.core.Prologue;
import org.apache.jena.sparql.lang.ParserSPARQL11Update;
import org.apache.jena.update.UpdateFactory;
import org.apache.jena.update.UpdateRequest;
public class SparqlUpdateParserImpl
implements SparqlUpdateParser
{
protected Supplier<UpdateRequest> updateRequestSupplier;
protected Syntax syntax;
protected String baseURI;
public SparqlUpdateParserImpl(Supplier<UpdateRequest> updateRequestSupplier, Syntax syntax, String baseURI) {
super();
this.updateRequestSupplier = updateRequestSupplier;
this.syntax = syntax;
this.baseURI = baseURI;
}
@Override
public UpdateRequest apply(String updateString) {
UpdateRequest result = updateRequestSupplier.get();
UpdateFactory.parse(result, updateString, baseURI, syntax);
return result;
}
public static SparqlUpdateParserImpl create(SparqlParserConfig config) {
SparqlUpdateParserImpl result = create(config.getSyntax(), config.getPrologue());
return result;
}
public static SparqlUpdateParserImpl create() {
SparqlUpdateParserImpl result = create(Syntax.syntaxARQ);
return result;
}
public static SparqlUpdateParserImpl create(Syntax syntax) {
Prologue prologue = new Prologue();
prologue.setBaseURI(IRIResolver.createNoResolve());
SparqlUpdateParserImpl result = create(syntax, prologue);
return result;
}
public static SparqlUpdateParserImpl create(Syntax syntax, Prologue prologue) {
Supplier<UpdateRequest> updateSupplier = new UpdateSupplierImpl(prologue);
SparqlUpdateParserImpl result = new SparqlUpdateParserImpl(updateSupplier, syntax, null);
return result;
}
}