GitHub Organization#

The LinkML project is organized in a modular fashion, and consists of different components. Each component lives in its own GitHub repository. It may also be distributed as a separate software package on sites like PyPI.

See the organization on GitHub to browse all repos.

Note that for many LinkML users, there is no need to understand the overall organization.

Core Packages#

The two most important packages are linkml and linkml-runtime

  • linkml

    • generators

    • utilities for working with data

    • this documentation

  • linkml-runtime

    • code needed by linkml python object models

    • utility code such as schemaview

    • includes metamodel (linkml_runtime.linkml_model)

If you are using LinkML in a Python environment, then as a general rule you should only need linkml as a developer dependency. This is used for things like compiling your schema to data classes. This is something the package developer does prior to release, rather than at runtime.

The linkml-runtime package is designed to provide runtime support. If you develop a Python project, then your generated data classes will have a runtime dependency on this package

The metamodel#

The metamodel and specification have their own dedicated repo:

  • linkml-model

    • self-describing linkml datamodel

    • note that you should not use this module programmatically - use linkml_runtime.linkml_model

There are no programmatic dependencies on this repo. But note that the python dataclasses generated from this are incorporated into linkml-runtime.

Productivity utilities#

  • linkml-project-cookiecutter

    • Build a new LinkML project conformant to best practices for directory layout, with hooks for automatic updates, and a suite of autogenerated example schemas.

  • schema-automator

    • tools for bootstrapping schemas

      • from unstructured TSVs

      • from OWL ontologies

      • from JSON-Schema

    • tools for inferring enum ontology mappings using OLS and BioPortal

Note that schema-automator depends on LinkML, but there are no dependencies from the core package on schema-automator

Working with different backends#

  • linkml-solr

    • provides a way of compiling LinkML schemas to Solr schemas

    • runtime query bindings to Solr updates and queries

Additional packages#

  • linkml-dataops

    • extension to runtime to provide:

      • a change/patch API over data

      • a query API over data

LinkML for other languages#