Autore Topic: Jena per il Web Semantico  (Letto 689 volte)

Offline Man

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows xp
Jena per il Web Semantico
« il: 17 Maggio 2012, 12:05:02 CEST »
0
Ciao a tutti.

Mi sono appena iscritto al forum e ho subito un quesito da proporvi. Sto facendo una app (platform 2.2 api 8) deve trovare delle informazioni sulla città in cui si trova l'utente attraverso dbpedia.

Ho ricercato su google e ho trovato Jena che permette di effettuare interrogazioni su dbpedia. Il problema è che se utilizzo un progetto Java "tradizionale" funziona tutto, mentre se lo porto su un progetto android mi dice che non riesce a trovare le librerie Jena. Ho poi trovato la versione android di jena, ma purtroppo non mi trova alcune classi di Jena.....

Avete consigli?

Vi posto la classe Java che mi interroga dbpedia indicando anche gli errori, forse può essere utile!

Codice (Java): [Seleziona]
package it.devapp.prova.interrogazioni;

import java.util.*;
import com.hp.hpl.jena.query.*;//libreria non trovata
import com.hp.hpl.jena.rdf.model.*;
import it.devapp.prova.luoghiInteresse.statici.*;

public class InterrogaDbpedia extends Thread{
        private String queryString;
        private ArrayList<String> risposta;
        private String url;
        private Model model;
        private String[]attributi;
        /**
         * inizializza i dati per interrogare dpedia
         * @param c - Citta la città
         * @param query - String la query
         * @param attr - String[] gli attributi (colonne)
         */

        public InterrogaDbpedia(Citta c,String query,String[]attr){
                this.queryString=query;
                url=c.getUrl();
                risposta=new ArrayList<String>();
                attributi=attr;
                model=null;
                model = ModelFactory.createMemModelMaker().createModel(null);
                model.read(url);
        }
        public InterrogaDbpedia(Model m,String query,String[]attr){
                this.queryString=query;
                this.url="";
                risposta=new ArrayList<String>();
                attributi=attr;
                model=null;
                model = m;
        }
        public static Model createModelByConstruct(String queryString){
                Query query=null;//Query si trova in com.hp.hpl.jena.query.*;
                try{
                        [glow=red,2,300]query=QueryFactory.create(queryString);//QueryFactory si trova in com.hp.hpl.jena.query.*;[/glow]
                }catch(Exception e){System.out.println("Eccezione nella query: ".concat(queryString));e.printStackTrace();}
                [glow=red,2,300]QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);//QueryExecutionFactory si trova in com.hp.hpl.jena.query.*;[/glow]
                return qexec.execConstruct();//errore!!
        }
       
        public static boolean ask(String queryString){
                Query query=null;
                try{
                        query=QueryFactory.create(queryString);//QueryFactory si trova in com.hp.hpl.jena.query.*;
                }catch(Exception e){System.out.println("Eccezione nella query: ".concat(queryString));e.printStackTrace();}
                [glow=red,2,300]QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);//QueryExecutionFactory si trova in com.hp.hpl.jena.query.*;[/glow]
                return qexec.execAsk();
        }
        /**
         * metodo per interrogare dbpedia
         */

        public void run(){
                [glow=red,2,300]Query query=null;//Query si trova in com.hp.hpl.jena.query.*;[/glow]
                try{
                        [glow=red,2,300]query=QueryFactory.create(queryString);//QueryFactory si trova in com.hp.hpl.jena.query.*;[/glow]
                }catch(Exception e){System.out.println("Eccezione nella query: ".concat(queryString));}
                [glow=red,2,300]QueryExecution qe;ResultSet results;//QueryExecutionFactory e ResiòtSet si trovano in com.hp.hpl.jena.query.*;[/glow]
                [glow=red,2,300]if(model==null) qe = QueryExecutionFactory.create(query);//QueryExecutionFactory si trovano in com.hp.hpl.jena.query.*;
                else qe = QueryExecutionFactory.create(query, model);//Query e QueryExecutionFactory si trovano in com.hp.hpl.jena.query.*;[/glow]
                results = qe.execSelect();
               
                while(results.hasNext()){
                        [glow=red,2,300]QuerySolution soln = results.nextSolution();//QuerySolution si trova in com.hp.hpl.jena.query.*;[/glow]
                        for(int i=0;i<attributi.length;i++){
                                try{
                                        risposta.add(soln.get(attributi[i]).toString());
                                }catch(NullPointerException npe){risposta.add("@@none@@");}
                        }
                }
                qe.close();
        }
        /**
         * torna il risultato della query sparql
         * @return ArrayList<String> il risultato della query
         */

        public ArrayList<String>getRisposta(){return risposta;}
}

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Jena per il Web Semantico
« Risposta #1 il: 17 Maggio 2012, 16:04:49 CEST »
0
Come importi la libreria? Devi inserire il jar nella cartella libs nella root del progetto e poi aggiornare il buildpath

Offline Man

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows xp
Re:Jena per il Web Semantico
« Risposta #2 il: 17 Maggio 2012, 16:18:15 CEST »
0
Ciao djdedo.

 :-[

Chiaramente non avevo posizionato la cartella libs nella root, ma in una sottocartella. Ora provo a vedere se il resto è tutto ok...

Grazie 1000.