Skip to main content

PyPI version GitHub deepwiki License: MIT Newsletter

DCAT-AP IT Generator

Idea originale di Daniele Crespi.

Genera file RDF Turtle conformi a DCAT-AP IT interrogando qualsiasi portale CKAN via API.

Il problema che risolve

L'approccio tradizionale per produrre metadati DCAT-AP IT da un portale CKAN richiede l'installazione e la manutenzione del plugin ckanext-dcatapit. Questo plugin:

  • non è aggiornato attivamente da anni
  • richiede accesso all'infrastruttura del portale
  • dipende da una versione specifica di CKAN

Questo tool funziona in modo completamente indipendente dal plugin e dall'infrastruttura del portale. Basta che il portale esponga le API CKAN standard (disponibili su qualsiasi installazione CKAN).

Come funziona

Lo script interroga le API pubbliche del portale CKAN, mappa i campi dei dataset verso le proprietà DCAT-AP IT e produce un file Turtle pronto per essere harvested.

flowchart LR
    A[Portale CKAN\nAPI pubbliche] -->|fetch + mapping| B[dcat-ap-it generate]
    B -->|RDF Turtle| C[catalog.ttl]
    C -->|harvesting| D[Catalogo\nnazionale / regionale]

Il file prodotto è pronto per essere harvested da qualsiasi catalogo che supporti DCAT-AP IT — che sia nazionale (es. dati.gov.it) o regionale.

Contiene:

  • dcatapit:Catalog con i metadati del catalogo
  • dcatapit:Dataset per ogni dataset pubblicato
  • dcatapit:Distribution per ogni risorsa

Installazione

# da PyPI
uv tool install dcat-ap-it-generator

# oppure con pip
pip install dcat-ap-it-generator

Il pacchetto include 122 regole SPARQL allineate all'OWL DCAT-AP IT, usate dal comando validate. Non è necessario scaricarle separatamente. Le regole combinano quelle originali di daf-semantic-validator con correzioni e integrazioni derivate dall'OWL ufficiale — vedi docs/rules.md per i dettagli.

Vuoi testarlo subito?

Nella cartella examples/ trovi una configurazione già pronta per il portale open data del Comune di Messina.

# 1. Installa il tool
uv tool install dcat-ap-it-generator

# 2. Clona il repository (per i file di esempio)
git clone https://github.com/ondata/dcat-ap-it-generator
cd dcat-ap-it-generator

# 3. Anteprima senza scrivere file
dcat-ap-it generate --config examples/config-messina.yml --dry-run

# 4. Genera il file Turtle
dcat-ap-it generate --config examples/config-messina.yml
# → output/messina.ttl

Uso

# Genera il file Turtle
dcat-ap-it generate --config config.yml

# Anteprima senza scrivere file
dcat-ap-it generate --config config.yml --dry-run

# Genera un file per organizzazione
dcat-ap-it generate --config config.yml --organizations org1,org2

# Wizard interattivo per creare una nuova configurazione
dcat-ap-it configure

# Valida un file TTL contro le 122 regole DCAT-AP IT
dcat-ap-it validate output/catalog.ttl

# Solo errori (esclude warning)
dcat-ap-it validate output/catalog.ttl --errors-only

Validazione ufficiale AgID

Il comando validate serve a controllare il file in locale, prima di pubblicarlo. Per la verifica ufficiale usa il Validatore DCAT-AP IT messo a disposizione da AgID sul portale nazionale dati.gov.it: è il riferimento di riscontro per i cataloghi destinati alla federazione.

Configurazione

Copia un file da examples/ e adattalo al tuo portale:

portal:
  url: "https://dati.comune.esempio.it"   # URL base portale CKAN
  api_key: ""                              # opzionale, per portali privati
  rows_per_page: 100                       # dataset per richiesta paginata (default: 100)
  max_datasets: 0                          # limite totale dataset; 0 = nessun limite (default: 0)
  chunk_size: 0                            # se > 0, genera N file TTL separati (es. 500 → catalog_001.ttl, _002.ttl…)
  query_template: ""                       # opzionale: filtro CKAN fq (es. "organization:nome-org")

catalog:
  uri: "https://dati.comune.esempio.it/catalog"
  title: "Catalogo Open Data"
  description: ""                          # opzionale
  issued: ""                               # opzionale, formato ISO 8601
  publisher_name: "Comune di Esempio"
  publisher_identifier: "c_xxxxx"         # codice IPA — cerca su https://indicepa.gov.it
  language: "ITA"                          # codice ISO 639-3
  homepage: ""                             # opzionale
  spatial: ""                              # opzionale, URI GeoNames (es. https://www.geonames.org/2524170)

output:
  path: "output/catalog.ttl"

Uso in cron

# Ogni domenica alle 3:00
0 3 * * 0 dcat-ap-it generate --config /path/to/config.yml

Metadata

Release files for dcat-ap-it-generator 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dcat-ap-it-generator 0.1.9
File Size Uploaded
dcat_ap_it_generator-0.1.9.tar.gz 33.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dcat-ap-it-generator 0.1.9
File Interpreter ABI Platform
dcat_ap_it_generator-0.1.9-py3-none-any.whl Python 3 none any Details

Total release size: 146.3 kB

Release files / dcat_ap_it_generator-0.1.9.tar.gz

Download URL dcat_ap_it_generator-0.1.9.tar.gz
Size 33.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4d5f99551a5c8006cd76962febcccabcdd1f9d95b05f99ad23d88bed46b46ee3
BLAKE2b-256 checksum
How to use checksums
c5f5a499c8481818f251baf6e1967e3f76f40779359a4fce7ebd27ee997bcb3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release files / dcat_ap_it_generator-0.1.9-py3-none-any.whl

Download URL dcat_ap_it_generator-0.1.9-py3-none-any.whl
Size 113.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce59f48df8597e71f00965eadf0b4148e18dd70b066e873fa694ff2ac69d0664
BLAKE2b-256 checksum
How to use checksums
a9f5a0da12e96e7208ed674e2f0eed095d88b7a2f1d2af5c2672a1dbf4f795a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.9

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 release files

0.1.8

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page