Skip to content

ahmeabd/italia-corpus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

358 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🇮🇹 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.000 23 (sync completo) GBs Ogni 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:

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

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]
Loading

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:

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 cases

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

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

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

Contributing

Found a parsing error, a missing file, or have ideas to improve the project? See CONTRIBUTING.md for guidelines.


Legal notice

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:

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

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]
Loading

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:

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.


Casi d'uso

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

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

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

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.

About

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

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors