Quote Originariamente inviata da blinkettaro Visualizza il messaggio
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!