
Originariamente inviata da
blinkettaro
codice:
public void queryService(String sparqlQueryString,String[]solutionConcept) throws IOException {
query = QueryFactory.create(sparqlQueryString);
qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",query);
try{
ResultSet results = qexec.execSelect();
for(; results.hasNext();) {
QuerySolution soln = results.nextSolution();
for(int i=0;i<solutionConcept.length;i++){
System.out.print(solutionConcept[i]+":"+soln.get(solutionConcept[i]).toString() +"; ");
}
System.out.println("\n");
}
} finally{
qexec.close();
}
sostanzialmente è molto simile al mio:
codice:
StringBuffer sparqlQueryBuffer=new StringBuffer();
sparqlQueryBuffer.append(URLEncoder.encode("PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT ?istanze WHERE { ?istanze a dbpedia-owl:" + classi[classeCasuale] + " }", "UTF-8"));
sparqlQueryString = sparqlQueryBuffer.toString();
//A partire dalla stringa precedente creo la query vera e propria
Query query = null;
try{
query = QueryFactory.create(sparqlQueryString); //GRAVE: quest'istruzione sembra che non faccia nulla perché le 2 istruzioni successive non mi visualizzano nulla
output.write(query.toString());
output.flush();
} catch(Exception e){
output.write("Eccezione nella creazione della query: " + sparqlQueryString);
output.flush();
e.printStackTrace(output);
}
//Executing SPARQL Query and pointing to the DBpedia SPARQL Endpoint
//Faccio eseguire la query ad ARQ
//Dovrei usare il metodo .createServiceRequest
QueryEngineHTTP qExec1 = QueryExecutionFactory.createServiceRequest("http://it.dbpedia.org/sparql", query); //Create a service request for remote execution over HTTP. The returned class, QueryEngineHTTP, allows various HTTP specific parameters to be set. ---> Creazione di una richiesta di servizio per l'esecuzione remota su HTTP. La classe restituita, QueryEngineHTTP, permette di impostare diversi parametri specifici HTTP.
//o il metodo .sparqlService?
//QueryExecution qExec2 = QueryExecutionFactory.sparqlService("http://it.dbpedia.org/sparql", query); //Create a QueryExecution that will access a SPARQL service over HTTP. ---> Creazione di un QueryExecution che accederà a un servizio SPARQL su HTTP.
//((QueryEngineHTTP)qExec2).addParam("timeout", "10000");
//Retrieving the SPARQL Query results
//Ottengo il risultato della query di tipo SELECT
ResultSet results = qExec1.execSelect();
ResultSetFormatter.out(System.out, results, query);
//Iterating over the SPARQL Query results
while (results.hasNext()) {
QuerySolution solN = results.nextSolution();
//Stampo uno per volta tutti i risultati della query
output.write(solN.toString());
output.flush();
}
//Libero le risorse legate all'oggetto della classe QueryExecution che sono state utilizzate per eseguire la query
qExec1.close();
ma perché a me non mi funziona?
Dando un'occhiata al mio codice sai dirmi cosa c'è che non va?
Ovviamente rivolgo la domanda a chiunque altro legga questo messaggio! Rispondete pure, non preoccupatevi se vi intromettete nella conversazione!
Comunque gentilmente potresti mostrarmi l'intero tuo codice funzionante?
Grazie, a presto!