Skip to main content

A simple toolkit for working with LinkML schemas

Project description

LinkML Toolkit (lmtk)

Tests PyPI version Documentation Status

A simple toolkit for working with LinkML schemas. This tool offers advanced schema analysis, validation, transformation, and visualization capabilities through a flexible command-line interface.

🌟 Features

  • Schema Analysis

    • Generate schema summaries.
    • Detailed views of classes, slots, and types.
    • Support for hierarchical and section-based analysis.
  • Schema Validation

    • Rigorous validation checks with detailed error reporting.
    • Optional metadata display for schemas.
  • Schema Operations

    • Merge or concatenate multiple schemas.
    • Subset schemas by specified classes.
  • Format Conversion

    • Export schemas to JSON, RDF, GraphQL, CSV, TSV, and SQL formats.
    • Customize RDF serialization formats (e.g., Turtle, XML).
    • SQL export supporting PostgreSQL, MySQL, SQLite, and DuckDB dialects.
  • Visualization

    • Generate interactive HTML visualizations of schemas.
    • Options for inheritance, descriptions, and statistics display.

🚀 Installation

Using pip

pip install linkml-toolkit

Using conda

# Create environment from provided configuration
conda env create -f environment-dev.yml
conda activate linkml-toolkit-dev

# For production environment only
conda env create -f environment.yml
conda activate linkml-toolkit

Development Installation

# Clone the repository
git clone https://github.com/genomewalker/linkml-toolkit.git
cd linkml-toolkit

# Create and activate conda environment
conda env create -f environment-dev.yml
conda activate linkml-toolkit-dev

# Install in development mode
pip install -e ".[dev,test,docs]"

📚 Usage

Core Commands

Schema Summary

# Generate a summary of the schema
lmtk summary --schema schema.yaml

# Detailed view for specific sections
lmtk summary --schema schema.yaml --section slots --detailed

# Export summary to JSON
lmtk summary --schema schema.yaml --output summary.json

Schema Validation

# Validate schema
lmtk validate --schema schema.yaml

# Validate with metadata display
lmtk validate --schema schema.yaml --metadata

Schema Export

# Export to JSON Schema
lmtk export --schema schema.yaml --format json --output schema.json

# Export to RDF (Turtle format)
lmtk export --schema schema.yaml --format rdf --rdf-format turtle --output schema.ttl

# Export to SQL (PostgreSQL dialect)
lmtk export --schema schema.yaml --format sql --sql-dialect postgresql --output schema.sql

Schema Subset

# Create a subset containing specific classes
lmtk subset --schema schema.yaml --classes class1,class2 --output subset.yaml

# Exclude inherited elements
lmtk subset --schema schema.yaml --classes class1 --no-inherited --output subset.yaml

Schema Combination

# Merge schemas
lmtk combine --schema base.yaml --additional-schemas schema1.yaml -a schema2.yaml --mode merge --output merged.yaml

# Concatenate schemas
lmtk combine --schema base.yaml --additional-schemas schema1.yaml -a schema2.yaml --mode concat --output concatenated.yaml

Schema Visualization

# Generate an interactive HTML visualization
lmtk visualize --schema schema.yaml --output visualization.html

# Generate full documentation bundle
lmtk visualize --schema schema.yaml --output docs/ --full-docs

🛠️ Development

Environment Management

# Create development environment
conda env create -f environment.yml

# Update environment
conda env update -f environment.yml

# Create production environment
conda env create -f environment.prod.yml

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=linkml_toolkit

# Run specific test file
pytest tests/test_core.py

# Run tests with output
pytest -v

Building Documentation

# Build documentation
cd docs
mkdocs build

# Serve documentation locally
mkdocs serve

📖 Project Structure

linkml-toolkit/
├── src/
│   └── linkml_toolkit/      # Source code
├── tests/                   # Test suite
│   └── data/               # Test data
├── docs/                    # Documentation
├── environment.yml         # Development environment
├── environment.prod.yml    # Production environment
├── pyproject.toml         # Build configuration
├── setup.cfg              # Package metadata
└── tox.ini               # Test automation

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the Repository

    git clone https://github.com/genomewalker/linkml-toolkit.git
    cd linkml-toolkit
    
  2. Set Up Development Environment

    conda env create -f environment.yml
    conda activate linkml-toolkit
    pip install -e ".[dev,test,docs]"
    
  3. Create a Branch

    git checkout -b feature/your-feature-name
    
  4. Make Changes

    • Write code
    • Add tests
    • Update documentation
  5. Verify Changes

    # Run tests
    pytest
    
    # Run linting
    tox -e lint
    
    # Build docs
    cd docs && mkdocs build
    
  6. Submit Pull Request

    • Push changes to your fork
    • Create pull request
    • Wait for review

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • LinkML community for the base LinkML implementation.
  • Contributors who have helped improve this toolkit.

📫 Contact

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

linkml_toolkit-0.1.0.tar.gz (53.3 kB view details)

Uploaded Source

Built Distribution

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

linkml_toolkit-0.1.0-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file linkml_toolkit-0.1.0.tar.gz.

File metadata

  • Download URL: linkml_toolkit-0.1.0.tar.gz
  • Upload date:
  • Size: 53.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for linkml_toolkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 748f6188981de70ad90e1b6aade4ab527ce699da80de2e57407c41f762cee085
MD5 47d6b379341f6685bcee375e546707ea
BLAKE2b-256 388f7d6b8a1223ff5343580494f1ea0590c4ab16dbb41b1ba003dc5d2584ac0e

See more details on using hashes here.

File details

Details for the file linkml_toolkit-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: linkml_toolkit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 45.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for linkml_toolkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 63d84d9a1500100e1b7ed131aab5b69fca16893358aa97bb343286e53ce73461
MD5 af6a5f276bd1f5c4e12c0d94f257a390
BLAKE2b-256 65730d37f4993963480329b41cfc457dd760ecd7a495edff39c8b0b20ac60da2

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