Skip to content

WCRP-CMIP/CMIPLD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

435 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CMIP-LD

CMIP Linked Data Utilities Library

CMIP-LD Logo

Python License


Overview

CMIP-LD is a Python library for working with CMIP (Coupled Model Intercomparison Project) Linked Data vocabularies. It provides tools to fetch, resolve, validate, and generate documentation for JSON-LD controlled vocabularies used across CMIP and related climate science projects.

Key Features

  • πŸ”— Prefix Resolution - Resolve short prefixes (e.g., universal:frequency) to full URLs
  • πŸ“₯ Data Fetching - Retrieve and expand JSON-LD documents with automatic dereferencing
  • πŸ“ Documentation Generation - Auto-generate README files for vocabulary directories
  • βœ… Validation - Validate JSON files against schemas and contexts
  • πŸ”„ CI/CD Actions - GitHub Actions for automated vocabulary processing

Supported Vocabularies

Prefix Repository Description
universal WCRP-universe Universal controlled vocabularies
cmip7 CMIP7-CVs CMIP7 controlled vocabularies
cmip6plus CMIP6Plus_CVs CMIP6Plus controlled vocabularies
cf CF CF Conventions vocabularies
vr Variable-Registry Variable registry
emd Essential-Model-Documentation Essential model documentation

Installation

Using pip (editable mode for development)

git clone https://github.com/wcrp-cmip/CMIP-LD.git
cd CMIP-LD
pip install -e .

Dependencies

  • Python 3.8+
  • jsonld-recursive - JSON-LD processing
  • requests - HTTP requests
  • Optional: esgvoc - For Pydantic model integration

Quick Start

Fetching Data

import cmipld

# Fetch and resolve a vocabulary term
data = cmipld.get("universal:frequency/mon")
print(data)

# Expand a JSON-LD document
expanded = cmipld.expand("universal:frequency")

Resolving Prefixes

import cmipld

# Get the full URL for a prefix
url = cmipld.mapping['universal']
# β†’ 'https://wcrp-cmip.github.io/WCRP-universe/'

# Resolve a prefixed URI
full_url = cmipld.resolve_prefix("universal:frequency/mon")

Using with esgvoc

from esgvoc.api import search

# Search for terms
results = search.find("frequency", term="mon")
print(results)

Repository Structure

CMIP-LD/
β”œβ”€β”€ cmipld/                    # Main Python package
β”‚   β”œβ”€β”€ __init__.py            # Package initialization & client setup
β”‚   β”œβ”€β”€ locations.py           # Prefix mappings and URL resolution
β”‚   β”œβ”€β”€ prefix_mappings.json   # Prefix β†’ repository mappings
β”‚   β”œβ”€β”€ generate/              # Documentation generation tools
β”‚   β”‚   β”œβ”€β”€ create_readme.py   # Generate READMEs for vocab directories
β”‚   β”‚   β”œβ”€β”€ generate_summary.py
β”‚   β”‚   └── validate_json.py
β”‚   └── utils/                 # Utility functions
β”‚       β”œβ”€β”€ git/               # Git integration
β”‚       β”œβ”€β”€ extract/           # Data extraction tools
β”‚       └── ...
β”œβ”€β”€ actions/                   # GitHub Actions for CI/CD
β”œβ”€β”€ static/                    # Static assets (viewer, images)
β”œβ”€β”€ notebooks/                 # Example Jupyter notebooks
└── scripts/                   # Standalone utility scripts

Documentation Generation

Generate READMEs for Vocabulary Directories

The create_readme.py script generates standardized documentation for vocabulary directories containing JSON-LD files:

python -m cmipld.generate.create_readme /path/to/src-data/universe

Features:

  • Only processes directories with a _context file
  • Extracts schema from Pydantic models (via esgvoc) or JSON keys
  • Generates usage examples for cmipld, esgvoc, and direct HTTP
  • Creates collapsible file listings
  • Analyzes external dependencies

Collect READMEs for MkDocs

python scripts/collect_vocab_docs.py /path/to/src-data --output docs/vocabularies

This collects all vocabulary READMEs into a single folder for rendering with MkDocs.


GitHub Actions

CMIP-LD provides reusable GitHub Actions for vocabulary repositories:

Action Description
actions/process_jsonld Process and validate JSON-LD files
actions/build-mkdocs Build MkDocs documentation
actions/check-graph Validate graph structure
actions/commit-all Commit changes with attribution

Contributing

See CONTRIBUTING.md for guidelines.


Related Projects


License

Apache 2.0 - See LICENSE for details.


Developed by WCRP-CMIP for the climate science community.

About

CMIP Linked Data Utilities Library

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •