Skip to main content

Genera cataloghi RDF DCAT-AP IT da portali CKAN

Project description

PyPI version GitHub deepwiki License: MIT

DCAT-AP IT Generator

Idea originale di Daniele Crespi.

Nota: prodotto ancora in fase di test. L'output potrebbe non essere completamente conforme a DCAT-AP IT.

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcat_ap_it_generator-0.1.2.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dcat_ap_it_generator-0.1.2-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file dcat_ap_it_generator-0.1.2.tar.gz.

File metadata

  • Download URL: dcat_ap_it_generator-0.1.2.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for dcat_ap_it_generator-0.1.2.tar.gz
Algorithm Hash digest
SHA256 90b152a600540be5db76a9509e3218e5dd4d85822de3a4c69697370f029221b7
MD5 2d1f2b6d4f5777751c4f29a7a6d0bc09
BLAKE2b-256 bcd1e77103ef6543c7c93d5bf25f477fde0f0e91e30ebee98b97e4b6c01c46cc

See more details on using hashes here.

File details

Details for the file dcat_ap_it_generator-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for dcat_ap_it_generator-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 110bf4ea945b71c2e7b4656cacc3c045e488175012e6b5c7c42db23b20166d99
MD5 a2bb82f6368c7496e17305d76b34f90b
BLAKE2b-256 312bde9e44030655ff3a92affe1bc44caf1edca36088ad964f36a84a8306ac1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page