package org.deri.grefine.reconcile.rdf.executors;
import java.util.Collections;
import org.json.JSONException;
import org.json.JSONWriter;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP;
public class VirtuosoRemoteQueryExecutor extends RemoteQueryExecutor{
public VirtuosoRemoteQueryExecutor(String sparqlEndpointUrl,String defaultGraphUri) {
super(sparqlEndpointUrl,defaultGraphUri);
}
@Override
public ResultSet sparql(String sparql) {
//we use QueryEngineHTTP to skip query validation as Virtuoso needs non-standardised extensions and will not pass ARQ validation
QueryEngineHTTP qExec = new QueryEngineHTTP(sparqlEndpointUrl, sparql);
if(defaultGraphUri!=null){
qExec.setDefaultGraphURIs(Collections.singletonList(defaultGraphUri));
}
ResultSet res = qExec.execSelect();
return res;
}
@Override
public void write(JSONWriter writer) throws JSONException {
writer.object();
writer.key("type"); writer.value("remote-virtuoso");
writer.key("sparql-url"); writer.value(sparqlEndpointUrl);
if(defaultGraphUri!=null){
writer.key("default-graph-uri"); writer.value(defaultGraphUri);
}
writer.endObject();
}
}