Come ho messo Costituzione e codici italiani in un knowledge graph

17/06/20265 min read
Come ho messo Costituzione e codici italiani in un knowledge graph

Risposta diretta: per Open·Parlamento ho ingerito la Costituzione italiana e sette codici (penale, civile, procedura civile, strada, consumo, assicurazioni private) in un knowledge graph, articolo per articolo — circa 6.445 articoli — ciascuno con un identificatore stabile ELI per le citazioni, e collegati da 86.672 relazioni di modifica autoritative estratte da Normattiva in formato Akoma Ntoso. Niente parafrasi: il testo è verbatim, le relazioni sono deterministiche (confidenza 1.0). Ecco come, con i numeri e i limiti onesti.

TL;DR

  • Cosa: Costituzione (139 articoli) + 7 codici = ~6.445 articoli, testo integrale per-articolo.
  • Come si cita: ogni articolo ha un ID ELI, es. eli:/it/codice-penale/art/575, così una citazione risolve all'articolo esatto.
  • Relazioni: 86.672 archi (modifica, abroga, sostituisce, inserisce, converte, proroga) da Normattiva (Akoma Ntoso), confidenza 1.0, created_by: normattiva.
  • Onestà: molte norme referenziate non sono ancora nel corpus — la chiusura del grafo sulle relazioni è ancora parziale.

Perché un grafo e non un PDF

Un codice è già un testo. Perché trasformarlo in un grafo? Perché le domande utili non sono «cosa dice l'articolo 575», ma «cosa è cambiato, chi l'ha cambiato, quale norma lo modifica». Queste risposte vivono nelle relazioni tra norme, non nel testo isolato. Un knowledge graph rende quelle relazioni di prima classe: nodi (gli articoli) e archi tipizzati (le modifiche) navigabili e citabili.

E soprattutto: un agente AI può rispondere in modo affidabile solo se ogni affermazione risolve a un articolo reale, non a una parafrasi inventata. Per questo il testo entra verbatim.

Cosa c'è dentro (i numeri)

Fonte Articoli Note
Costituzione 139 testo integrale
Codice Penale 734
Codice Civile ~3.000 il più grande
Codice di Procedura Civile 831
Codice della Strada 240
Codice del Consumo 146
Codice delle Assicurazioni Private 355
Totale ~6.445 per-articolo, con ELI

Il metodo: per-articolo, con ELI

Ogni articolo diventa un documento autonomo nel grafo, con un'intestazione in prosa naturale che incorpora codice, numero d'articolo e identificatore ELI per il recupero delle citazioni. In pratica:

Codice Penale, Articolo 575 (identificativo ELI: eli:/it/codice-penale/art/575).

[testo verbatim dell'articolo]

L'ELI (European Legislation Identifier) è la chiave: è un ID stabile e standard che permette di citare l'articolo esatto e di collegarlo ad altre norme senza ambiguità. Una domanda sull'omicidio risolve, end-to-end, a «Articolo 575 del Codice Penale» — con il riferimento, non con una frase generica.

Le relazioni autoritative: 86.672 archi, zero invenzione

Il cuore del grafo non è indovinato da un LLM. Le relazioni tra norme sono estratte in modo deterministico da Normattiva, che pubblica i testi in Akoma Ntoso con i blocchi <activeModifications> (cosa questa norma modifica) e <passiveModifications> (chi modifica questa norma). Da lì ricaviamo archi tipizzati:

  • abroga — abrogazione (la maggioranza assoluta degli archi)
  • modifica — modifica generica
  • inserisce — inserimento di nuove disposizioni
  • sostituisce — sostituzione di testo
  • converte — conversione decreto→legge
  • proroga — proroga di termini

Ogni arco porta il testo-prova allegato, created_by: normattiva e confidenza 1.0. Sono fatti, non inferenze. Sopra questa base si possono aggiungere archi inferiti dall'AI (impatti su diritti e settori), ma sempre etichettati come tali e con confidenza visibile: onestà sulla provenienza prima di tutto.

I limiti, dichiarati

Un grafo onesto dichiara cosa non copre. Oggi:

  • Le relazioni puntano spesso a norme referenziate ma non ancora presenti nel corpus: la chiusura del grafo sugli archi è ancora parziale. Stiamo ampliando il corpus per ridurre i nodi «sospesi».
  • Il corpus copre Costituzione + codici principali; non tutta la legislazione vigente.
  • Gli archi inferiti dall'AI sono complementari e dichiarati: la base autoritativa resta quella di Normattiva.

Dichiarare i limiti non è una debolezza: è la differenza tra uno strumento che cita la fonte e uno che finge di sapere tutto.

FAQ

Cos'è un identificatore ELI?

ELI (European Legislation Identifier) è uno standard europeo per dare a ogni norma — e a ogni articolo — un identificatore stabile e risolvibile. Permette di citare l'articolo esatto e di collegare norme tra loro senza ambiguità, anche tra ordinamenti diversi.

Le relazioni di modifica sono generate dall'AI?

No. Le relazioni autoritative (modifica, abroga, sostituisce…) sono estratte in modo deterministico dai metadati Akoma Ntoso di Normattiva, con confidenza 1.0. Eventuali relazioni inferite dall'AI sono separate, etichettate e con confidenza inferiore.

Quanti articoli ci sono nel grafo?

Circa 6.445 articoli: la Costituzione (139) più sette codici (penale, civile, procedura civile, strada, consumo, assicurazioni private), tutti ingeriti per-articolo con identificatore ELI.


Costruiamo knowledge graph che citano la fonte, non la sostituiscono. Vedi come funziona Open·Parlamento e i suoi open data, oppure parliamone.

Knowledge GraphLegal TechAIOpen Data

Scritto da Giulio Garofalo