Data Model
This page is auto-generated from zenodo_schema.yaml at build time.
Dataset Fields
| Field | Label | Type | Required | Description |
|---|---|---|---|---|
title |
Title | text | ✓ | Title of the work from Zenodo |
notes |
Description | text (markdown) | ✓ | Description of the work (HTML stripped from Zenodo) |
tag_string |
Tags | text | Free-form tags for convenience | |
source_url |
Source URL | text | URL of the original record at the source repository (e.g. Zenodo) | |
doi |
DOI | text | Digital Object Identifier URL | |
canonical_id |
Canonical ID | text | ✓ | Persistent identifier (DOI URL) used as @id in ODIS JSON-LD export |
resource_type |
Resource Type | text | ✓ | Schema.org type from Zenodo |
license_id |
License | text | License definitions and additional information can be found at http://opendefinition.org/ | |
date_published |
Date Published | date | Publication date (YYYY-MM-DD) | |
date_created |
Date Created | text | Record creation timestamp (ISO 8601) | |
date_modified |
Date Modified | text | Record modification timestamp (ISO 8601) | |
publisher_name |
Publisher | text | Name of the publisher (typically Zenodo) | |
authors |
Authors (JSON) | JSON array | Authors as JSON array. Example: [{"author_name": "Name", "author_orcid": "https://orcid.org/..."}] | |
contributors |
Contributors (JSON) | JSON array | Contributors as JSON array | |
funding |
Funding (JSON) | JSON array | Funding information as JSON array | |
keywords |
Keywords | text | Comma-separated keywords | |
temporal_coverage |
Temporal Coverage | text | ISO 8601 date or date range | |
language |
Language | text | ||
spatial_point_latitude |
Latitude | text | Decimal degrees (-90 to 90) | |
spatial_point_longitude |
Longitude | text | Decimal degrees (-180 to 180) | |
spatial_box |
Bounding Box | text | Format miny minx maxy maxx (lat long coordinates) | |
spatial_description |
Spatial Description | text | Human-readable location description | |
zenodo_record_id |
Zenodo Record ID | text | Numeric ID from Zenodo URL | |
harvest_timestamp |
Harvest Timestamp | text | When this record was harvested from Zenodo | |
content_size |
Content Size | text | File size if applicable |
Product Types
Controlled vocabulary for the product_type field.
| Value | Label |
|---|---|
dataset |
Dataset |
publication |
Publication |
software |
Software |
presentation |
Presentation |
poster |
Poster |
image |
Image/Figure |
video |
Video |
lesson |
Lesson |
physical_object |
Physical Object |
other |
Other |
Thematic Areas
Controlled vocabulary for the thematic_tags field.
| Value | Label |
|---|---|
Biodiversity |
Biodiversity |
Climate Change |
Climate Change |
Ocean Acidification |
Ocean Acidification |
Marine Protected Areas |
Marine Protected Areas |
eDNA |
eDNA |
Invasives |
Invasives |
Fisheries |
Fisheries |
Pollution |
Pollution |
Coastal Management |
Coastal Management |
Deep Sea |
Deep Sea |
Coral Reefs |
Coral Reefs |
Species Distribution |
Species Distribution |
Near-Realtime |
Near-Realtime |
Spatial Coverage
The spatial_coverage_type field determines which spatial fields are used:
| Type | Fields used |
|---|---|
point |
spatial_point_latitude, spatial_point_longitude |
box |
spatial_box (format: miny minx maxy maxx) |
JSON Array Fields
The authors, contributors, and funding fields store structured data as JSON arrays.
authors
| Key | Description |
|---|---|
author_name |
Full name |
author_given_name |
Given name |
author_family_name |
Family name |
author_orcid |
ORCID URL |
author_affiliation_name |
Affiliation name |
author_affiliation_ror |
ROR ID |
Example:
[{"author_name": "Jane Doe", "author_orcid": "https://orcid.org/0000-0001-2345-6789", "author_affiliation_name": "VLIZ"}]
contributors
| Key | Description |
|---|---|
contributor_name |
Full name |
contributor_given_name |
Given name |
contributor_family_name |
Family name |
contributor_orcid |
ORCID URL |
contributor_affiliation_name |
Affiliation name |
contributor_affiliation_ror |
ROR ID |
Example:
funding
| Key | Description |
|---|---|
funder_name |
Funder name |
funder_id |
Funder ID |
grant_name |
Grant name |
grant_id |
Grant ID |
grant_url |
Grant URL |
Example:
[{"funder_name": "European Commission", "grant_id": "12345", "grant_name": "Marine Biodiversity Project"}]
Data Pipeline
Source API (Zenodo, future: GBIF, Dryad, etc.)
↓ mapper (Python function: API response → standard dict)
↓
CKAN (storage, curation UI, search, user management)
↓ odis_export extension (CKAN dataset → Schema.org JSON-LD)
↓
ODIS (discovery, federated search)
Adding a new source requires writing one mapper file in ckanext-doi-import/ckanext/doi_import/mappers/.