Extension Dataset series implementation


Extension Basics

Title
Dataset series implementation
Name
ckanext-dataset-series
Type
Public extension
Description
Fast and simple implementation of ordered or unordered dataset series with navigation
CKAN versions

~2.9, ~2.10, ~2.11

Show details
Download-Url (zip)
Download-Url commit date
2024-01-01
Url to repo
Category
Data Management & Quality


Background Infos

Description (long)
Show details

This extension provides a fast and simple implementation of Dataset Series for CKAN. Dataset Series are collections of datasets that share common characteristics such as nature of data, scope, or publishing process. Examples include: budget data released monthly/yearly, data split by country/region, large data split into smaller chunks, geospatial data distributed in grids. Features include: custom dataset_series type for parent series entities, ordered or unordered series support, multiple series membership per dataset (datasets can belong to multiple series), in_series field for series assignment via API or UI, series_navigation key in package_show API response with series details, previous/next dataset links for ordered series, first/last member links for series datasets, series_navigation.html snippet for UI navigation, integration with ckanext-scheming for schema definition, series_order_field and series_order_type presets for ordered series, count of series members in API response. Compatible with CKAN 2.10+. Python 3.9-3.12 compatible. Beta development status. AGPL licensed. WARNING: Work in progress, may change at any point.

Version
0.1.0
Version release date
2024-01-01
Contact name
AdriĆ  Mercader
Contakt email
(not set)
Contact Url
(not set)


Installation Guide

Configuration hints

Install via pip:

pip install -e git+https://github.com/DataShades/ckanext-dataset-series.git#egg=ckanext-dataset-series

pip install -r requirements.txt

Enable the plugin:

ckan.plugins = dataset_series

Requires ckanext-scheming to be installed and configured.

Define series schema (for ordered series) using ckanext-scheming:

Series dataset schema (dataset_series type):

scheming_version: 2
dataset_type: dataset_series

dataset_fields:
  # Standard dataset fields...

  # Series fields
  - field_name: series_order_field
    preset: ds_series_order

  - field_name: series_order_type
    preset: ds_series_order_type

Member dataset schema (dataset type):

scheming_version: 2
dataset_type: dataset

dataset_fields:
  # Standard dataset fields...

  # Series membership field
  - field_name: in_series
    preset: ds_in_series

Usage:

  1. Create series dataset:

    • Type: dataset_series
    • Define series_order_field and series_order_type for ordered series
    • Or leave unordered for simple collections
  2. Assign datasets to series:

    • Set in_series field via API or UI form
    • Datasets can belong to multiple series
  3. API responses include series_navigation:

    For member datasets:

    {
     "name": "test-dataset-in-series",
     "type": "dataset",
     "series_navigation": [{
       "id": "...",
       "name": "test-dataset-series",
       "title": "Test Dataset series",
       "next": {...},  # For ordered series
       "previous": {...}  # For ordered series
     }]
    }
    

    For series datasets:

    {
     "name": "test-dataset-series",
     "type": "dataset_series",
     "series_navigation": {
       "count": 4,
       "first": {...},  # For ordered series
       "last": {...}  # For ordered series
     }
    }
    
  4. UI navigation snippet:

Add to package/read.html template:

{% ckan_extends %}

{% block package_description %}
    {% snippet "package/snippets/series_navigation.html", package=pkg %}
    {{ super() }}
{% endblock %}

Snippet shows previous/next navigation links for first series. Customize snippet for multiple series navigation.

Use cases: - Budget data: monthly/yearly releases - Geographic data: split by country/region - Large datasets: chunked into smaller files - Time series: sequential data releases - Grid data: geospatial tile distribution

Available presets (ckanext-scheming): - ds_series_order: for series_order_field - ds_series_order_type: for series_order_type - ds_in_series: for in_series field

TODO: - Series page showing navigation of member datasets

Requirements: - CKAN >= 2.10 - ckanext-scheming (required) - Python >= 3.9

WARNING: Work in progress - may change at any point. Use with caution.

Plugins to configure (ckan.ini)
dataset_series
CKAN Settings (ckan.ini)
(not set)
DB migration to be executed
(not set)
<< back to Extensions