package org.iswc.util; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.util.Iterator; import org.iswc.iswc2012main.Config; import org.iswc.iswc2012main.Config.RDFSYNTAX; import sw4j.util.Sw4jException; import sw4j.util.ToolIO; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.DatasetFactory; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFormatter; import com.hp.hpl.jena.query.Syntax; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.sparql.engine.binding.Binding; public class AgentSparql { protected int inf_option=0; protected Query query; protected Dataset dataset; protected QueryExecution qexec; protected Syntax defaultQuerySyntax= Syntax.syntaxARQ; public Object exec(String queryString, Config.RDFSYNTAX rdfSyntax){ this.query = QueryFactory.create(queryString, defaultQuerySyntax) ; Dataset dataset = DatasetFactory.create(query.getGraphURIs(), query.getNamedGraphURIs()); return exec(queryString, dataset, rdfSyntax); } public Object exec(String queryString, Dataset dataset, Config.RDFSYNTAX rdfSyntax){ this.query = QueryFactory.create(queryString, defaultQuerySyntax) ; this.dataset = dataset; run_sparql(); Object ret = gerRet(rdfSyntax); this.qexec.close() ; return ret; } protected void run_sparql(){ qexec = QueryExecutionFactory.create(query, dataset); } private Object gerRet(Config.RDFSYNTAX rdfSyntax){ Object ret = null; if (query.isDescribeType()){ ret = qexec.execDescribe(); }else if (query.isConstructType()){ ret = qexec.execConstruct() ; }else if (query.isSelectType()){ ResultSet results = qexec.execSelect() ; //System.out.println(ResultSetFormatter.asText(results)); ByteArrayOutputStream sw = new ByteArrayOutputStream(); if (Config.RDFSYNTAX.SPARQL_XML.equals(rdfSyntax)){ ResultSetFormatter.outputAsXML(sw, results); }else if (Config.RDFSYNTAX.SPARQL_JSON.equals(rdfSyntax)){ ResultSetFormatter.outputAsJSON(sw, results); }else if (Config.RDFSYNTAX.CSV.equals(rdfSyntax)){ ResultSetFormatter.outputAsCSV(sw, results); }else if (Config.RDFSYNTAX.TSV.equals(rdfSyntax)){ ResultSetFormatter.outputAsTSV(sw, results); }else if (Config.RDFSYNTAX.SPARQL_TXT.equals(rdfSyntax)){ return ResultSetFormatter.asText(results); }else{ ResultSetFormatter.out(sw,results, query); } try { ret = sw.toString("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }else if (query.isAskType()){ ret = qexec.execAsk() ; } return ret; } }