ahmeabd/italia-corpus

A continuously updated, machine-readable corpus of Italian legislation. Clean structure, versioned updates, and ready-to-use data for parsing, search, and analysis.

436

503 commits

updated Jul 18, 2026

See the code

README

🇮🇹 Italia Corpus

Il corpus della legislazione italiana in Markdown — aggiornato quotidianamente.

License: MIT Data: Public Domain Updates: Daily Source: Normattiva


📄 Atti🗂️ Collezioni💾 Dimensione🔄 Aggiornamenti
> 280.00023 (sync completo)GBsOgni 24 ore

🇬🇧 English · 🇮🇹 Italiano


English

What this project is

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.


Why it exists

Italian legislation is technically public, but in practice it is hard to use:

ProblemStatus
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

How it is produced

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.


File format & frontmatter

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:

FieldPurpose
tipoAct type — enables filtering by legislative instrument
numero + dataTemporal ordering and point-in-time queries
titoloFull-text title search
urnStable, canonical reference (NIR standard)
codice_redazionaleCross-reference key used by Normattiva
vigenteIn-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 cases

Use caseHow to use this repo
Legal RAGIndex .md files with a vector store (Chroma, Pinecone, Qdrant…)
LLM fine-tuningUse the corpus as domain-specific training text
BenchmarksBuild Q&A from articles to evaluate legal models
ResearchLinguistic analysis, NLP, citation graphs of Italian law
Case lawLink normative texts with court decisions

Quick start

git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpus

Index with LangChain:

from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader

loader = DirectoryLoader(
    "italia-corpus/",
    glob="**/*.md",
    loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()

Updates

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

Technical details

ParameterValue
FormatMarkdown (.md) with YAML frontmatter
EncodingUTF-8
Primary sourcenormattiva.it
UpdatesAutomatic, diff-driven
Content licensePublic data
Script licenseMIT — italia-corpus-script

Contributing

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.


Author

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.



Italiano

Cos'è questo progetto

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.


Perché esiste

La legislazione italiana è tecnicamente pubblica, ma nella pratica è inaccessibile:

ProblemaStato
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

Come viene generato

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.


Formato dei file e frontmatter

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:

CampoScopo
tipoTipo di atto — permette il filtraggio per strumento normativo
numero + dataOrdinamento temporale e query puntuali nel tempo
titoloRicerca full-text per titolo
urnRiferimento stabile e canonico (standard NIR)
codice_redazionaleChiave di riferimento incrociato usata da Normattiva
vigenteFlag 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.


Casi d'uso

Caso d'usoCome usare questo repo
RAG legaleIndicizza i file .md con un vector store (Chroma, Pinecone, Qdrant…)
Fine-tuning LLMUsa il corpus come dataset di testo domain-specific
BenchmarkCrea Q&A basate sugli articoli per valutare modelli legali
RicercaAnalisi linguistica, NLP, citation graph della normativa italiana
GiurisprudenzaCollegamento tra testi normativi e sentenze

Utilizzo rapido

git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpus

Indicizza con LangChain:

from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader

loader = DirectoryLoader(
    "italia-corpus/",
    glob="**/*.md",
    loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()

Aggiornamenti

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

Dati tecnici

ParametroValore
FormatoMarkdown (.md) con frontmatter YAML
EncodingUTF-8
Fonte primarianormattiva.it
AggiornamentoAutomatico, guidato da diff
Licenza contenutiDati pubblici
Licenza scriptMIT — italia-corpus-script

Contribuire

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.


Note legali

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.


Autore

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.

italian
legal
open-source

Contributors

ahmeabd

503 commits

ahmeabd/italia-corpus

A continuously updated, machine-readable corpus of Italian legislation. Clean structure, versioned updates, and ready-to-use data for parsing, search, and analysis.

436

503 commits

updated Jul 18, 2026

See the code

README

🇮🇹 Italia Corpus

Il corpus della legislazione italiana in Markdown — aggiornato quotidianamente.

License: MIT Data: Public Domain Updates: Daily Source: Normattiva


📄 Atti🗂️ Collezioni💾 Dimensione🔄 Aggiornamenti
> 280.00023 (sync completo)GBsOgni 24 ore

🇬🇧 English · 🇮🇹 Italiano


English

What this project is

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.


Why it exists

Italian legislation is technically public, but in practice it is hard to use:

ProblemStatus
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

How it is produced

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.


File format & frontmatter

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:

FieldPurpose
tipoAct type — enables filtering by legislative instrument
numero + dataTemporal ordering and point-in-time queries
titoloFull-text title search
urnStable, canonical reference (NIR standard)
codice_redazionaleCross-reference key used by Normattiva
vigenteIn-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 cases

Use caseHow to use this repo
Legal RAGIndex .md files with a vector store (Chroma, Pinecone, Qdrant…)
LLM fine-tuningUse the corpus as domain-specific training text
BenchmarksBuild Q&A from articles to evaluate legal models
ResearchLinguistic analysis, NLP, citation graphs of Italian law
Case lawLink normative texts with court decisions

Quick start

git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpus

Index with LangChain:

from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader

loader = DirectoryLoader(
    "italia-corpus/",
    glob="**/*.md",
    loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()

Updates

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

Technical details

ParameterValue
FormatMarkdown (.md) with YAML frontmatter
EncodingUTF-8
Primary sourcenormattiva.it
UpdatesAutomatic, diff-driven
Content licensePublic data
Script licenseMIT — italia-corpus-script

Contributing

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.


Author

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.



Italiano

Cos'è questo progetto

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.


Perché esiste

La legislazione italiana è tecnicamente pubblica, ma nella pratica è inaccessibile:

ProblemaStato
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

Come viene generato

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.


Formato dei file e frontmatter

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:

CampoScopo
tipoTipo di atto — permette il filtraggio per strumento normativo
numero + dataOrdinamento temporale e query puntuali nel tempo
titoloRicerca full-text per titolo
urnRiferimento stabile e canonico (standard NIR)
codice_redazionaleChiave di riferimento incrociato usata da Normattiva
vigenteFlag 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.


Casi d'uso

Caso d'usoCome usare questo repo
RAG legaleIndicizza i file .md con un vector store (Chroma, Pinecone, Qdrant…)
Fine-tuning LLMUsa il corpus come dataset di testo domain-specific
BenchmarkCrea Q&A basate sugli articoli per valutare modelli legali
RicercaAnalisi linguistica, NLP, citation graph della normativa italiana
GiurisprudenzaCollegamento tra testi normativi e sentenze

Utilizzo rapido

git clone https://github.com/ahmeabd/italia-corpus.git
cd italia-corpus

Indicizza con LangChain:

from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader

loader = DirectoryLoader(
    "italia-corpus/",
    glob="**/*.md",
    loader_cls=UnstructuredMarkdownLoader
)
docs = loader.load()

Aggiornamenti

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

Dati tecnici

ParametroValore
FormatoMarkdown (.md) con frontmatter YAML
EncodingUTF-8
Fonte primarianormattiva.it
AggiornamentoAutomatico, guidato da diff
Licenza contenutiDati pubblici
Licenza scriptMIT — italia-corpus-script

Contribuire

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.


Note legali

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.


Autore

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.

italian
legal
open-source

Contributors

ahmeabd

503 commits