Leggere, interrogare e trasformare file XML da riga di comando

Intro

Il comune di Palermo ha pubblicato i dati pubblici e aperti sulle elezioni comunali dell’11 giugno 2017 in formato XML, con uno schema descritto in questo file.

Qui sotto ad esempio la struttura di uno degli oltre 200 file pubblicati.

L’XML è uno dei formati classici di pubblicazione di dati aperti, ma non è un formato per tutti. Molti utenti infatti non sono in grado di esaminarli.
Per la sua natura è facilmente leggibile da un calcolatore e ci sono varie modalità per farlo.

E con un’utility specializzata (XMLStarlet) e con un piccolo comando come questo di sotto, è possibile trasformare questo file XML in una “piatta” tabella con tutti i dati sui voti dei candidati di una lista al consiglio comunale, per ogni sezione elettorale (40 candidati per 600 sezioni, quindi 24000 record).

xmlstarlet sel –net -t -m //SV/V0/V1 -v @NUMERO -o , \
-v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , \
-v ../../@NUMERO -n \
http://comunali2017.comune.palermo.it/SEZ_3_82053_L12.xml

 

Qui sotto lo vedete in azione:

I dati sui risultati delle liste elettorali hanno questa struttura:

<SV NUMERO=1 NOME=SEZIONE 1 NOMEBREVE=SEZ. 1 UBICAZIONE= NUM_ZONA= NUM_ZONA2= TOTVOT=540 TOTVOTM=255 TOTVOTF=285 FLZEROVOT=N ELETTORI=1112 ELETTORIM=556 ELETTORIF=556 CONFERMATO=S VOTIVALIDI_C0=54 VOTIVALIDI_C1=37 VCAS_C1=0″ VCNAS_C1=”0″ VOTI_SOLO_C1=”0″ VOTIVALIDI_C2=”0″ VCAS_C2=”0″ VCNAS_C2=”0″ VCNAS_TOT=”0″ VOTI_SOLO_C2=”0″ VOTI_NULLI_SOLO_C2=”0″ VOTI_NULLI=”0″ NULLE=”21″ BIANCHE=”8″ CONFCONS=”S” MAXVOTVAL=”9″>
        <V0 NUMERO=12 VOTIVALIDI_C0=54 TOT_VOTIVALIDI_C1=37 TOT_VOTISOLO_C1=0>
            <V1 NUMERO=1 VOTIVALIDI_C1=5 VOTISOLO_C1=0 VOTCONASS_C1=0 VOTCONNONASS_C1=0 CIFRAIND=59 TOT_VOTIVALIDI_C2=0 TOT_VOTISOLO_C2=0/>
            <V1 NUMERO=2 …/>
            <V1 NUMERO=3 …/>        
        </V0>
</SV>

 

SV è la sezione elettorale con il suo numero identificativo (e altri attributi), che contiene al suo interno i dati su V0 che rappresenta la lista (in questo caso la 12, quella del “Movimento 5 stelle”), che contiene al suo interno V1, ovvero i dati sui candidati al consiglio comunale. Con questa struttura gerarchica SV>V0>V1.

Il comando di sopra nel dettaglio:

  • sel --net -t -m, abilito la selezione (sel) su un file remoto (--net), impostando un template (-t) per “mappare” gli elementi che corrispondono (“matchano” -m) alla seguente query XPATH;
  • "//SV/V0/V1", i candidati al consiglio;
  • "@NUMERO", l’attributo con il numero identificativo del candidato;
  • -o ",", per inserire un separatore di testo;
  • -v "@VOTIVALIDI_C1", l’attributo con i voti validi del candidato;
  • -o ",", per inserire un separatore di testo;
  • -v "../@NUMERO", mi muovo verso l’alto nella gerarchia dell’XML di un gradino con .., quindi vado in V0 (la lista) e recupero l’identificativo numerico della lista;
  • -o ",", per inserire un separatore di testo;
  • -v "../../@NUMERO", mi muovo verso l’alto nella gerarchia dell’XML di due gradini con ../.., quindi vado in SV (il seggio) e recupero l’identificativo numerico del seggio;
  • -n, per inserire un’andata a capo per ogni risultato ottenuto;
  • http://…/SEZ_3_82053_L12.xml è l’URL del file XML.

In output nella shell avrò:

1,5,12,1
2,9,12,1
3,2,12,1
…,…,…,…

Ovvero

numeroCandidato voti numeroLista sezione
1 5 12 1
2 9 12 1
3 2 12 1

Creare dei file CSV con i dati per tutte le liste

Ho pensato che possa essere molto interessante fare un esempio più ricco e completo e creare uno script bash per:

  • scaricare tutti i file XML delle 18 liste;
  • estrarre da ognuno l’anagrafica dei candidati consiglieri;
  • estrarre da ognuno il numero di voti, per ogni sezione, di ogni candidato al consiglio;
  • fare il join – unire – le info sul numero di voti, con l’anagrafica dei candidati consiglieri, e creare un file CSV per ogni lista;
  • unire tutti i file CSV e produrre anche un unico file con il numero di voti di ogni candidato, per ogni lista, per ogni sezione.

Requisiti

Il prodotto finale è uno script BASH, quindi bisogna avere a disposizione un sistema compatibile con questo linguaggio (lo sono essenzialmente tutti).

Richiede tre utility:

  • l’immancabile cURL, per scaricare i file;
  • XMLStarlet per interrogare i file XML e trasformarli in file CSV;
  • csvkit per fare il join e il merge dei CSV scaricati.

Richiede una conoscenza di base (e/o la volontà/possibità di farserla) su:

  • XPATH, per estrarre i dati (per interrogare) i file XML;
  • la linea di comando, perché è un po’ il campo di gioco di queste modalità di accesso e modifica di file;
  • BASH, che è il linguaggio dello script finale;
  • aprire i file XML del comune con un buon editor di testo, guardarli un po’ e comprenderne la struttura.

Lo script

Lo script per intero è più in basso. A seguire un esploso delle varie parti che lo compongono.

La prima cosa che viene eseguita nello script è il download dei file delle liste. Queste sono 18 ed è comodo scaricarle con un ciclo for ... loop che lo fa 18 volte per noi.

for i in {1..18};
  do curl -s http://comunali2017.comune.palermo.it/SEZ_3_82053_L$i.xml > $i.xml;
done

 

Poi da ognuno dei 18 file XML vengono estratti i dati anagrafici e i dati per sezione, sempre con un ciclo for.
A ogni file viene aggiunta anche un’intestazione di colonne.

# scarico l’anagrafica di ogni candidato di ogni lista
for i in {1..18}; do xmlstarlet sel -t -m //C0/C1 -v @NUMERO -o , -v @NOME -o , -v ../@NUMERO -o , -v ../@NOME -n $i.xml > anagraficaLista_$i.txt; sed -i 1s/^/numeroCandidato,nomeCandidato,numeroLista,nomeLista\n/ anagraficaLista_$i.txt & done
 
# scarico i voti di ogni candidato di ogni lista per ogni sezione
for i in {1..18}; do xmlstarlet sel -t -m //SV/V0/V1 -v @NUMERO -o , -v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , -v ../../@NUMERO -n $i.xml > listaSezioni_$i.txt ; sed  -i 1s/^/numeroCandidato,voti,numeroLista,sezione\n/ listaSezioni_$i.txt & done

 

I file di anagrafica hanno questa struttura:

numeroCandidato nomeCandidato numeroLista nomeLista
1 GELARDA IGOR DETTO GERARDA DETTO GERALDA 12 MOVIMENTO 5 STELLE
2 ARGIROFFI GIULIA 12 MOVIMENTO 5 STELLE
3 CAPARROTTA GIANCARLO DETTO CAPAROTTA 12 MOVIMENTO 5 STELLE

Mentre quelli con i dati per sezione:

numeroCandidato voti numeroLista sezione
1 5 12 1
2 9 12 1
3 2 12 1

Poi viene fatto il join tra anagrafica e dati per sezione:

for i in {1..18}; do csvsql –query select * from  listaSezioni_$i LEFT JOIN anagraficaLista_$i ON listaSezioni_$i.numeroCandidato=anagraficaLista_$i.numeroCandidato listaSezioni_$i.txt anagraficaLista_$i.txt > lista_$i.csv; done

Per ogni lista viene prodotto un file con nome lista_NumeroLista.csv, con questa struttura (ci sono delle colonne duplicate, che potrei rimuovere in fase di join):

numeroCandidato voti numeroLista sezione numeroCandidato nomeCandidato numeroLista nomeLista
1 5 12 1 1 GELARDA IGOR DETTO GERARDA DETTO GERALDA 12 MOVIMENTO 5 STELLE
2 9 12 1 2 ARGIROFFI GIULIA 12 MOVIMENTO 5 STELLE
3 2 12 1 3 CAPARROTTA GIANCARLO DETTO CAPAROTTA 12 MOVIMENTO 5 STELLE

E infine viene creato anche un unico file CSV di insieme (scaricabile da qui), con i dati per tutti i consiglieri di tutte le liste, per ogni sezione (senza le colonne duplicate). Sono 638 candidati per 600 sezioni per un totale di 382800 record.

csvstack *.csv | csvcut -c 1,2,3,4,6,8 > liste.csv

Quindi avrò in output 1 file CSV con i dati per ogni lista e quello soprastante, per totale di 19 file CSV (encoding UTF-8 e come separatore la ,).

Lo script di poche righe (al netto dei commenti) è quello di sotto, tutto realizzato con oggetti free e open-source.

#!/bin/bash
 
# Requisiti #
# – avere un sistema in cui è possibile eseguire uno script bash;
# – l’utility XMLStarlet http://xmlstar.sourceforge.net/download.php
# – l’utility csvkit http://csvkit.readthedocs.io/
 
# attivo la modalità di debug
set -x
 
# cancello file csv e xml pre esistenti nella cartella in cui lancio lo script
rm -R *.csv
 
# scarico tutti i dati delle 18 liste
for i in {1..18}; do curl -s http://comunali2017.comune.palermo.it/SEZ_3_82053_L$i.xml > $i.xml;done
 
# scarico l’anagrafica di ogni candidato di ogni lista
for i in {1..18}; do xmlstarlet sel -t -m //C0/C1 -v @NUMERO -o , -v @NOME -o , -v ../@NUMERO -o , -v ../@NOME -n $i.xml > anagraficaLista_$i.txt; sed -i 1s/^/numeroCandidato,nomeCandidato,numeroLista,nomeLista\n/ anagraficaLista_$i.txt & done
 
# scarico i voti di ogni candidato di ogni lista per ogni sezione
for i in {1..18}; do xmlstarlet sel -t -m //SV/V0/V1 -v @NUMERO -o , -v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , -v ../../@NUMERO -n $i.xml > listaSezioni_$i.txt ; sed  -i 1s/^/numeroCandidato,voti,numeroLista,sezione\n/ listaSezioni_$i.txt & done
 
# faccio il join tra i dati per sezione e l’anagrafica dei candidati
# l’output è un file di dettaglio in formato CSV per ogni lista
for i in {1..18}; do csvsql –query select * from  listaSezioni_$i LEFT JOIN anagraficaLista_$i ON listaSezioni_$i.numeroCandidato=anagraficaLista_$i.numeroCandidato listaSezioni_$i.txt anagraficaLista_$i.txt > lista_$i.csv; done
 
# faccio il merge di tutti i CSV e produco un unico file
# con tutti i voti per candidato per sezione di ogni lista
csvstack *.csv | csvcut -c 1,2,3,4,6,8 > liste.csv
 
# cancello file che non mi sono più utili
rm -R *.txt
rm -R *.xml

Libro consigliato

Per entrare nel mondo divertentissimo ed efficiente della “riga di comando” mi sento di consigliare il bel “Data Science at the Command Line” . È un libro per tutti, di facile lettura e pieno di esempi utili.

Il riuso di una pagina di eventi di un assessorato regionale

Il 7 novembre del 2016 ho scritto alla dottoressa Roberta Iannì dell’ufficio “Comunicazione, marketing ed accoglienza” dell’Assessorato Turismo, Sport e Spettacolo della Regione Siciliana. Nell’email le raccontavo come —  insieme ad altri membri di Open Data Sicilia (in particolare Ciro Spataro)— avessimo estratto i dati da una pagina di eventi regionali curata dal suo ufficio, per trasformarli in una mappa e in un canale Telegram. Le ho scritto sopratutto per chiedere di palesare una licenza sui contenuti.

La dott.ssa Iannì ci ha risposto con interesse in poco tempo e dopo un ulteriore approfondimento è stata inserito in Sicily Events un riferimento alla licenza CC BY 4.0: da quel momento i dati pubblicati sono riutilizzabili a patto di citare la fonte.

Il riuso che ne abbiamo fatto

Questi eventi sono pubblicati come post di una pagina Facebook. È possibile accedervi tramite API: quello che viene restituito è (vedi sotto) la data di creazione (created_time), l’identificativo del post (id) e il testo contenuto (message). Luogo e data dell’evento non hanno un loro contenitore dedicato, ma sono comunque inseriti dentro il testo del messaggio dalla redazione della pagina.

Per fortuna l’ufficio regionale inseriva quasi sempre il carattere # in corrispondenza del nome del comune in cui avrebbe avuto luogo l’evento (un classico hashtag). Ho chiesto allora di inserirlo sempre per i toponimi comunali e ho creato una piccola regola che:

  • estrae dal testo del messaggio tutte le parole precedute dal carattere #;
  • estrae da questo elenco di parole quelle che corrispondono a nomi di comuni siciliani.

In questo modo è possibile associare una coppia di coordinate agli eventi e quindi visualizzarli su una mappa. È una piccola cosa che “aumenta” l’informazione iniziale, perché la rappresentazione cartografica fornisce delle utilissime informazioni di contesto.

A partire dai dati originali, e grazie alla licenza applicata, abbiamo quindi messo in piedi un processo di riuso dei dati che ha prodotto questi output:

Abbiamo usato come contenitore un repository GitHub e lo abbiamo battezzato Sicily Events (reloaded)https://siciliahub.github.io/sicilyevents/

Alcune considerazioni

L’ideale sarebbe che questi post fossero in origine nativamente associati alla coppia di coordinate del luogo in cui si svilupperà l’evento. E che ad ognuno, come in un calendario, fossero associate anche le date di inizio e fine. Ma lo strumento usato oggi (la pagina facebook) non lo consente in modo nativo.

Valuto comunque in modo positivo questa dinamica: in primis per la pubblicazione con licenza aperta e in secondo luogo per un’attenzione alla struttura dei testi dei messaggi, che ora consente di dare valore aggiunto a quanto pubblicato. Proporremo all’ufficio che scrive i testi di inserire i riferimenti alle date secondo uno schema predefinito, in modo da poterle estrarre in automatico (come i toponimi) e aggiungere un’altra informazione fondamentale, che consentirà di trasformare questo utile e interessante wall di notizie anche in un vero e proprio calendario.

Se sono rose …

Open Data Sicilia Winter edition: un report

Il 28 dicembre si è tenuto il nostro terzo raduno invernale: dopo quello del 2014 a Petralia Sottana e quello di 2015 di Pedara, è arrivato quello di Castelbuono. A seguire una mia sintesi.

Il nostro raduno invernale nasce per realizzare un momento in cui dibattere in modo orizzontale, senza uno schema definito e in un clima a metà tra un cenone di Natale e riunione di “opendatari” anonimi. Un momento per guardarci negli occhi, abbracciarci, dibattere, conoscere le nostre famiglie, parlare d’altro e sentire il polso della comunità.

Non abbiamo curato al meglio l’edizione di quest’anno, ma nonostante tutto sono tornato a casa molto contento e sorpreso in positivo.

Open Data Sicilia mi da delle conferme, che ripongo tra i miei psicofarmaci: è una piccola luce nel grigiore del “logorio della vita moderna”.

Le luci di Castelbuono

Ho proposto modificare un po’ il programma a poche ore dall’evento, perché nei giorni precedenti erano emerse delle “cose” strettamente correlate al nostro essere comunità. La proposta è stata valutata positivamente nella nostra mailing list, che per noi è il luogo principale di incontro e dialogo;  la nuova scaletta ha lasciato un po’ il segno sulla giornata.

Abbiamo iniziato dibattendo un po’ sull’impatto delle politiche e delle azioni open data sulla vita di tutti noi, parlando anche del nostro contributo. In estrema sintesi l’impatto sembra a tutti ancora molto inferiore a quello potenziale, ma le “storie” seguenti mostrano come sia stato utile lavorare la “nostra terra”. Ecco alcuni dei loti (o cachi) che abbiamo raccolto 🙂

Il mondo degli Open Data nel curricolo digitale

Il rapporto di Open Data Sicilia con il mondo della scuola è in essere da un po’ di tempo e si è sviluppato sopratutto nel contesto del progetto A scuola di OpenCoesione.

A Castelbuono la professoressa Ida Mariolo dell’IPS EInaudi Pareto di Palermo e Ciro Spataro dell’ufficio innovazione del Comune di Palermo ci hanno raccontato di come il “Curriculo Digitale” basato su open data, mappatura in crowdsourcing del territorio e piattaforme di narrazione collettiva, sia un’opportunità per le scuole di aumentare le competenze digitali di studenti e docenti.

La prof.ssa Mariolo (che ha fatto un bell’intervento anche al nostro raduno di Messina di settembre 2016) ci ha fatto un po’ sognare, facendoci pensare a questi giovani cittadini monitoranti e al loro essere “nativi opendatari” (qui le sue slide).

Qui sotto il video di presentazione della “Open School Data”, un progetto della scuola IPS EInaudi Pareto (insieme ad altre), per la creazione di un curricolo che consenta di verificare la sicurezza degli edifici scolastici tramite crowdmapping.

cb_image09

Molti di noi sono stati coinvolti nei progetti ASOC degli anni scorsi e lo sono anche quest’anno: contribuire a tutto questo è un piacere speciale, perché è uno sguardo verso il futuro.

Il MakerSpace comunale trasparente e aperto di Caltanissetta

Il 17 dicembre 2016 è stato inaugurato il MakerSpace comunale di Caltanissetta, uno dei primi in Italia creato da una pubblica amministrazione comunale. È stato concesso in uso alle associazioni CL Makers e LevaDigitale, contitolari del progetto MIOK (Make It Open in Kalat); a Castelbuono c’era per Leva Digitale il “nostro” Giuseppe La Mensa.

Alcuni tra gli ingredienti minimi considerati da Leva Digitale indispensabili in questo spazio sono:

  • persone giovani di tutte le età;
  • software open e libero;
  • attività ed eventi promossi da enti pubblici, soggetti privati e organismi italiani e stranieri;
  • interventi di figure qualificate dei diversi saperi innovativi, in grado di facilitare il trasferimento tecnologico e di conoscenza (dagli urbanisti, agli architetti, agli storici);
  • coinvolgimento di atenei, incubatori ed acceleratori d’impresa di altre realtà territoriali, talenti, mentors, ricercatori, manager e liberi pensatori;
  • adesione ai paradigmi dell’Open data e dell’open source;
  • capacità di incoraggiare nuove opportunità imprenditoriali nell’era digitale;
  • coinvolgimento degli istituti d’istruzione, per la condivisione di modelli di apprendimento ancorati ad esperienze di imprenditori attivi nell’economia reale.

Vedere i titoli e i temi dei laboratori, dei workshop e delle conferenze è stata aria fresca (a me personalmente è scesa la lacrimuccia per Albo Pop) e faccio i complimenti a Leva Digitale: l’impatto di attività come queste può essere molto grande e virale.

cb_image10

Molto interessante – Giuseppe ce l’ha mostrato – l’avviso del Comune di Caltanissetta con cui intendeva acquisire manifestazioni di interesse alla concessione in comodato gratuito per gli spazi del MakerSpace. Lo inserisco qui, perché potrebbe essere utile ad altre PA.

In bocca al lupo a Giuseppe e Nazzareno Prinzivalli (e a tutte le persone coinvolte).

“letteraemme”, un altro tipo di giornalismo

tfm5arhw_400x400Il raduno di Messina è stato molto bello, per varie ragioni. Una, per me, è stata quella di incontrare tante persone che stanno lavorando e spingendo sul tema dei dati aperti e dell’open government. Una tra queste Alessio Caspanello, con cui ci siamo piaciuti prima di conoscerci: è il bello dell’internèt (l’accento è voluto)!

Alessio, insieme a Marino Rinaldi, ci è venuto a presentare in anteprima LetteraEmme, un quotidiano di informazione, opinione e cultura nato a Messina. Fondato da cinque giornalisti professionisti con vent’anni di esperienza “sul campo”, diretto da Alessio e che sarà online il 16 gennaio 2017.

LetteraEmme ha l’obiettivo di spingere la provincia messinese oltre i confini dello Stretto, raccontando la realtà attraverso dati, inchieste, approfondimenti, monografie, infografiche e tutto quanto consenta alla notizia di vivere oltre la cronaca.

Nella seconda slide ci è stata rivelata (e vi garantisco che la voce di Alessio aveva un tono intenso) la scintilla di questa nuova avventura giornalistica: ancora una volta il raduno di Messina del settembre 2016 e in particolare gli interventi di Andrea Iannuzzi e Federico Badaloni (il mio grazie a Andrea Nelson Mauro per aver creato le condizioni per averli con noi al raduno).

cb_image11

Anche questa storia ci “tocca” molto come comunità e ci da anche una bella opportunità: LetteraEmme potrebbe essere anche una macina in cui fare confluire i dati grezzi che costruiremo (o raccoglieremo in giro), che alle volte non rimangono niente di più di uno buon esercizio “tecnico”.

Il piano di Open Government della città di Messina

È in fase di attuazione il terzo piano d’azione italiano di Open Government, e tra le amministrazioni locali c’è Messina.

È ente locale pilota in due azioni del piano italiano:

  • Open Data;
  • Strategie per la partecipazione.

cb_image07

A Castelbuono, a raccontarcelo, c’era Giuseppe D’Avella di Parliament Watch Italia che ha illustrato un lavoro ricco e con alle spalle tante ore di lavoro e di “spinta”, che mostra una Messina nella quale (almeno su questi temi) sembra esserci stato un evidente cambio di passo, che la potrebbe portare presto a essere tra le migliori realtà.

Il piano di Messina è denominato “Messina Governo Aperto” e prevede la realizzazione di servizi e azioni che favoriscano la trasparenza delle attività istituzionali e la partecipazione dei cittadini. Avrà durata triennale e sarà finanziato con circa 1 milione di euro, nell’ambito dell'”Asse I – Agenda Digitale” del PON Metro.

Il piano è attualmente in consultazione pubblica all’indirizzo http://www.comune.messina.it/opengov. I cittadini, le associazioni, i movimenti, i professionisti, ecc. sono invitati a fornire suggerimenti, integrazioni e pareri inviando una mail all’indirizzo opengov@comune.messina.it, o lasciando un commento qui.

Partecipate, partecipate, partecipate!

Mettere i dati al centro di tutto (quanto è bravo Giovanni Pirrotta)

Al nostro raduno estivo del 2016 è stato presentato e lanciato il contest Open Data Giustizia, “un progetto per favorire la raccolta, l’analisi e la divulgazione dei dati del sistema giudiziario italiano, con l’obiettivo di costruire un diverso punto di vista sullo stato del Paese”. È stato creato da C.O. Gruppo, con il supporto dell’associazione onData.

È un’idea di contest che sembra quasi scontata, ma è in realtà il primo su questo tema e si innesta in un contesto in cui i dati aperti sono pochi e le modalità di accesso spesso non semplici. Per questo è stato ed è uno stimolo prezioso e sono convinto che lascerà un segno.

Da poco è stato proclamato il vincitore del contest: è Giovanni Pirrotta. Io (e tanti altri) gli faccio spesso dei complimenti plateali, ma è difficile fare diversamente perché si tratta di persona con doti umane e professionali rare.

Ha vinto con un progetto che mi ha colpito molto: la creazione di una piattaforma che espone dati e informazioni di questo settore, tramite API . Per ragioni legate al regolamento del contest, purtroppo non posso aggiungere altre informazioni, ma confido che presto si possa vedere online una presentazione ufficiale di quanto fatto e/o coglierne i primi frutti concreti.

cb_image08

OpenPatti, un esempio virtuoso da emulare

Chi segue la nostra comunità, conosce già Open Patti, un progetto che ha come obiettivo la liberazione e fruizione dei beni comuni in generale e di quelli rinvenibili sul territorio pattese in particolare. È un esempio pregiato di come persone attive e preparate possano contribuire alla crescita virtuosa del proprio territorio.

Ce ne ha parlato Nino Galante, il suo ideatore, nonché uno dei primi a parlare in Sicilia di dati e conoscenza aperta. Ci ha raccontato di come recentemente a Open Patti – che non ha alcuna ragione sociale – abbiano aderito il Comune di Patti e la scuola “IIS Borghese Faranda”, di come sia sempre di più un interlocutore “ufficiale” della Pubblica Amministrazione locale; tutto questo grazie alla qualità delle azioni svolte nel territorio e alla costanza nel portarle avanti nel tempo.

L’adesione del Comune apre interessanti possibilità di azione per il miglioramento della trasparenza e dei servizi comunali. Nella delibera di adesione, che vi invito a leggere, (tra le altre cose) è riportato:

il Comune intende valorizzare al meglio il proprio patrimonio informativo e il patrimonio storico, culturale e ambientale del proprio territorio anche attraverso l’uso degli strumenti resi disponibili dalla rete internet e dalle tecnologie digitali e ricorrendo anche all’utilizzo di dati e informazioni di tipo aperto (open data).

In questa forza una sola piccola debolezza: senza Nino molto probabilmente Open Patti non sarebbe arrivata sino a qui. Cloniamolo!


Sono tornato a casa da Castelbuono con un sorriso che non se ne voleva andare. Questa infatti era un’occasione per fare il punto sulla comunità Open Data Sicilia, sull’impatto delle sue azioni: vedere tutti questi piccoli segnali di contaminazione è un piccolo grande risultato, che mi fa sentire orgoglioso di farne parte.

What do we know about the air quality in Palermo?

Some weeks ago we came across an EU publication about the urban life in 79 European cities . Among the surveyed cities was Palermo. The following graphic on page 50 attracted our interest. The graphic shows the proportion of people satisfied with public transport services and the quality of air in their city. For both indicators Palermo shows very low levels.

image04

 

We became interested in what kind of air quality data are currently available in Palermo. The central agency which collects and publish information about air quality is RAP Palermo. According to their website the monitoring network in Palermo is build on ten stations. RAP Palermo collects data in five key pollutants (sulfur oxides (SO2), carbone dioxyde (CO2), nitrogen oxides (NO2), ozone (O3) and particulate matter (PM10)) 24 hours per day.

The results are publish on their website as daily and monthly reports and are available from the year 2013. This is the daily report for the September, 16.

image05

 

The page shows that not all stations collect data for every pollutant. Grey fields indicate combinations which are not measured. We call them “missing type 1” data. White fields on the other hand are under observation but for this particular day are not available (“nd”). These are “missing type 2” data. Valid measurements are the fields containing a value and are in green, yellow or red. Only the stations Boccadifalco and Castelnuovo collect data for all five pollutants.

The most interesting data to make some analysis are the daily one, but in RAP website there are two information barriers:

  • there is one file for every day, than it’s necessary to download one by one. In one year it’s necessary to do 365 downloads;
  • all files are in PDF format, than it’s impossible to use them in apps to make some analysis like a spreadsheet, or in some statistical framework.

So we had to deal with this. We downloaded in example all available daily reports for the year 2016 and extracted the data: here the 2016 RAP daily data in a single CSV file.

We have build 2 different procedures to do it: one in R (the one of Patrick) and one in Python (the one of Andy), and we will publish them in the next weeks.

Why it’s better in this way

To have a single file, in a format that you can use to make calculation, visualization and analysis it’s a little treasure.

image01

 

Some examples:

  • it’s possible to compare different time periods (think to “ZTL”, the restricted traffic area which began in Palermo on 2016 October 10);
  • it’s simple to build automation tools (alert me every time in this station PM10 overcomes legal limit); it will be always the data of the day before, but we think that it’s much better than nothing, much better than to look every day to a PDF file via a browser;
  • it’s possible to use this data coupled to other kind of data (rain and wind data in example) to do some more advanced environmental analysis;
  • it’s possible to discover that:
    • there are no records about Bellolampo station in the PDF. Why?
    • there are to much days in which there are no data, also for fundamental measures like PM10 one. Why?
      • along one year it is forbidden to have more than 35 days with PM10 > µg/m3. In Di Blasi station (outside the ZTL) we already have it 33 times; moreover for this station there had 21 days without any measures.
    • some files like bollettino_20161126.pdf, bollettino_20160508.pdf and bollettino_20160408.pdf, are not published.

This post is a first step, a kind of introduction. In the next weeks we will open a website dedicated to these data, in which we will publish: more data, the code we will use to download them, some maps, some charts, some interactive visualizations and some posts about these data.

Stay tuned!

OpenDataSicilia ha una nuova “impastatrice”

Nelle lezioni sui dai dati aperti, spesso si fa la metafora dei dati come materia prima, come farina e acqua per fare pasta, torte, pizze, ecc.. Celebre questa immagine che trovate in molte presentazioni introduttive sugli open data.

recipe

E’ molto efficace, perché è proprio così, ma per fare una buona torta bisogna anche avere l’adeguata cultura culinaria, avere avuto una nonna speciale (non è obbligatorio, ma aiuta), un buon tavolo di lavoro, essere in compagnia e avere gli utensìli da cucina adeguati.

Questo post per ringraziare pubblicamente Davide Gelardi e wt-tech – l’azienda per cui lavora – che hanno da poco messo a disposizione per questa comunità un server (la nostra nuova impastatrice), in cui installare framework, ospitare codice, lanciare scraper, ecc.

Che ci faremo? Da subito migreremo codice e procedure come alcune di quelle messe in piedi per Albo POP, il resto starà un po’ ai cuochi. Del resto quando dataninja ci ha messo a disposizione lo spazio per questo blog e per la nostra mailing-list, non immaginavamo che saremmo arrivati così lontano.

In ultimo mi piace sottolineare la fortuna che abbiamo nel tenere viva e attiva questa comunità. L’incontro con Davide è infatti recente e si deve al raduno invernale di Pedara.

Un Albo Pretorio un po’ POP

Da tempo guardo con attenzione e anche con un po’ di rassegnazione (ma niente di eccessivo) gli Albi Pretori.

L’Albo Pretorio indica in Italia un apposito spazio presso il quale le pubbliche amministrazioni italiane affiggono per legge notizie ed avvisi di interesse pubblico per la collettività. (Wikipedia)

Sono una fonte preziosa di informazioni: avvisi pubblici,bandi di concorso, determine dirigenziali, avvisi ed esiti di gare, notifiche, ordinanze del sindaco, ecc.. Elementi molto utili a chi vuole vivere il proprio territorio in modo consapevole e attivo, ma che non godono di tutta la luce che meriterebbero.

Non forniscono ad esempio quasi mai delle modalità di consultazione che consentano ai cittadini di essere avvisati per ogni nuova pubblicazione. Un po’ come quando ci si iscrive agli avvisi automatici per tutte le notizie sulla propria squadra del cuore, o alla newsletter del nostro comune, alla pagina facebook del nostro software preferito.

Poche settimane fa abbiamo ricevuto un messaggio sul nostro gruppo Facebook, che mi ha stimolato a curiosare sul sito web del comune di Bagheria e l’”occhio mi è caduto” proprio sul suo Albo Pretorio: ho notato che aveva le caratteristiche che mi avrebbero consentito di concretizzare l’idea di rendere più popolare e più visibile quanto pubblicato. Così ho preso in mano gli attrezzi tecnologici che mi sembravano adeguati all’obiettivo e ho creato per questo comune:

  • un account Twitter, su cui verrà pubblicato un tweet per ogni nuova pubblicazione in Albo;
  • un feed RSS, su cui verrà pubblicato un nuovo elemento per ogni nuova pubblicazione in Albo;
  • un canale di Telegram, su cui verrà pubblicato un nuovo messaggio per ogni nuova pubblicazione in Albo.

Mentre lo facevo ho pensato che fosse replicabile con semplicità per altri comuni e potesse diventare un esperimento più largo, ed è nato Albo POP!

L’abbiamo lanciato ieri, subito dopo l’annuncio da parte del comune di Bagheria sul suo sito ufficiale. Questa PA ritiene infatti questo strumento utile per la cittadinanza, lo ha voluto sostenere da subito e ho apprezzato molto il dialogo tra loro e Open Data Sicilia.

Fino a ieri era soltanto uno il comune con l’Albo POP. Ma il bello della rete sono gli effetti domino imprevisti e in serata arriva il ping di Matteo, e da ieri Cento (Emilia Romagna) è tra gli Albi POP.

@opendatasicilia @ComuneBagheria a Cento non ufficiale @AlboPret100FE e https://t.co/QVNHPs59Rl

— Matteo Fortini (@matt_fortini) 9 Novembre 2015

Nelle prossime settimane altri comuni verranno inseriti, ma sopratutto verrà descritta una modalità per fare in modo che chiunque possa creare il proprio Albo PoP e non resterà che metterlo in elenco.

#Messinasenzacqua – Mappa con le zone coperte e non coperte

Anche noi di OpenDataSicilia stiamo seguendo ovviamente gli sviluppi della questione #Messinasenzacqua (qui un articolo).

Per dare un contributo alla cittadinanza abbiamo messo online una mappa delle zone coperte e non coperte dal servizio di approvvigionamento (dati AMAM). Eccola di seguito. In basso spieghiamo meglio come funziona, qual è la base dati e come pensiamo di muoverci.

I dati si aggiornano in tempo reale da una tabella che aggiorniamo noi, quindi basta commentare questo post per segnalare errori o dati da aggiungere.
La base dati è AMAM e in particolare questa informazione diffusa dal sindaco di Messina Renato Accorinti su Facebook. Latitudine e Longitudine sono state ricavate da OpenStreetMap con questo strumento.

Putroppo le informazioni sono davvero poche e i siti di Amam, Comune di Messina, Prefettura non vengono aggiornati con la necessaria frequenza in relazione alla questione.

A questo iniziativa hanno collaborato/collaborano: Francesco Longo, Andrea Borruso, Giuseppe Pizzimenti, Micaela Mauro, Maria Arruzza.

Questo post sarà in costante aggiornamento in queste ore e giorni. Ci scusiamo per eventuali imprecisioni e ti invitiamo a segnalarle con un commento qui in basso. L’obiettivo è condividere informazioni che possano essere utili ai cittadini messinesi. Grazie!

#OpenData contest di Palermo, 8 mesi dopo: senza consegna dei premi, senza festa e senza disseminazione?

Il 28 ottobre del 2014, sul sito internet del comune di Palermo, è stata data notizia della determinazione dirigenziale n. 23 del 16 ottobre 2014, in cui si annunciava l’aggiudicazione dei premi del concorso “ApPalermo – Palermo Open Data Contest“. Si tratta di un contest che doveva premiare le migliori App, basate sui dati aperti pubblicati dal Comune di Palermo.

Da quanto mi risulta:

  1. non è stato ancora consegnato alcun premio (17.000 € per i soli primi tre premi, su un montepremi totale di 37.000 €);
  2. non è stata fatta alcuna cerimonia di premiazione;
  3. non è stata fatta ancora (quasi) alcuna disseminazione.

Sul primo punto non ci sono molti commenti da fare. Ci sono delle aziende, delle persone, dei cittadini, che aspettano da 8 mesi di ricevere quanto loro dovuto. Aggiungo che uno degli obiettivi di questo concorso era “incentivare la creazione di nuove opportunità economiche nel campo dell’innovazione tecnologica”.

Il secondo punto è probabilmente in correlazione al primo: non si organizzerà alcuna “festa, finché non verranno consegnati i premi. Lo sottolineo perché è un momento che può essere importante per la città (e non solo per i premiati), un’occasione per rendere più semplice e diretta la risposta a una domanda classica: “cosa ci faccio con i dati aperti?”.
Ma potrebbe essere anche una fantastica giornata di dibattito tra la PA e chi ha sviluppato le App sui pregi e i difetti dei dati a disposizione, sulle modalità in cui sono pubblicati, sui dataset ancora non esistenti e che avrebbero consentito di fare meglio; ma anche sui pregi e difetti delle App, sulla cura nell’inserimento dei credits in queste, sugli eventuali dati aperti prodotti a cascata da chi ha realizzato le varie applicazioni, ecc..

Anche il terzo ha sicuramente dei legami con i precedenti, ma ha pure una sua autonomia. Mi spiego con un esempio: sulla pagina ufficiale del contest, presente all’interno della sezione Open Data del sito del Comune di Palermo, non è presente nemmeno l’elenco dei vincitori con i link alle pagine di download delle App che si sono aggiudicate i vari premi. E quindi è più difficile che qualcuno possa dire “accidenti, comoda questa App, ma come hanno fatto a realizzarla?”, perché non viene creato alcun ponte tra il contest e i risultati che ha prodotto.
Tutto ciò contribuisce a rallentare la comprensione dei dati aperti da parte della cittadinanza, che non si baserebbe su tecnicismi o formalismi, ma su una soddisfazione indotta.

Queste le domande che faccio alla mia PA:

  • quando consegnerete i premi?
  • quando organizzerete la giornata pubblica di premiazione?
  • quando aggiornerete la sezione Open Data del sito comune, con i riferimenti alle App premiate?

Invierò le stesse domande via PEC al comune di Palermo.

foto di oberazzi

Linked open data for environment protection in smartregions: invito a collaborare

L’Agenzia Regionale per la Protezione dell’Ambiente (ARPA) Sicilia è uno dei partner del progetto SmartOpenData.

L’obiettivo del progetto è quello di creare un’infrastruttura (che includerà strumenti software e dati) alimentata da risorse pubbliche e aperte, fonti dati esistenti sulla biodiversità e la tutela dell’ambiente e la ricerca nelle aree protette e rurali d’Europa e nei suoi parchi nazionali.

La visione è quella per cui i dati ambientali e geospaziali riguardanti le zone rurali e protette possano essere più facilmente leggibili e riutilizzabili, maggiormente associati ai dati senza un riferimento spaziale diretto, in modo che diverse fonti dati distribuite possano essere facilmente combinate. In SmartOpenData lo strumento per realizzare tutto questo sono i Linked Open Data.

Il progetto si chiuderà a novembre e il territorio che verrà usato come “test” in Sicilia (le altre aree pilota si trovano in Spagna, il Portogallo, l’Irlanda, la Slovakia e la Republica Ceca) dovrebbe essere quello che va da Capo Zafferano/Monte Catalfano al fiume Eleuterio.

L’ARPA Sicilia ha espresso – tramite il dott. Giovanni Vacante (Project Manager del progetto) – interesse a coinvolgere tutti i soggetti pubblici e privati operanti sul territorio siciliano, compreso enti ed agenzie locali nonché gli attori della cosiddetta comunità di innovazione digitale, “ad esempio i partecipanti la rete Open Data Sicilia“, nella co-progettazione del progetto. In basso copia della sua lettera.

E’ un invito della Pubblica Amministrazione che dichiara alla cittadinanza di volersi aprire a un processo partecipato, ed in sé è già una buona notizia. La cosa che mi sembra più significativa è che sia un ramo della PA più “importante” in Sicilia, la Regione Siciliana, che ad oggi (con qualche eccezione di qualità) è stata troppo silente sui dati aperti.

Di visibile ancora non c’è qualcosa di autoconsistente e perfettamente intellegibile, perché ancora in costruzione. A questo link però potrete vedere un’interfaccia tramite la quale alcuni dataset sono messi in correlazione.

Che contributo possiamo dare noi? Quelli che mi vengono in mente sono questi:

  • leggere la descrizione pubblica del progetto e fare domande per saperne di più. Il Project Manager, che ho conosciuto da poco, mi sembra persona attenta e disponibile;
  • immaginare quali dati ci debbano per forza essere in un sistema tagliato sulla biodiversità e la tutela dell’ambiente e la ricerca nelle aree protette e rurali d’Europa e nei suoi parchi nazionali;
  • a cosa potrebbe servire un sistema che mette in correlazione questo tipo di dati? A quali domande informative dovrebbe rispondere? Che esigenze dovrebbe risolvere? Quali legami sarebbe utile che contribuisse a evidenziare?

Tra chi segue e alimenta OpenDataSicilia ci sono esperti di Linked Open Data, così come (credo) esperti di dominio “ambientale”. Questa è un’occasione per lasciare un piccolo segno, in termini di proposta e/o di critica costruttiva, a un progetto regionale. Il prossimo 9 luglio ci sarà il meeting partenariale del Progetto, e quella potrà essere l’occasione per iniziare a farlo.