Feature request: dataset miliari, certificati, aggiornati, linkati e accessibili via API (lo spunto da IPA e ANPR)
Buongiorno,
uso il termine dataset miliari per definire quelli che qualsiasi utente, che fa analisi e visualizzazione di dati, usa di più e direi propedeuticamente: se lavoro ad esempio con dati con “taglio” comunale, mi capiterà spesso di avere bisogno dei codici ISTAT del Comune, i codici “Belfiore” (i.e. i codici catastali), il Codice Fiscale, ecc…
Ci sono da tempo lavori in corso (come i vocabolari controllati dell’ex-DAF), c’è il lavoro su ANPR (che certamente si connetterà al precedente), ci sono i dati territoriali ISTAT, ci sono portali nazionali geografici, c’è il paniere, ecc…
Non sto facendo pertanto una richiesta nuova o illuminante, ma la faccio per sottolineare come questo (almeno per me) sia un obiettivo primario dall’enorme valore per la società tutta, di cui lo “Stato” può e dovrebbe prendersi presto carico in termini di realizzazione e rilascio.
Se ho bisogno dei dati propedeutici anagrafici dei Comuni, ho due fonti che (credo) devo considerare come le migliori possibili:
- i dati di ISTAT https://www.istat.it/it/archivio/6789;
- i dati di ANPR https://www.anpr.interno.it/portale/tabelle-di-riferimento.
Hanno la gran parte delle info sovrapposte, ma le piccole differenze presenti sono per me di grande utilità. In ANPR ho anche ad esempio la denominazione traslilettarata, utile in quei numerosissimi casi in cui si può fare un JOIN soltanto tramite i nomi dei comuni e ho CEFALU'
e non CEFALÙ
.
Mi piacerebbe che nel portale nazionale ci fosse un modo per puntare a tutti i dati di questo valore, in modo da avere una sorta di strada d’orata (cit. Mago di Oz) e non stare in giro a cercare e informarmi. Un sistema che federi questi dataset dalle varie fonti, in modo da poter dire “caro cittadino qui sul catalogo trovi i dati più aggiornati e certificati su …, puoi usare il tag miliare
per avere l’elenco completo”.
A proposito, ma non si può da subito iniziare a mettere i tag paniere+nazionale
e paniere+regionale+CodiceIstatRegione
, per tutti i dataset mappati dei vari panieri?
Penso a una lista alla github awesome (lo so, anche questa non un’idea nuova), quindi pensata essenzialmente per le persone, ma anche ad accessi per le macchine e quindi a delle API Milestone.
Qualcosa che, semplificando un po’, risponda a chiamate di questo tipo:
http://api.gov.it/rest/municipality/coordinate/38.139102+13.340759?format=json
http://api.gov.it/rest/municipality/cod_com/082053?format=json
http://api.gov.it/rest/municipality/CF/80016350821?format=json
http://api.gov.it/rest/municipality/name/Palermo?format=json
e mi risponda con qualcosa come
[{
"name": "Palermo",
"transliteratedName": "Palermo",
"region": "Sicilia",
"cod_region": 19,
"province": "Palermo",
"cod_province": 82,
"COD_COM": "082053",
"cod_cadastral": "G273",
"CF": "80016350821",
"IPA" : "c_g273",
"CAP": ["90100", "90121-90151"],
"callingCodes": ["091"],
"population": 600000,
"area_Sq_Km": 160,
"borders": ["Altofonte","Belmonte Mezzagno","Ficarazzi","Isola delle Femmine","Misilmeri","Monreale","Torretta","Villabate"],
"logo": "https://www.comune.palermo.it/js/server/uploads/220x220/_29042018145943.jpg",
"website": "https://www.comune.palermo.it"
}]
Un po’ come la fantastica Wikidata. E sia via chiamate REST che query SPARQL.
L’hanno scorso per realizzare una bella app per SKY, per il “rischio” (di varia natura) nella città, avevamo bisogno di un servizio in HTTPS che, data una coppia di coordinate, restituisse il codice ISTAT. Non ne trovammo di “statali” ufficiali.
Penso che cose di queste tipo possano/debbano essere anche a carico dello stato.
In alternativa se lo stato non vuole/può creare servizi di base di questo tipo, potrebbe/dovrebbe creare indici “curati”, manutenuti e predisposti per essere linked (con vocabolari controllati, ontologie, ecc.).
Quello dell’anagrafica comunale è soltanto un esempio tra tanti. A cascata mi viene da pensare (vedi sopra) a query che restituiscano dati aggiornati e certificati sul rischio frane (penso da ISPRA), rischio sismico (penso da ISPRA), i dati delle Zone OMI (le quotazioni immobiliari dell’Agenzia del Catasto).
L’ispirazione viene dai dati IPA (Indice Pubblica Amministrazione)
È un dataset prezioso per tutte quelle applicazioni e servizi basati su interazioni possibili con la PA. Faccio un esempio per tutti: quello delle richieste FOIA e di un’app, un servizio - come FOIAPop - per fare richieste ai Comuni e il punto di partenza potrebbe essere quello di estrarre i codici IPA o i CF di tutti i Comuni italiani e usarli come “chiave” nell’applicazione che si sta costruendo.
Ma c’è qualche problema nell’estrarre rapidamente e senza errori questi dati. I dati sui comuni sono (insieme ad altri) qui https://www.indicepa.gov.it/public-services/opendata-read-service.php?dstype=FS&filename=amministrazioni.txt e sono aggiornati di frequente (l’ultimo al momento della scrittura è del 2018-12-24).
Se filtro per “Comuni e loro Consorzi e Associazioni” e “Unioni di Comuni e loro Consorzi e Associazioni” ottengo 8663 record, tra cui anche il “Consorzio per Il Servizio di Vigilanza Boschiva Alta Val di Fassa” o il “C.E.A. Centro di Educazione Ambientale Delle Serre Salentine”, quindi anche altro da “Comuni”.
Potrei usare il codice IPA, filtrando tutti gli enti il cui codice inizia per c_
, ma mi perderei una trentina di comuni (come Ussassai, Vicari, Girasole, Serrastretta, ecc.) che non rispettano questa regola.
Potrei usare quelli per cui la descrizione inizia per Comune di
, ma mi perderei ad esempio come le Unioni dei Comuni.
Una cosa che di base dovrebbe essere semplice - estrarre i codici IPA di tutti i comuni italiani - non sembra si possa fare in un passaggio. Un po’ dipende da alcune complessità formali/amministrative di base, un po’ da una struttura che forse si dovrebbe arricchire/modificare/correggere.
Due note “tecniche” proprio su quest’ultimo punto.
Il campo des_amm
è quello che contiene il nome del Comune (Comune
). Il campo Comune infatti contiene il nome del Comune in cui ha sede la PA: tanti comuni in Italia hanno sede amministrativa in un altro comune.
Allora potrei estrarre quei comuni in cui c’è coincidenza tra des_amm
e Comune
, perché sono sicuramente un set “certificato” di codici IPA e CF di comuni. 7798 su 7936, circa il 98% del campione, ha un matching pieno. Sono i casi di “Comune di Palermo” e “Palermo”: rimosso "Comune di ", c’è full match.
Ma poi ci sono numerosi casi per i quali c’è fare pulizia e normalizzazione, per colpa di uno spazio, di un apice. Sotto alcuni esempi (la colonna check
è la distanza vettoriale tra le stringhe misurata con fuzzywuzzy).
cod_amm | des_amm | ComuneCFR | Comune | check |
---|---|---|---|---|
c_g165 | Comune di Ospedaletto D’ Alpinolo | Ospedaletto D’ Alpinolo | Ospedaletto d’Alpinolo | 98 |
c_h798 | Comune di San Cipriano D’ Aversa | San Cipriano D’ Aversa | San Cipriano d’Aversa | 98 |
c_i213 | Comune di Sant’ Alessio con Vialone | Sant’ Alessio con Vialone | Sant’Alessio con Vialone | 98 |
c_i316 | Comune di Santa Vittoria d’ Alba | Santa Vittoria d’ Alba | Santa Vittoria d’Alba | 98 |
c_i318 | Comune di Sant’ Egidio alla Vibrata | Sant’ Egidio alla Vibrata | Sant’Egidio alla Vibrata | 98 |
c_i336 | Comune di Sant’ Eusanio Forconese | Sant’ Eusanio Forconese | Sant’Eusanio Forconese | 98 |
c_i363 | Comune di Santostefano di Magra | Santostefano di Magra | Santo Stefano di Magra | 98 |
c_a266 | Comune di Cortina D’ Ampezzo | Cortina D’ Ampezzo | Cortina d’Ampezzo | 97 |
c_a434 | Comune di Arqua Petrarca | Arqua Petrarca | Arqua’ Petrarca | 97 |
c_a709 | Comune di Bastia Mondovi | Bastia Mondovi | Bastia Mondovi’ | 97 |
c_b996 | Comune di Cassago Brianza | Cassago Brianza | Cassago Brianza | 97 |
… | … | … | … | … |
Ma partire dalle stringhe è comunque problematico, perché ci sono anche nomi di Comuni in più lingue, nella stessa cella.
Allora provo a partire dal campo cod_amm
, che contiene il codice “Belfiore”, il codice catastale comunale. Si parte dal filtrare tutti i record che contengono a inizio cella c_
, dal rimuovere c_
e dal portarlo in maiuscolo (ad esempio per Palermo da c_g273
a G273
).
Così facendo si ha una colonna con cui fare il matching e verifica con una fonte certificata di questi codici come i dati ANPR sui comuni.
I record di IPA che iniziano per c_
sono 7778, di questi per circa il 2% non c’è il matching, quindi 150 Comuni potrebbero avere dentro IPA il codice catastale errato. Alcuni esempi (qui tutti quelli per cui non è stato possibile fare matching diretto tra IPA e ANPR, rispetto ai Comuni oggi attivi):
- Alcara Li Fusi, in IPA è ZBOH, in ANPR è A177;
- Alà dei Sardi, in IPA è WFS6, in ANPR è A115;
- Breia, , in IPA è B136, in ANPR è B136, ma è un comune che con questo nome non esiste dal 31/12/2017.
@giorgialodi ci ha descritto alcune delle cause di questa mancanza di matching.
Quindi anche da questo percorso non si riesce ad estrarre in modo diretto, completo e senza rischi di errori, il dato.
Per chiudere
Sono stato lungo, ma secondo me valeva la pena fare un approfondimento su un caso di dato che dovrebbe essere milestone, inserendo anche delle note di dettaglio (che mi auguro possano in ogni caso essere utili).
L’idea è quella di una sorta di “super paniere nazionale”, certificato, aggiornato, metadatato, controllato, standard e linked (o predisposto per). Con il goal massimo di avere dei servizi pubblici nazionali per esporli.
Molti di questi dati miliari sono già online e di qualità; la mia richiesta è quella di trovar il modo di avere almeno anche un super indice curato, un unico punto d’accesso descritto per persone e macchine. Il massimo sarebbe una sorta di wikidata statale.
L’esposizione di dati di questo tipo e in queste modalità potrebbe essere anche l’occasione di un check sulle licenze, così come proposto qui settimane fa.
E buone feste