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 github.com/linkml organization on GitHub to browse all repos.
Note that for many LinkML users, there is no need to understand the overall organization.
The two most important packages are
utilities for working with data
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.
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 and specification have their own dedicated repo:
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.
Build a new LinkML project conformant to best practices for directory layout, with hooks for automatic updates, and a suite of autogenerated example schemas.
tools for bootstrapping schemas
from unstructured TSVs
from OWL ontologies
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#
provides a way of compiling LinkML schemas to Solr schemas
runtime query bindings to Solr updates and queries
extension to runtime to provide:
a change/patch API over data
a query API over data
LinkML for other languages#
linkml-runtime-java (in progress)