appalti, finanziamenti e dati d'impresa - qualche riflessione su un possibile (?) archivio

243 views
Skip to first unread message

Stefano Durì

unread,
Jul 19, 2014, 12:59:50 PM7/19/14
to spaghett...@googlegroups.com
I file pubblici contenenti dati relativi a "transazioni" (passatemi il termine: sta per appalti, finanziamenti, acquisti) della PA con operatori economici cominciano ad essere parecchi. Gli elenchi della "Bussola della Trasparenza" di cui si è parlato nei giorni scorsi, mostrano la grande quantità di fonti disponibili. Penso anche ad altri archivi, ad es. OpenCoesione. Siamo portati a leggere questi dati dal verso "trasparenza", cioé dal punto di vista delle attività della singola PA, ma nulla vieta di leggerli dal verso "impresa", come dataset di "transazioni economiche" puntuali.
Parliamo di dataset non necessariamente eterogenei. In particolare, tutti i file xml prodotti per la 190 devono (dovrebbero) avere la stessa struttura. Ho provato ad elaborarne un po' e ho realizzato con Kettle una procedura che, partendo dal file xml, produce i file che occupano i primi tre fogli di questo spreadsheet. In estrema sintesi: abbiamo due entità (operazione, ad es. appalto, e impresa partecipante) e una relazione (partecipazione di impresa a operazione) qualificata da alcuni attributi (relativi ad eventuale raggruppamento e aggiudicazione). Si possono naturalmente realizzare strutture diverse, ma il succo è quello.
Un singolo dataset è significativo per l'analisi dell'operato della PA che lo pubblica, ma poco interessante dal punto di vista delle transazioni. Il discorso cambia se supponiamo di accumularne una grande quantità: a questo punto possiamo pensare a vari tipi di analisi, ad es. 
- su base territoriale (il "mercato politico")
- su base settoriale (ad es. la sanità, i trasporti, l'edilizia pubblica) e di competenza (l'oggetto della gara)
- su singole imprese o raggruppamenti di imprese
Sono teoricamente possibili collegamenti con altri tipi di info pubblica, basati sul CF di impresa o sui codici di gara e di progetto
Prima che qualcuno la nomini, non è OpenCorporates: l'unico dato anagrafico "ufficiale" presente in quei dataset è normalmente il CF. Altri dati (se ci sono) sono rilevati al momento della gara e non aggiornati in seguito. Sbaglierò, ma l'apertura dei dati anagrafici del Registro Imprese - con i quali ci si collegherebbe facilmente via CF - non sembra all'orizzonte.

Alberto

unread,
Jul 19, 2014, 4:43:24 PM7/19/14
to spaghett...@googlegroups.com
Wow, Stefano, sembra una figata. Ti faccio due domande: 
  1. come hai preso i dati? Non mi risulta che Expo abbia una politica di open data – anzi, Wikitalia ha appena firmato una convenzione per fargliela fare, per amore o per forza. Erano PDF sul sito?
  2. puoi aggiungere una legenda di questo tab? Cosa vuol dire "mandante" e "mandataria"? E: possibile che solo uno degli appalti di Expo sia stato vinto da un consorzio (colonna "capogruppo", immagino)?
Attento che hai invertito la legenda delle colonne C e D in quest'altro tab

Stefano Durì

unread,
Jul 19, 2014, 5:31:42 PM7/19/14
to spaghett...@googlegroups.com
I dati originali vengono dai file pubblicati qui http://www.expo2015.org/it/opportunita-per-il-business/partecipa-alle-gare

La prima tabella pivot che citi divide le imprese in base ai ruoli con cui partecipano alle gare (intestazioni superiori) e calcola a quante gare partecipano e quante ne vincono. La partecipazione in un raggruppamento è qualificata da uno dei ruoli diversi da "00-SINGOLA", che mi sono inventato io per classificare la partecipazione individuale. Quindi le gare vinte da un gruppo sono presenti nelle colonne E, G, I, contate una volta per ogni partecipante.
Qui trovate il dizionario ufficiale delle procedure e dei ruoli: http://dati.avcp.it/schema/TypesL190.xsd. Per approfondimenti occorre rivolgersi a qualcuno più esperto di me sul tema degli appalti pubblici.

Grazie per la segnalazione dell'errore nelle etichette di colonna. 

Alberto

unread,
Jul 19, 2014, 5:46:00 PM7/19/14
to spaghett...@googlegroups.com
Domanda: se ho ben capito tu da qualche parte hai anche i dati sulle imprese che hanno perso le gare d'appalto, gara per gara. Corretto? 

Ho guardato lo schema dati, ma non spiega un accidente. Mandante e mandataria rimangono un mistero. 
Message has been deleted

Giovanni Di Noia

unread,
Jul 19, 2014, 6:02:21 PM7/19/14
to spaghett...@googlegroups.com
Per partecipare alle gare d'appalto sono necessarie le attestazioni e ogni bando di gara indica quali sono le attestazioni necessarie.
Dato che le categorie di lavori sono tante, spesso le imprese non hanno tutte le attestazioni necessarie per partecipare quindi per le imprese si raggruppan in ATI (associazione temporanea di imprese). L'impresa mandataria è la "capogruppo" di una ATI.

PS. Mi sono iscritto qualche giorno fa. Ciao a tutti.
Message has been deleted

Stefano Durì

unread,
Jul 19, 2014, 6:05:52 PM7/19/14
to spaghett...@googlegroups.com
per capire bene come è strutturato il file xml bisogna rifarsi a questo doc:

Nel file sono elencati per ogni gara tutti i partecipanti e tutti gli aggiudicatari, che, a meno di errori, sono ovviamente un sottoinsieme dei primi. 
Per realizzare il mio spreadsheet ho in realtà utilizzato anche il file xml del 2012, che però è una vera porcheria

Stefano Durì

unread,
Jul 20, 2014, 8:50:41 AM7/20/14
to spaghett...@googlegroups.com
un esempio di accumulazione di dataset è questo, in cui ho caricato file di fonti del tutto eterogenee. Poi l'ho "incrociato" (più tecnicamente: una inner join sul CF dell'azienda) con quello di Expo, per filtrare le righe relative ad imprese presenti in entrambi i dataset, ottenendo questo file.

Nicola Ghirardi

unread,
Jul 21, 2014, 6:32:39 AM7/21/14
to spaghett...@googlegroups.com
Sapresti dirmi dove trovare una documentazione per la struttura degli xml?
Credo sarebbe interessante esplicitare lo schema. Sapete se esiste già qualcosa per questo "dominio"?
Mi sembra molto comune ma non ho ricordi di schema "standard"..

Stefano Durì

unread,
Jul 21, 2014, 8:11:00 AM7/21/14
to spaghett...@googlegroups.com

Stefano Durì

unread,
Jul 21, 2014, 10:04:17 AM7/21/14
to spaghett...@googlegroups.com
aggiungo che i file xml si possono anche ottenere qui http://portaletrasparenza.avcp.it/microstrategy/html/index.htm. Se scegliete "Open Data" e fate la ricerca con il codice fiscale 06398130960 ottenete i dati di expo dei vari anni. Peccato che ci siano solo gli aggiudicatari (neanche sempre) e non i partecipanti. In compenso ci sono gare del 2014 non presenti nei file xml che ho elaborato io

Alessio Dragoni

unread,
Jul 21, 2014, 10:10:45 AM7/21/14
to spaghett...@googlegroups.com
Stefano quello che stai facendo e' veramente utile!

Peccato che lo stesso AVCP non sembra avere dati freschi.
ci sono diverse gare, che nel sito della stazione appaltante risultano aggiudicati e riportano i dettagli
mentre sull'elenco di AVCP risultano chiusi ma senza dettagli.
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a spaghettiopend...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/spaghettiopendata.
Per altre opzioni visita https://groups.google.com/d/optout.

Stefano Durì

unread,
Jul 21, 2014, 10:42:34 AM7/21/14
to spaghett...@googlegroups.com
@Alessio
sì, la situazione pare piuttosto incasinata. In compenso su AVCP si trovano gli elenchi delle aziende che hanno una di quelle attestazioni di cui parlava Giovanni Di Noia. Gli elenchi (che temo non siano open) sono qui: https://servizi.avcp.it/portal/classic/Servizi/RicercaAttestazioni divisi per regioni. Possono servire a individuare un indirizzo (presumibilmente la sede legale) delle imprese che partecipano alle gare

Andrea Nelson Mauro

unread,
Jul 21, 2014, 12:16:24 PM7/21/14
to spaghett...@googlegroups.com
@Sfefano: scopro ora che esiste http://www.open-contracting.org/ che mi pare davvero molto connesso al tuo ragionamento. 
ne ho letto su monithon, dove si legge fra l'altro di vari progetti presentati alla OKFest http://www.monithon.it/blog/2014/07/21/open-action-novita-dallopen-knowledge-festival-di-berlino/

chi c'era, batta un colpetto! ;)

Stefano Durì

unread,
Jul 21, 2014, 1:08:39 PM7/21/14
to spaghett...@googlegroups.com
grazie, mi sembrano esperienze molto interessanti, anche se l'enfasi - comprensibilmente - è più sul controllo del public procurement che sull'analisi dell'attività di impresa. In realtà, la struttura dei dati che ho abbozzato può rispondere a entrambi i tipi di esigenza.

Silvio Traversaro

unread,
Jul 21, 2014, 2:26:42 PM7/21/14
to spaghett...@googlegroups.com
L'argomento mi interessa molto e volevo fare un'intervento piu'
approfondito, ma visto che si citano le banche dati AVCP magari
possono interessare dei dati raw e relativi scraper:
* uno scraper per i dati del portale trasparenza e' disponibile (
https://github.com/traversaro/openavcp ) ed e' stato usato per
caricare un dataset su openspending
(https://openspending.org/avcp_italy_public_procurement/meta,
purtroppo non aggiornato per mancanza di temo ).
* uno scraper per i dati del casellario imprese e' disponibile sul
vecchio scraperwiki
https://classic.scraperwiki.com/scrapers/casellario_imprese_avcp/ e ho
iniziato a migrarlo sulla piattaforma turbot di opencorporates.

Francesca Sensini

unread,
Jul 21, 2014, 3:52:12 PM7/21/14
to spaghett...@googlegroups.com
Se possono esservi utili, oltre alle specifiche tecniche della Delibera AVCP del 26 maggio 2013 (che qualcuno ha già postato) queste sono le FAQ che a suo tempo AVCP fece per agevolare la "costruzione" dei file XML da parte degli enti http://www.avcp.it/portal/public/classic/FAQ/faq_legge190_2012#sezioneB.
Essendomi dovuta occupare della costruzione del file e del corretto inserimento dei dati so per certo che molti enti hanno "buttato là" la metà dei dati richiesti dalla norma (detta in "gergo" art.1comma32 della legge 190/12), cosa che ho verificato andando a cercare io stessa dei dati di aziende dentro gli XML pubblicati da alcuni enti...e ovviamente non trovati!
Io stessa per verificare i dati, prima di pubblicarli, ho dovuto incrociare molteplici db.
Sulla decodifica dei CIG e Smart CIG la cosa fondamentale da capire da subito (per chi non lo sapesse) è che quelli che cominciano con una lettera (Z di solito) sono gli Smart CIG, ovvero quelli obbligatori per gli affidamenti diretti e in economia (che sono la maggior parte degli acquisti soprattutto negli enti locali).
Molti non hanno tutti gli invitati perché in un primo tempo (prima delle FAQ modificate nel gennaio scorso) sembrava che AVCP avesse indicato di inserire solo i partecipanti alla gara (non solo per le procedure aperte, ma per tutte le tipologie).

PS: grandi tutti, sarà un lavoro utilissimo per tutti!





Francesca Sensinj
Skype: kika67it
Twitter: @frasens


Inviato da iPad
> Per ulteriori opzioni, visita https://groups.google.com/d/optout.

Nicola Ghirardi

unread,
Jul 23, 2014, 1:00:55 PM7/23/14
to spaghett...@googlegroups.com
Qui il draft del data model di open contracting
http://ocds.open-contracting.org/standard/r/0__2__0/

Qui una discussione per il data model "serializzato" in linked data :)
https://groups.google.com/a/webfoundation.org/forum/#!topic/public-ocds/RbYcZcoKAKM

Utile anche per capire il dominio :)

Alessio Dragoni

unread,
Jul 23, 2014, 4:05:45 PM7/23/14
to spaghett...@googlegroups.com

Utilissimo Nicola!
Grazie

--

Alfredo Serafini

unread,
Jul 24, 2014, 5:20:20 AM7/24/14
to spaghett...@googlegroups.com
molto interessante! in qualche vita parallela me lo studio, grazie :-)

Stefano Durì

unread,
Jul 25, 2014, 11:52:07 AM7/25/14
to spaghett...@googlegroups.com

Grazie a tutti delle segnalazioni. Devo dire che tendo a vedere la cosa dal lato dei potenziali utilizzi dei dati esistenti (questo doc è particolarmente interessante al riguardo). 

Qui di seguito qualche altro spezzone di ragionamento. Ragiono sempre a budget zero, cioé supponendo di non acquistare nessuno stock di dati, altrimenti è troppo facile.


Se volessi ad es. analizzare la gestione degli appalti nel comune X dovrei

  1. trovare e scaricare il file xml pubblicato dal comune 

  2. trasformare il file in modo da ottenere tre dataset: GARE, IMPRESE e PARTECIPAZIONI (o anche solo GARE e PARTECIPAZIONI denormalizzate, come nei miei spreadsheet)

  3. scaricare i file delle attestazioni, cercare le imprese utilizzando il CF e ricavare qualche dato di localizzazione da collegare anche questo a IMPRESE

  4. integrare le informazioni sulle gare sopra soglia cercando su TED il nome del comune, scrapando i risultati e unendoli via CIG alla relativa riga del dataset GARE

  5. cercare sul web con il cf e parte del nome le imprese che mi interessano, unendo via CF il dataset che ne risulta (strutturato a piacere) a IMPRESE


Le attività 4 e 5 sembrano difficili da automatizzare e sono realizzabili manualmente solo per dataset di dimensioni ridotte.


Se ho come obbiettivo quello di rispondere alle query di utenti che, ad es., cercano potenziali clienti pubblici / fornitori devo necessariamente aggregare molti dataset. Sarò quindi vincolato a pochi tipi di source, abbastanza poveri di dati e, come si è notato, di qualità non semprem eccelsa. 

Il processo ovviamente cambia: per ogni tipo di file devo prevedere


  1. sistema di individuazione dei source

  2. storage dei source in un'area dedicata

  3. controllo, normalizzazione, salvataggio della versione corretta nel formato prescelto
    Il sourcefile conterrà tre tipi di dati:
    a) dati anagrafici del soggetto pubblico
    b) dati anagrafici dell'impresa
    c) dati caratteristici dell'operazione
    I dati a) e b) dovranno rispondere a schemi predefiniti e identici per tutti i tipi di file, mentre i c) varieranno a seconda del tipo di operazione

  4. caricamento nella piattaforma prescelta


Le cose poi cambiano a seconda che io preveda di gestire tutto il processo centralmente o di consentire il caricamento di dataset da parte di terzi, nel qual caso diventa critico il controllo della struttura e della qualità dei file in entrata.


Uno dei problemi da affrontare è quello dell'aggiornamento o dell'integrazione dei dati. Esempio

- t0: pubblicato il bando sulla GUUE

- t1: pubblicato l'esito della gara, inclusi i dati dei partecipanti e degli aggiudicatari

- t2: ottengo dati aggiuntivi sulle imprese partecipanti

- t3: ottengo dati aggiornati sulle imprese partecipanti da altra fonte, parzialmente in overlapping con quelli che ho già

Sembra necessario, almeno nel caso delle imprese, ricorrere a qualche forma di "versioning" dei dati.


E siamo solo all'inizio del ragionamento

Stefano Durì

unread,
Jul 31, 2014, 8:18:16 AM7/31/14
to spaghett...@googlegroups.com
(boh, io ogni tanto aggiungo qualcosa che magari serve a qualcuno)
a) un foglio in cui importo e rielaboro una pagina (regione Abruzzo) delle attestazioni AVCP di cui si è parlato qualche post fa. Per fare il lavoro le normali funzioni di google sono sufficienti
b) un foglio in cui mostro l'output di una funzione creata da me (lo spunto viene da qui: http://www.labnol.org/internet/google-web-scraping/28450/) che cerca su Google il cf e la denominazione di alcune imprese e restituisce i primi n url trovati. L'obbiettivo è ovviamente quello di trovare automaticamente il sito web dell'azienda. Warning: è bene non sparare troppe ricerche in successione rapida e salvare sempre i valori restituiti da una funzione, per evitare che l'IP venga temporaneamente bloccato da una riesecuzione (anche solo il refresh del foglio) e che i dati presenti siano annullati. Per questo non ho messo la funzione "viva" ma solo la sintassi e i risultati, che sono buoni e secondo me con qualche accorgimento addizionale potrebbero essere anche migliori. Per mettere le mani sul codice dovete copiarvi il foglio

Stefano Durì

unread,
Dec 8, 2014, 6:42:53 PM12/8/14
to spaghett...@googlegroups.com
nuovo grezzo esperimento di visualizzazione dei dati EXPO su kumu, segnalatomi da Andrea Nelson Mauro
https://kumu.io/duristef/expo (warning: dati incompleti). 
Volendo si potrebbe arricchire integrandolo con le pagine openexpo, vedi ad es. https://kumu.io/duristef/expo#map/cig51571739c8

Message has been deleted

Stefano Durì

unread,
Dec 20, 2014, 4:54:44 AM12/20/14
to spaghett...@googlegroups.com
continuando la mia esplorazione di Kumu ho realizzato un grafo che rappresenta un singolo appalto (la "Piastra", da 165M€) e la struttura dei lavori subappaltati. 

Andrea Nelson Mauro

unread,
Dec 28, 2014, 12:47:50 PM12/28/14
to spaghett...@googlegroups.com
ciao stefano, ovviamente ti faccio i complimenti per il lavoro esplorativo e mi permetto di segnalarti alcuni punto for dummies che potrebbero aiutare la lettura in particolare su la piastra:
1) le label usate per i nodi sono dei codici identificativi, sarebbe di più facile lettura forse usare direttamente i nomi delle imprese (esempio: uno nodo ha label I_05139950967 e l'impresa è la SIECOM S.R.L.)
2) impossibile fare lo stesso sui raggruppamenti (a meno di non sostituire "G" con "Raggruppamento"... ma avrebbe senso?
3) per gli appalti invece sarebbe forse cercare di dare alle label contenuti più semplici... Anche banalmente tipo "Appalto La Piastra"... 

Mi ispiravo in questi piccoli suggerimenti a una viz che kumu pubblicata come sample e ti linko qui https://kumu.io/hiqol/hawaii-quality-of-life

bye e auguri! :)

Stefano Durì

unread,
Dec 29, 2014, 9:54:34 AM12/29/14
to spaghett...@googlegroups.com
è vero, le label vanno rese più chiare. Ci sono però due vincoli: 
- la label è l'identificativo del nodo, quello che serve anche per definire le relazioni (archi). Deve quindi essere univoco. Non so se debba anche rispettare qualche altra caratteristica, tipo assenza di caratteri speciali
- più la lunghezza media della label è lunga più lo spazio del grafo risulta affollato e illeggibile
In realtà, se il grafo è minimamente complesso, ci si orienta soprattutto con le funzioni di ricerca e i filtri (in alto a sx e in basso) e cliccando sugli oggetti e le relazioni 

Stefano Durì

unread,
Apr 22, 2015, 6:40:32 AM4/22/15
to spaghett...@googlegroups.com
Durante una chiacchierata a SOD15​, Marco Di Giacomo mi ha suggerito di provare ad applicare all'Umbria il modello di cattura ed elaborazione dei file xml relativi alla L.190 che ho un po' spiegato in questo vecchio thread.
Mixando dati di fonte SIOPE e ANAC ho individuato un discreto numero di file (78 file di 75 comuni su 92) + uno della Regione, tutti relativi al 2014 + 3 del 2015 (v. qui: https://drive.google.com/open?id=1K9aLS7tb0rVaiD6iGeyWVDFYrMshzN43dtXH7ZNsr3c&authuser=0). Si noti che i file che mancano a me non risultano nemmeno all'ANAC, che in compenso non ne ha alcuni di cui io dispongo. Volendo si possono agevolmente aggiungere altri file (Province, ASL, Università di PG,..)

La situazione non è esattamente brillante: a parte la mancanza assoluta del file xml in quasi 1/5 dei Comuni e qualche file corrotto (che ho segnalato), è evidente che mancano spesso controlli formali dei dati in entrata e che non vengono rispettati formati standard (numeri, date, c.f.).
Comunque si portano a casa informazioni relative a quasi 15400 lotti (= forniture di prodotti/servizi), per "aggiudicarsi" i quali hanno partecipato oltre 6200 soggetti distinti, direttamente o attraverso una cinquantina di raggruppamenti.

Procedimento
  • Preparazione dell'elenco dei file (v. ANCITEL, SIOPE, ANAC) - sia indirizzi web che salvati in locale
  • Lettura, controllo ed elaborazione dei file xml effettuati da un job di Kettle, che crea 7 file tab separated
    • metadati
    • lotti
    • partecipanti
    • partecipazione di singoli (relazione partecipante - lotto)
    • partecipazione di gruppi (relazione gruppo - lotto)
    • partecipazione a gruppi (relazione partecipante - gruppo)
    • ​aggiudicazioni (elenco lotti aggiudicati con relativi aggiudicatari)
  • Caricamento file in Google Fusion Table (a scopo di esempio, ma occorrerebbe una soluzione più robusta ad es. MongoDB)
n.b. Per semplificare le cose, Kettle potrebbe anche caricare direttamente i file su Google Spreadsheet
Reply all
Reply to author
Forward
0 new messages