🇬🇧 English
🇬🇧 English
Appearance
🇬🇧 English
🇬🇧 English
Appearance
Work Package 6: REST API and open data catalogue according to the DCAT-AP_IT standard
Development of REST API v2 for programmatic access to SLO data and publication of open data datasets according to the European DCAT-AP_IT standard.
Objectives:
API design document:
REST API implementation with:
Publication of open data datasets via CKAN:
GET /api/v2/slo # List of Homogeneous Local Systems (SLO)
GET /api/v2/slo/{id} # SLO detail
GET /api/v2/comuni # List of municipalities with attributes
GET /api/v2/comuni/{codice} # Municipality detail
GET /api/v2/isocrone/{codice} # Accessibility isochrones
GET /api/v2/polarita # Territorial attractors
GET /api/v2/datasets # Available dataset catalogueCKAN automatically exposes standard APIs for each published dataset:
# CKAN Action API (JSON)
GET /api/3/action/package_list # Dataset list
GET /api/3/action/package_show?id={dataset_id} # Dataset metadata
GET /api/3/action/resource_show?id={resource_id} # Resource metadata
GET /api/3/action/datastore_search?resource_id={id} # Data query
# DCAT-AP_IT Endpoint (RDF/XML)
GET /catalog.xml # Complete DCAT-AP_IT catalogue
GET /dataset/{dataset_id}.xml # Single dataset DCAT metadata
# CSW Harvesting (for dati.gov.it)
GET /csw?request=GetCapabilities
GET /csw?request=GetRecords&outputSchema=http://www.isotc211.org/2005/gmdPrefect automated workflow:
@flow(name="publish-to-ckan")
def publish_open_data():
"""
Pubblica dataset approvati da Gold layer a CKAN
Steps:
1. Query gold.open_data_approved (flag published=false)
2. Export dataset (CSV, GeoJSON, Parquet)
3. Generate DCAT-AP_IT metadata
4. Upload to CKAN via API
5. Update published=true flag
6. Notify dati.gov.it harvester
"""
approved_datasets = get_approved_datasets()
for dataset in approved_datasets:
# Export da PostgreSQL
export_dataset(dataset)
# Genera metadata DCAT-AP_IT
metadata = generate_dcat_metadata(
dataset,
license="CC-BY-4.0",
publisher="Fondazione Gran Sasso Tech",
temporal_coverage="2010-2025",
spatial_coverage="Italia"
)
# Upload to CKAN
ckan_client.package_create(
name=dataset.slug,
title=dataset.title,
notes=dataset.description,
extras=metadata
)
# Mark as published
mark_as_published(dataset.id)Triggers:
The MAPS project adopts a dual-catalog architecture to separate internal governance from public access:
| Tool | Audience | Purpose |
|---|---|---|
| OpenMetadata | Internal data operators (WP2) | Governance, lineage, data quality |
| CKAN | External public (WP6) | Open data catalogue, DCAT-AP_IT, dati.gov.it |
This separation ensures:
Workflow: Gold Layer → OpenMetadata (quality approval) → CKAN (publication) → dati.gov.it (harvesting)
🚧 In preparation - Documentation will be available during the implementation phase (M20-M24)
Author: Guglielmo Celata - Fondazione Gran Sasso Tech