setup endpoint SPARQL - for dummies

84 views
Skip to first unread message

Jacopo Tagliabue

unread,
Aug 25, 2013, 8:48:26 AM8/25/13
to spaghett...@googlegroups.com
Ciao a tutti,

seguo con interesse questa lista da un paio di mesi e mi sembra l'unico posto in cui avere qualche suggerimento sensato per il mio problema :-)

In poche parole, sto sviluppando un'applicativo che usa DBpedia per alcuni dati - ma l'endpoint "standard" (http://it.dbpedia.org/sparql) ha spesso molti problemi di performance: il servizio è (giustamente) limitato nelle query, i tempi di risposta variano moltissimo e spesso l'endpoint non è disponibile per molto tempo. Morale della favola: vorrei usare un mio server dedicato per hostare un endpoint con DBpedia italiana (o un subset - da vedere).

Ho ovviamente googlato un po' ma non riesco ad orientarmi nel territorio con efficienza: qualcuno ha dei suggerimenti / un tutorial / un manuale aggiornato su come installare un endpoint sparql tipo DBpedia partendo da zero su server Windows?

Grazie in anticipo per qualsiasi pointer,

JT

Alfredo Serafini

unread,
Aug 25, 2013, 9:11:42 AM8/25/13
to spaghett...@googlegroups.com
ciao Jacopo

intanto rispetto alle performance puoi usare pure: http://live.dbpedia.org/

per l'installazione locale esistono molte differenti opzioni, sarebbe utile (ma non tassativo) capire di che tipo di ambiente tu abbia bisogno?
Tanto per cominciare ti consiglio caldamente di cambiare tipologia di server: quelli windows sono una vera palla al piede per la gestione del filesystem (necessario per la scrittura bianria di indici lucene, o per i vari formati di diversi graphdb, o anche per alcuni triplestores, da sesame a virtuoso), della RAM, dell'utilizzo multithread, della scalabilità eventuale, etc etc Nel peggiore dei casi metti su una macchina virtuale linux scarna sul tuo server windows, e installa il servizio lì (non scherzo, dico sul serio :-) Anche perché  per mettere su una dbpedia locale ti serve un bel po' di risorse! qualcosa come 32 gb di RAM, tanto per capirci, il che non si sposa benissimo con un server windows...

In ogni caso se adotti virtuoso puoi facilmente caricare un bel po' di risorse utilizzando il bilk load script di esempio che trovi sul sito (appena ho un minuto per cercarti il link te lo giro, se vuoi). Questo ci porta ad un altro problema: come vuoi caricare i dati? via script in bulk oppure tramite codice o qualche forma di tuo client? occhio perché i client tendono a far degenerare catastroficamente le performance, se non ben gestiti... La parte più delicata è l'eventuale uso di transazioni, tanto per cambiare :-)

Suggerisco vivamente di dare una occhiata a sesame, che è un ottimo punto per partire (è semplice da usare), è scritto in java e quindi di più facile integrazione rispetto a virtuoso, e in più l'interfaccia SAIL è ormai uno standard riconosciuto, implementato anche da triplestore più impegnativi come virtuoso stesso, big-owlim, allegrograph o altri. Sesame distribuisce due applicazioni war: il server e il workbench. Quest'ultima puoi usarla anche come interfaccia per altri triplestores che utilizzino SAIL, tra cui virtuoso, il che non è male in fase di prototipazione. Da ultimo diversi graphdb supportano l'interfaccia SAIL, ma per iniziare forse è meglio se parti con una cosa auto-consistente, così da non mettere troppa carne al fuoco. Anche se usi sesame ti consiglio il salvataggio su disco (evita come la peste quello su db relazionale :-), e quindi di nuovo di evitare windows, pardon.
Jena è un ottimo punto di partenza anch'esso (specie il componente ARQ), ma a mio avviso più adatto a piccoli client locali che per gestire grosse moli di dati: in questo senso occhio che tutte le versioni free reggono bene fino ad un numero relativamente alto di triple (qualche milione), ma sicuramente inferiore della mola di dbpedia tutto.

Ultima nota: se vuoi scremare dbpedia caricando solo i dati che ti servono (cosa che mi sento di consigliare) a mio avviso l'ottimo è scriversi un parser usando scala (puoi usare gli extractor ed i cicli interni) e le librerie RIO del parse sesame, ottime pure se vuoi un po' di validazione o se vuoi generare le tue skolemization per i blank node (basta implementare una interfaccia e registrare uno o più handler ;-)

Reply all
Reply to author
Forward
0 new messages