linux day 2014: open data in umbria - dai dataset alle app
DESCRIPTION
Al Linux Day 2014, nell'evento organizzato a Magione (Pg) dall'Associazione Gnu/Lug Perugia, Tommaso Vicarelli e Cristiano Donato (Agenda digitale dell'Umbria) hanno parlato del portale http://dati.umbria.it/ - uso di software open source, lavorazione dei dati e sviluppo di app.TRANSCRIPT
Questo lavoro è pubblicato sotto licenzaCreative Commons “Attribuzione 3.0 Italia” (CC BY).Per visualizzare una copia della licenza visitare il sito:http://creative commons.org/licenses/by/3.0/it/
#AdUmbria #regioni4digitale
presentazione per ForumPA
28/06/2014 v1.0
Open data in Umbria dai dataset alle app
Cristiano DonatoTommaso VicarelliUniversità degli Studi di Perugia
Presentazione per Linux DayPerugia 25/10/2014
Sommario
2#AdUmbria www.agendadigitale.regione.umbria.it
1. Gli Open data2. Il percorso compiuto da AdUmbria3. Sviluppi futuri4. CKAN5. Utilizzo programmatico dei dati6. InUmbria Android APP7. Download automatico: CKAN API8. Parser JSON e CSV9. Conclusioni
Gli Open Data
Dato: (dal latino datum che significa letteralmente fatto) è una descrizione elementare, spesso codificata, di una cosa, di una transazione, di un avvenimento o di altro. [Wikipedia]
3#AdUmbria www.agendadigitale.regione.umbria.it
Elaborare i dati porta a conoscere informazioni
www.svegliamuseo.com
• Sono disponibili per l’utilizzo (preferibilmente tramite internet)
• Sono Machine readable• Sono riutilizzabili e redistribuibili da tutti
(partecipazione universale e interoperabilità)
4#AdUmbria www.agendadigitale.regione.umbria.it
Gli Open Data
Dati caratterizzati da alcune proprietà
www.michelecamp.it
5#AdUmbria www.agendadigitale.regione.umbria.it
Gli Open Data
Classificazione di Tim Berners-Lee:
( ) Una Stella: livello base, ★ dati statici e non strutturati( ) Due Stelle. Questo livello indica ★★ dati strutturati e codificati in un formato proprietario ( ) Tre Stelle. Questo livello indica ★★★ dati strutturati e codificati in un formato aperto.( ) Quattro Stelle. Questo livello indica ★★★★ dati strutturati in un formato aperto e dotati di un URI che li rende indirizzabili sulla rete.( ) Cinque Stelle. Questo livello indica quelli ★★★★★che vengono definiti come Linked Open Data (LOD).
http://michellethorne.cc
Case study 1 - Open Bilanci
6#AdUmbria www.agendadigitale.regione.umbria.it
Gli Open Data
http://www.openbilanci.it/
7#AdUmbria www.agendadigitale.regione.umbria.it
Gli Open DataCase study 2 - Open Streetmap
http://www.openstreetmap.org/relation/42310#map=12/43.1353/12.1928
8#AdUmbria www.agendadigitale.regione.umbria.it
Gli Open DataCase study 3 - RAW
http://app.raw.densitydesign.org/#%2F
9#AdUmbria www.agendadigitale.regione.umbria.it
Il percorso compiuto da AdUmbria
Data Hunting
Individuazione settori d'interesse Colloqui con dirigenti dei settori Ricerca possibili dati da estrarre Analisi della tecnologia alla base
delle “banche dati”
10#AdUmbria www.agendadigitale.regione.umbria.it
Il percorso compiuto da AdUmbria
Il catalogo dei dataset
Compilazione scheda informativa da parte dei referenti tecnici
Inserimento schede informative nella catena di lavorazione o “Dataset Pipeline”
Creazione di un catalogo dei metadati
http://icongal.com
11#AdUmbria www.agendadigitale.regione.umbria.it
Il percorso compiuto da AdUmbria
Data scraping
Dati tabulari disponibili in formato PDF (“una stella”) Disponibilità di tool per l'estrazione e la conversione in
formato “machine readable” di dati statici. Tabula: la soluzione open source
tabula.nerdpower.org/
12#AdUmbria www.agendadigitale.regione.umbria.it
Il percorso compiuto da AdUmbriaValidazione – Data cleansing
Passo antecedente la pubblicazione Alcuni dati possono essere “sporchi” Necessari tool di data cleansing Strumento open source: Refine
https://code.google.com/p/google-refine/
• Agricoltura• Amministrazione• Attività produttive• Cultura• Istruzione• Lavoro• Opere pubbliche• Territorio• Turismo
#AdUmbria www.agendadigitale.regione.umbria.it 13
Quali dati ci sono oggi su dati.umbria.it?
14#AdUmbria www.agendadigitale.regione.umbria.it
Sviluppi futuri
Extract Transform Load
Tecniche per il recupero e l’aggregazione di dati provenienti da sorgenti diverse Utilizzata per la creazione di Datawarehouse Interazione tra banche dati diverse
DB1
DB3
DB2 DW
Extract
Load
15#AdUmbria www.agendadigitale.regione.umbria.it
Sviluppi futuriLinked Open Data
Collegare l’informazione la
rende più completa e aumenta il suo valore
Ogni «oggetto» viene identificato in rete tramite un URI ed è sempre disponibile
Più oggetti possono essere collegati tra loro, per migliorare la ricerca di informazioni.
"Ursa Major constellation detail map" di http://en.wikipedia.org/wiki/User:B00P & me (SAE1962 10:04, 2 April 2008 (UTC)) - English Wikipedia, but modified it.. Con licenza Creative Commons Attribution-Share Alike 3.0 tramite Wikimedia Commons
16#AdUmbria www.agendadigitale.regione.umbria.it
Sviluppi futuri
Linked Open Data
"LOD Cloud Diagram as of September 2011" by Anja Jentzsch - Own work. Licensed under Creative Commons Attribution-Share Alike 3.0 via Wikimedia Commons-
17#AdUmbria www.agendadigitale.regione.umbria.it
Sviluppi futuri
Monitoraggio
Necessario per il miglioramento continuo (modello PDCA) Creazione community e divulgazione culturale
Main goals
Main tools
Monitoraggio portale con Google Analytics
Monitoraggio richieste (Gestione della domanda)
18#AdUmbria www.agendadigitale.regione.umbria.it
The Comprehensive Knowledge Archive Network
Hub open source per la raccolta e la gestione della conoscenza
Permette di immagazzinare e distribuire dati in vari formati
Gestisce anche la presentazione dei dati
http://ckan.org/
19#AdUmbria www.agendadigitale.regione.umbria.it
Principali features (1/2)
• Presentazione dei dati:• Grafici• Mappe
• Anteprima di vari tipi di file• CSV• JSON• PDF• …
http://ckan.org/
20#AdUmbria www.agendadigitale.regione.umbria.it
Principali features (2/2)
• Possibilità di «agganciare» Google Analytics• Disponibile anche strumento interno alla piattaforma
• «Social buttons» di ADU• Feed RSS da blog #Umbriadigitale
http://ckan.org/
21#AdUmbria www.agendadigitale.regione.umbria.it
Pubblicazione
Ogni dataset contiene:
• Risorse• Metadati
Le info racchiuse nel contenitore sono accessibile anche tramite chiamata alle API
http://ckan.org/
dati.umbria.it
22#AdUmbria www.agendadigitale.regione.umbria.it
API
CKAN mette a disposizione un set di API che consentono (ad esempio):
•Il recupero di tutte le info associate al dataset come:• Metadati• URL per download
•L’inserimento dei dati nel catalogo
http://ckan.org/
ckan.org
L’accesso ai dati
• Gli open data sono machine readable– Sono in un formato standard– Sono in un formato open– Possono essere letti e interpretati da una macchina- Possono essere letti e interpretati da un essere umano
23#AdUmbria www.agendadigitale.regione.umbria.it
#AdUmbria www.agendadigitale.regione.umbria.it 24
•Piccole quantità di dati•Elaborazione preimpostate•Un dataset alla volta•Controllo di versione manuale (soggetta a errore umano)•Download manuale•Il limite è dato dalle funzionalità di CKAN
•Grandi quantità di dati•Qualunque tipo di elaborazione•Più dataset alla volta•Controllo di versione automatico
•Download automatico•Il limite è dato dalla fantasia e le capacità dello sviluppatore!
MAN vs MACHINE
#AdUmbria www.agendadigitale.regione.umbria.it 25
THE WINNER IS:
Machines
#AdUmbria www.agendadigitale.regione.umbria.it 26
THE WINNER IS:
Machines with a heart!
InUmbria Android APPhttps://play.google.com/store/apps/details?id=it.pg.avolta.inumbria
• Ha avuto scopi didattici (stage ITIS A VOLTA)
#AdUmbria www.agendadigitale.regione.umbria.it 27
InUmbria Android APPhttps://play.google.com/store/apps/details?id=it.pg.avolta.inumbria
• Ha avuto scopi didattici (stage ITIS A VOLTA)
• E’ il primo esempio di utilizzo degli opendata della Regione Umbria
#AdUmbria www.agendadigitale.regione.umbria.it 28
InUmbria Android APPhttps://play.google.com/store/apps/details?id=it.pg.avolta.inumbria
• Ha avuto scopi didattici (stage ITIS A VOLTA)
• E’ il primo esempio di utilizzo degli opendata della Regione Umbria
• Valorizza il territorio (luoghi della cultura in Umbria)
#AdUmbria www.agendadigitale.regione.umbria.it 29
InUmbria Android APP
• Download delle risorse da CKAN
• Parsing del dataset
• Visualizzazione su Android
#AdUmbria www.agendadigitale.regione.umbria.it 30
http://ckan.org/
http://opencsv.sourceforge.net/
http://json.org/
http://www.android.com/CC BY 3.0
CKAN API
• CKAN offre delle API RESTful JSON– Chiamate e risposte http– Messaggi JSON
31#AdUmbria www.agendadigitale.regione.umbria.it
http://www.chemaxon.com/
CKAN API
• Funzionalità delle API di CKAN:– Richiedere la lista di tutti i dataset, delle categorie o dei tag– Richiedere la rappresentazione di un elemento– Effettuare una ricerca– Richiedere la lista delle ultime attività sui dataset– Creare, aggiornare e eliminare dataset, risorse e altri elementi– Interrogare un dataset (ricerche e filtri)– Statistiche– CSV e JSON dump– Scrivere un dataset
32#AdUmbria www.agendadigitale.regione.umbria.it
http://ckan.org/
CKAN API - esempio
33#AdUmbria www.agendadigitale.regione.umbria.it
http://ckan.org/http://dati.umbria.it/api/action/datastore_search?resource_id=ccdc8f3e-8b48-4072-adc4-2e686bfe90e3
Effettuare una chiamata con Java
String urlToRead = "http://dati.umbria.it/api/action/datastore_search?resource_id=ccdc8f3e-8b48-4072-adc4-2e686bfe90e3";URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;String result = "";
while ((line = rd.readLine()) != null) {result += line;}
34#AdUmbria www.agendadigitale.regione.umbria.it
https://www.java.com
Parsing del dataset csv (opencsv)
CSVReader reader = null;List<Luogo> listaLuogo = new ArrayList<Luogo>();try {
InputStream is = activity.getResources().openRawResource(R.raw.opendata_musei);
InputStreamReader isr = new InputStreamReader(is);reader = new CSVReader(isr, ';');String[] nextLine = reader.readNext();nextLine = reader.readNext();while (nextLine != null) {
Luogo l = new Luogo();l.setId(Integer.parseInt(nextLine[0]));l.setComune(nextLine[1]);//[…]
35#AdUmbria www.agendadigitale.regione.umbria.it
Parsing del dataset csv (opencsv)
//[…]Luogo l = new Luogo();l.setId(Integer.parseInt(nextLine[0]));l.setComune(nextLine[1]);l.setProvincia(nextLine[2]);l.setNomeMuseo(nextLine[3]);l.setIndirizzo(nextLine[4]);l.setNumeroCivico(nextLine[5]);l.setCap(nextLine[6]);l.setX(Double.parseDouble(nextLine[7]));l.setY(Double.parseDouble(nextLine[8]));l.setProprieta(nextLine[9]);l.setSitoWeb(nextLine[10]);l.setEmail(nextLine[11]);
36#AdUmbria www.agendadigitale.regione.umbria.it
l.setNumeroTelefono(nextLine[12]);l.setNumeroFax(nextLine[13]);l.setTelefonoPrenotazione(nextLine[14]);l.setEmailPrenotazione(nextLine[15]);listaLuogo.add(l);nextLine = reader.readNext();}//end whilereturn listaLuogo;} finally {if (reader != null)reader.close();}
Parsing del dataset (json)
String in;JSONObject reader = new JSONObject(dataset);JSONArray records = reader.getJSONObject("result").getJSONArray("records");
List<Luogo> listaLuogo = new ArrayList<Luogo>();
for(int i=0; i < records.length(); i++) {Luogo l = new Luogo();JSONObject record = records.getJSONObject(i);l.setComune(record.getString(0));//[…]l.setTelefonoPrenotazione(record.getString(14));listaLuogo.add(l);
• } }
37#AdUmbria www.agendadigitale.regione.umbria.it
38#AdUmbria www.agendadigitale.regione.umbria.it
InUmbria Android APPhttps://play.google.com/store/apps/details?id=it.pg.avolta.inumbria
Conclusioni
• Il rilascio di opendata aiuta ad avere una PA trasparente (veramente) e focalizzata sul cittadino
• Le licenze open consentono qualsiasi elaborazione (anche a scopi commerciali)
• Le tecnologie open e gli standard permettono di accedere rapidamente ai dati e elaborarli secondo le necessità
#AdUmbria www.agendadigitale.regione.umbria.it 39
Si possono richiedere a
o
su twitter @ADUmbria
#AdUmbria www.agendadigitale.regione.umbria.it 40
E se non ci sono i dati che mi interessano?
Riferimenti Dott.Cristiano Donato
Email: [email protected]
Twitter: @dcristiano88
ing. Tommaso VicarelliEmail: [email protected]
Twitter: @VicarelliT
Linkedin: it.linkedin.com/pub/tommaso-vicarelli/
www.agendadigitale.regione.umbria.it
41#AdUmbria www.agendadigitale.regione.umbria.it