package org.iswc.iswc2012main; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Map; import org.iswc.iswc2012main.Config.EXT; import org.iswc.iswc2012main.Config.FILE; import org.iswc.util.AgentSparql; 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.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; public class TaskRunSparqlQuery { public static void main(String[] args){ try { runDataset( FILE.iswc2012_complete ); // runDataset( FILE.iswc2010_complete ); // runDataset( FILE.iswc2011_complete ); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Sw4jException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void runDataset(FILE fileDataset) throws FileNotFoundException, Sw4jException{ File fData = fileDataset.getFile(); Model m = ModelFactory.createDefaultModel(); { if (!fData.exists()){ System.out.println("not found "+fData.getAbsolutePath()); } m.read(ToolIO.prepareFileInputStream(fData), Config.RDFSYNTAX.RDFXML.getValue()); System.out.println(m.size()); System.out.println( m.getNsPrefixMap() ); } for (FILE fileQuery: FILE.values()){ if (!EXT.sparql.equals(fileQuery.ext)) continue; File fQuery = fileQuery.getFile(); System.out.println("processing query "+fQuery.getAbsolutePath()); String output = runSelect(m, fQuery,Config.RDFSYNTAX.CSV); File fOutput = new File( Config.PATH.data_queryoutput.getFile(), fileDataset.name()+"-"+ fileQuery.name()+"."+EXT.csv); ToolIO.pipeStringToFile(output, fOutput, false, false); } } public static String runSelect(Model m, File fQuery, Config.RDFSYNTAX syntax) throws FileNotFoundException, Sw4jException{ String sz_sparql_query = ""; { sz_sparql_query = ToolIO.pipeFileToString(fQuery); System.out.println(sz_sparql_query); } AgentSparql sparql = new AgentSparql(); Dataset dataset = DatasetFactory.create(m); Object ret = sparql.exec(sz_sparql_query, dataset, syntax); String result = ret.toString(); Map<String,String > mapPrefixNs = m.getNsPrefixMap(); for (String prefix: mapPrefixNs.keySet()){ String uri = mapPrefixNs.get(prefix); if (null == prefix || prefix.length()==0) continue; result = result.replaceAll(uri, prefix+":"); } // result = result.replaceAll("http://data.semanticweb.org/person/", "dogfood_person:"); // result = result.replaceAll("http://data.semanticweb.org/organization/", "dogfood_org:"); System.out.println(result); return result; } }