Visualizzazione interattiva del grafo degli e-services sulla Piattaforma Digitale Nazionale Dati (PDND).
I nodi rappresentano gli enti (PA centrali, Regioni, Comuni) e gli archi le relazioni erogatoreβfruitore, con spessore proporzionale al numero di e-services condivisi.
Una versione pubblica dell'applicazione Γ¨ accessibile all'indirizzo PDND Graph e non richiede installazione nΓ© autenticazione.
| Sezione | Vai a |
|---|---|
| PerchΓ© questo progetto | PerchΓ© questo progetto |
| PerchΓ© un grafo | PerchΓ© un grafo |
| FunzionalitΓ | FunzionalitΓ |
| Fonti dati e trasparenza metodologica | Fonti dati e trasparenza metodologica |
| Quick Start | Quick Start |
| Struttura del progetto | Struttura del progetto |
| Come aggiornare i dati | Come aggiornare i dati |
| Tecnologie | Tecnologie |
| Contribuire | Contribuire |
| Licenza | Licenza |
La PDND Γ¨ il pilastro dell'interoperabilitΓ tra le Pubbliche Amministrazioni italiane: consente lo scambio sicuro e standardizzato di dati tramite API, realizzando concretamente il principio once-only, la PA non chiede a cittadini e imprese dati che giΓ possiede.
Con oltre 14.000 API pubblicate e 7.500 enti aderenti, l'ecosistema PDND Γ¨ vasto e in rapida crescita. Tuttavia, la sua complessitΓ rende difficile avere una visione d'insieme: chi eroga quali servizi? Chi li fruisce? Quanto Γ¨ interconnessa la rete dell'interoperabilitΓ italiana?
Questo progetto nasce per rendere visibile e navigabile quella rete. L'obiettivo Γ¨ offrire una mappa interattiva che permetta a chiunque, funzionari pubblici, sviluppatori, ricercatori, cittadini, di esplorare le connessioni tra gli enti e comprendere come i dati fluiscono attraverso la Pubblica Amministrazione.
Nei fatti, i dataset open data della PDND pubblicano il catalogo degli e-service e il numero aggregato delle connessioni, ma non le coppie puntuali erogatoreβfruitore. Le relazioni rappresentate in questo grafo sono state ricostruite da documentazione ufficiale pubblica (circolari, manuali operativi, presentazioni istituzionali). Questo progetto vuole anche essere uno stimolo affinchΓ© quei dati diventino un giorno completamente aperti.
L'interoperabilitΓ tra enti pubblici Γ¨, nella sua essenza, un problema di rete: soggetti che producono dati e soggetti che li consumano, collegati da accordi e interfacce digitali. La teoria dei grafi offre il modello formale piΓΉ naturale per rappresentare e analizzare questo tipo di struttura.
Formalmente, l'ecosistema PDND puΓ² essere modellato come un grafo diretto
pesato
-
$V$ Γ¨ l'insieme dei nodi (gli enti aderenti) -
$E \subseteq V \times V$ Γ¨ l'insieme degli archi diretti (le relazioni di fruizione) -
$w: E \to \mathbb{N}$ Γ¨ la funzione peso che associa a ogni arco il numero di e-services condivisi tra i due enti
Un arco
La rappresentazione a grafo rende immediatamente visibili proprietΓ dell'ecosistema che sarebbero difficili da cogliere da un elenco tabulare:
-
Grado di un nodo (degree). Per ogni nodo
$v$ , il grafo diretto distingue tra il grado in uscita$d_{out}(v)$ (numero di enti verso cui$v$ eroga servizi) e il grado in ingresso$d_{in}(v)$ (numero di enti da cui$v$ fruisce servizi). Un ente come il Ministero dell'Interno (ANPR) ha un$d_{out}$ elevato e un$d_{in}$ basso, tipico di un hub erogatore. I Comuni presentano il pattern opposto. -
CentralitΓ (centrality). La centralitΓ di grado
$C_D(v) = \frac{d_{in}(v) + d_{out}(v)}{|V| - 1}$ quantifica quanto un ente Γ¨ interconnesso rispetto al resto della rete. Nodi con alta centralitΓ rappresentano gli snodi critici dell'interoperabilitΓ : un'interruzione dei loro servizi avrebbe impatto su molti altri enti. -
DensitΓ del grafo. Definita come
$\rho = \frac{|E|}{|V| \cdot (|V| - 1)}$ misura quanto la rete Γ¨ interconnessa rispetto al massimo teorico. Una densitΓ bassa indica che l'interoperabilitΓ Γ¨ ancora concentrata su pochi enti erogatori centrali, mentre una densitΓ crescente nel tempo segnalerebbe una rete sempre piΓΉ distribuita. -
Componenti e cluster. Il grafo evidenzia raggruppamenti tematici naturali, gli enti del welfare (INPS, Comuni, MLPS), del fisco (AdE, MEF, Sogei), della trasparenza (ANAC, AgID), che corrispondono ai domini funzionali della PA. In termini di teoria dei grafi, questi cluster possono essere analizzati tramite il coefficiente di clustering o algoritmi di community detection.
La visualizzazione adotta un layout force-directed (Fruchterman-Reingold), un algoritmo che modella il grafo come un sistema fisico:
- ogni arco si comporta come una molla che attrae i nodi collegati
- ogni coppia di nodi esercita una forza repulsiva (come cariche elettriche)
- una forza gravitazionale debole tiene il grafo centrato
Il sistema converge iterativamente verso un equilibrio in cui i nodi collegati sono vicini e i nodi non collegati sono distanti, facendo emergere visivamente la struttura topologica della rete senza richiedere un posizionamento manuale. Questa proprietΓ Γ¨ particolarmente utile per l'ecosistema PDND, dove la struttura a stella (pochi erogatori centrali, molti fruitori periferici) si manifesta spontaneamente nel layout.
- Grafo force-directed interattivo con simulazione fisica
- 31 enti e 57 e-services reali dal catalogo ufficiale PDND
- Drag & drop dei nodi, zoom con scroll, pan con trascinamento
- Pannello dettagli con elenco e-services erogati e fruiti per ogni ente
- Filtro per categoria (cliccabile dalla legenda) e ricerca testuale
- Frecce direzionali erogatore β fruitore
- Badge numerici con conteggio connessioni
- Colori per categoria: Ministero, Previdenza, Fisco, Digitale, ecc.
- Servizi comunali aggregati (~7.500 Comuni rappresentati come nodo unico)
β οΈ Nota sulle connessioni: gli enti (nodi) e gli e-services provengono dai dataset open data ufficiali della PDND. Le relazioni erogatoreβfruitore (archi) sono state ricostruite da documentazione ufficiale pubblica (circolari, manuali operativi, presentazioni istituzionali) e dal campoattributesdel catalogo, perchΓ© il dato puntuale delle connessioni attive non Γ¨ al momento pubblicato come dato aperto strutturato. Per tutti i dettagli, vedi METODOLOGIA.md.
β οΈ Nota sull'aggregazione dei Comuni: il catalogo PDND contiene 2.000+ API, la maggior parte delle quali sono servizi standard replicati da ciascuno dei ~7.500 Comuni aderenti (Albo Pretorio, SUAP, Civici, ecc.). Per rendere il grafo leggibile, i Comuni minori sono rappresentati come un unico nodo aggregato, mentre 6 grandi Comuni sono mantenuti come nodi individuali. Vedi METODOLOGIA.md Β§3.1.
| Dato | Fonte ufficiale | Tipo |
|---|---|---|
| Enti (nodi) | aderenti.csv β dati.gov.it | β Dato aperto ufficiale |
| E-services | eservice_a_catalogo.csv β dati.gov.it | β Dato aperto ufficiale |
| Connessioni (archi) | Circolari, manuali, campo attributes CSV |
π Documentazione completa: METODOLOGIA.md
La metodologia adottata in questo progetto Γ¨ documentata nel paper:
Del Re, F. (2026). The PDND E-Service Network: A Graph-Based Model from Italian Open Government Data. Zenodo. doi:10.5281/zenodo.19989954
Il paper descrive il modello, le fonti, la pipeline di ricostruzione, il ruolo dei modelli linguistici come strumento di estrazione, e riporta la copertura misurata del modello rispetto al catalogo PDND ufficiale (~89% di 14.102 endpoint pubblicati). Il sorgente LaTeX Γ¨ in pdnd-graph-paper.
# Clona il repository
git clone https://github.com/engineering87/pdnd-eservices-graph.git
cd pdnd-eservices-graph
# Installa le dipendenze
npm install
# Avvia in sviluppo
npm run devL'app sarΓ disponibile su http://localhost:3000.
pdnd-eservices-graph/
βββ .github/workflows/
β βββ azure-static-web-apps.yml # CI/CD per Azure
βββ public/
β βββ favicon.svg
βββ scripts/
β βββ update-data.mjs # Riepilogo del catalogo PDND
β βββ audit-model.mjs # Audit interno del modello
β βββ compare-catalog.mjs # Confronto modello vs catalogo
β βββ compute-paper-metrics.mjs # Snippet per il paper Zenodo
β βββ README.md # Documentazione degli script
βββ src/
β βββ components/
β β βββ PDNDGraph.jsx # Componente principale del grafo
β βββ data/
β β βββ pdnd-data.json # β DATI: modifica questo file
β βββ App.jsx
β βββ index.css
β βββ main.jsx
βββ index.html
βββ package.json
βββ staticwebapp.config.json # Config Azure Static Web Apps
βββ vite.config.js
βββ METODOLOGIA.md # β Fonti, metodologia, limitazioni
βββ README.md
Apri src/data/pdnd-data.json e aggiungi un oggetto all'array enti:
{
"id": "nuovo_ente",
"name": "Nome Visibile",
"tipo": "Erogatore | Fruitore | Erogatore/Fruitore",
"categoria": "Ministero",
"descrizione": "Descrizione estesa dell'ente"
}Se la categoria Γ¨ nuova, aggiungi il colore in CATEGORY_COLORS dentro src/components/PDNDGraph.jsx.
Aggiungi un oggetto all'array eservices:
{
"id": "es_nuovo",
"nome": "Nome del Servizio",
"erogatore": "id_ente_erogatore",
"fruitori": ["id_fruitore_1", "id_fruitore_2"],
"versione": "1.0",
"stato": "Attivo",
"descrizione": "Cosa fa questo e-service"
}Lo script update-data scarica il CSV grezzo dal repository ufficiale e mostra statistiche utili per scoprire nuovi erogatori o servizi da aggiungere:
npm run update-dataOutput di esempio:
βββββββββββββββββββββββββββββββββββββββββββββββββββ
RIEPILOGO CATALOGO PDND
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Totale API: 2.147
Pubblicate: 2.003
Enti erogatori: 1.842
TOP 30 EROGATORI (per API pubblicate)
βββββββββββββββββββββββββββββββββββββββ
1. Comune di Bologna 23 API
2. Comune di Genova 18 API
...
Tre script complementari sono disponibili per verificare in modo ripetibile la coerenza del modello e per generare i numeri esatti dei deliverable scientifici:
npm run audit # audit interno del JSON: conteggi, gradi, consistency checks
npm run compare-catalog # confronto con il catalogo ufficiale, copertura, gap
npm run paper-metrics # snippet pgfplots/LaTeX per il paper Zenodonpm run audit segnala incoerenze (es. nodo dichiarato Erogatore ma senza e-service erogati). npm run compare-catalog calcola la copertura percentuale del modello rispetto al catalogo PDND vivo. Per dettagli vedi scripts/README.md.
- React 18 β UI
- Vite 6 β Build tool
- Canvas 2D β Rendering del grafo (nessuna dipendenza esterna)
- Azure Static Web Apps β Hosting
- GitHub Actions β CI/CD
Le Pull Request sono benvenute. Per contribuire:
- Fai un fork del repository
- Crea un branch (
git checkout -b feature/nuovo-ente) - Modifica
src/data/pdnd-data.jsono il componente - Committa e pusha (
git push origin feature/nuovo-ente) - Apri una Pull Request
Questo progetto Γ¨ distribuito sotto licenza AGPL-3.0 β vedi LICENSE.
- Puoi usare, modificare e distribuire liberamente il codice
- Se modifichi il codice e lo distribuisci, devi rendere disponibili le modifiche sotto la stessa licenza
- Se usi questo software come servizio (es. web app accessibile da utenti), sei tenuto a rendere disponibile il codice sorgente modificato agli utenti del servizio
Se utilizzi questo progetto (o una sua derivazione) per erogare un servizio accessibile via rete, la licenza AGPL richiede che:
- gli utenti possano accedere al codice sorgente della versione in esecuzione
- eventuali modifiche apportate siano pubblicate
I dati sugli e-services provengono da PDND Open Data e sono distribuiti sotto licenza CC0 1.0 Universal (Pubblico Dominio) dalla Presidenza del Consiglio dei Ministri β Dipartimento per la Trasformazione Digitale.
