Il corpus della legislazione italiana in Markdown — aggiornato quotidianamente.
License: MIT Data: Public Domain Updates: Daily Source: Normattiva
| 📄 Atti | 🗂️ Collezioni | 💾 Dimensione | 🔄 Aggiornamenti |
|---|---|---|---|
| > 280.000 | 23 (sync completo) | GBs | Ogni 24 ore |
Italia Corpus Legale is a public dataset that collects all Italian legislation published on Normattiva and distributes it as Markdown — ready for language models, RAG pipelines, researchers, and anyone who needs structured, machine-readable legal text.
Each act is one file. Each legislative update is a commit.
Italian legislation is technically public, but in practice it is hard to use:
| Problem | Status |
|---|---|
| Proprietary formats or hard-to-parse HTML | ✅ Solved |
| No ready-to-use dataset for model training | ✅ Solved |
| No AI-friendly version of the law in force | ✅ Solved |
The corpus is generated by an open-source Python script available at github.com/ahmeabd/italia-corpus-script. It runs the following pipeline:
flowchart TD
A[Normattiva Public API] --> B[Download Collections]
B --> C[Process & Generate Markdown\nwith YAML frontmatter]
C --> D[Resolve References\ninternal → file links · external → Normattiva]
D --> E[Commit Changes]
E --> F[Publish to GitHub]
Each run only produces real diffs — if a collection has not changed, no commit is created.
Every file in the corpus begins with a YAML frontmatter block that carries structured metadata:
---
tipo: DECRETO-LEGGE
numero: 216
data: 1993-07-06
titolo: "Adempimenti finanziari per l'attuazione del regolamento CEE n. 880/92 sul marchio di qualita' ecologica - Ecolabel."
urn: urn:nir:stato:decreto.legge:1993-07-06;216
codice_redazionale: 093G0287
vigente: true
---This metadata is designed to enable seamless integration across a broad range of services:
| Field | Purpose |
|---|---|
tipo |
Act type — enables filtering by legislative instrument |
numero + data |
Temporal ordering and point-in-time queries |
titolo |
Full-text title search |
urn |
Stable, canonical reference (NIR standard) |
codice_redazionale |
Cross-reference key used by Normattiva |
vigente |
In-force flag for filtering only current law |
References: cross-references to other acts in this corpus are resolved internally (file-to-file links). References to acts not present in the corpus are redirected to the Normattiva platform.
| Use case | How to use this repo |
|---|---|
| Legal RAG | Index .md files with a vector store (Chroma, Pinecone, Qdrant…) |
| LLM fine-tuning | Use the corpus as domain-specific training text |
| Benchmarks | Build Q&A from articles to evaluate legal models |
| Research | Linguistic analysis, NLP, citation graphs of Italian law |
| Case law | Link normative texts with court decisions |
git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpusIndex with LangChain:
from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader
loader = DirectoryLoader(
"italia-corpus/",
glob="**/*.md",
loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()The corpus is updated automatically whenever Normattiva publishes changes, with daily checks.
Each legislative difference corresponds to a git commit — meaning you can track the evolution of Italian law using standard git tools:
git log --oneline # see all legislative updates
git blame <file>.md # see when each line was last changed
git diff HEAD~1 # inspect the latest normative diff| Parameter | Value |
|---|---|
| Format | Markdown (.md) with YAML frontmatter |
| Encoding | UTF-8 |
| Primary source | normattiva.it |
| Updates | Automatic, diff-driven |
| Content license | Public data |
| Script license | MIT — italia-corpus-script |
Found a parsing error, a missing file, or have ideas to improve the project? See CONTRIBUTING.md for guidelines.
Italian legislative texts are public acts of the State and may be freely reproduced under Article 5 of the Copyright Act (Law 633/1941).
This repository is not affiliated with or sponsored by Normattiva or the Italian government.
Warning
Texts are provided without warranty of completeness or real-time currency. For legal or professional use, always refer to the Gazzetta Ufficiale.
Built by ahmeabd. If this project helps you, leave a star ⭐ — it helps more developers find it.
Because the law belongs to everyone. Finally its data does too.
Italia Corpus Legale è un dataset pubblico che raccoglie l'intera legislazione italiana pubblicata su Normattiva e la distribuisce in formato Markdown — pronto per essere consumato da modelli di linguaggio, pipeline RAG, ricercatori e chiunque abbia bisogno di testo legale strutturato e machine-readable.
Ogni norma è un file. Ogni aggiornamento normativo è un commit.
La legislazione italiana è tecnicamente pubblica, ma nella pratica è inaccessibile:
| Problema | Stato |
|---|---|
| Formati proprietari o HTML difficile da parsare | ✅ Risolto |
| Nessun dataset pronto per il training di modelli | ✅ Risolto |
| Nessuna versione AI-friendly della normativa vigente | ✅ Risolto |
Il corpus è prodotto da uno script Python open source disponibile su github.com/ahmeabd/italia-corpus-script, che esegue la seguente pipeline:
flowchart TD
A[API pubbliche di Normattiva] --> B[Download delle collezioni]
B --> C[Elaborazione e generazione Markdown\ncon frontmatter YAML]
C --> D[Risoluzione dei riferimenti\ninterni → link a file · esterni → Normattiva]
D --> E[Commit delle modifiche]
E --> F[Pubblicazione su GitHub]
Ogni esecuzione produce solo i diff reali — se una collezione non è cambiata, nessun commit viene generato.
Ogni file del corpus inizia con un blocco YAML frontmatter contenente metadati strutturati:
---
tipo: DECRETO-LEGGE
numero: 216
data: 1993-07-06
titolo: "Adempimenti finanziari per l'attuazione del regolamento CEE n. 880/92 sul marchio di qualita' ecologica - Ecolabel."
urn: urn:nir:stato:decreto.legge:1993-07-06;216
codice_redazionale: 093G0287
vigente: true
---Questi metadati sono progettati per consentire un'integrazione diretta in una vasta gamma di servizi:
| Campo | Scopo |
|---|---|
tipo |
Tipo di atto — permette il filtraggio per strumento normativo |
numero + data |
Ordinamento temporale e query puntuali nel tempo |
titolo |
Ricerca full-text per titolo |
urn |
Riferimento stabile e canonico (standard NIR) |
codice_redazionale |
Chiave di riferimento incrociato usata da Normattiva |
vigente |
Flag di vigenza per filtrare solo la normativa in vigore |
Riferimenti: i riferimenti incrociati ad altri atti presenti nel corpus vengono risolti internamente (link file-to-file). I riferimenti ad atti non presenti nel corpus vengono reindirizzati alla piattaforma Normattiva.
| Caso d'uso | Come usare questo repo |
|---|---|
| RAG legale | Indicizza i file .md con un vector store (Chroma, Pinecone, Qdrant…) |
| Fine-tuning LLM | Usa il corpus come dataset di testo domain-specific |
| Benchmark | Crea Q&A basate sugli articoli per valutare modelli legali |
| Ricerca | Analisi linguistica, NLP, citation graph della normativa italiana |
| Giurisprudenza | Collegamento tra testi normativi e sentenze |
git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpusIndicizza con LangChain:
from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader
loader = DirectoryLoader(
"italia-corpus/",
glob="**/*.md",
loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()Il corpus viene aggiornato automaticamente ogni volta che Normattiva pubblica modifiche, con controlli giornalieri.
Ogni differenza normativa corrisponde a un commit git — il che significa che puoi seguire l'evoluzione della legislazione italiana con i normali strumenti git:
git log --oneline # visualizza tutti gli aggiornamenti normativi
git blame <file>.md # vedi quando ogni riga è stata modificata l'ultima volta
git diff HEAD~1 # analizza l'ultimo diff normativo| Parametro | Valore |
|---|---|
| Formato | Markdown (.md) con frontmatter YAML |
| Encoding | UTF-8 |
| Fonte primaria | normattiva.it |
| Aggiornamento | Automatico, guidato da diff |
| Licenza contenuti | Dati pubblici |
| Licenza script | MIT — italia-corpus-script |
Hai trovato un errore nel parsing, un file mancante o hai idee su come migliorare il progetto? Consulta il file CONTRIBUTING.md per le linee guida.
I testi normativi italiani sono atti pubblici dello Stato e come tali liberamente riproducibili ai sensi dell'art. 5 della Legge sul diritto d'autore (L. 633/1941).
Questa repository non è affiliata né sponsorizzata da Normattiva o dal Governo italiano.
Warning
I testi sono forniti senza garanzia di completezza o aggiornamento in tempo reale. Per uso legale o professionale fare sempre riferimento alla Gazzetta Ufficiale.
Realizzato da ahmeabd. Se questo progetto ti è utile, lascia una stella ⭐ — aiuta il progetto a raggiungere più sviluppatori.
Perché la legge è di tutti. Finalmente anche il suo dato.