LinkML encourages modular schema development. You can split you schema into modules, and even reuse other peoples modules on the web
A schema can have a list of imports associated with it. These are specified as CURIEs or local imports.
Importing external schemas#
Most schemas will have at least an imports to the linkml types schema, which defines core types:
prefixes: linkml: https://w3id.org/linkml/ ...: ... imports: - linkml:types
prefixes declaration (see URIs and
mappings) registers the linkml prefix. The
import is exanded to
https://w3id.org/linkml/types, and an implicit
file type suffix is added, yielding https://w3id.org/linkml/types.yaml
You can also specify relative paths, e.g
imports: - core - ../enums/my-enums
.yaml suffix is implicitly added, and here the list elements represent a relative path on the file system.
If you include relative paths and make a release of your schema be sure that the imported modules are accessible and follow the same paths
Making merged files for distribution#
Sometimes it can be convenient to merge imports prior to distribution. This makes it easier for programs that want to make use of a linkml schema, as they only have to work with one file, rather than implementing the full import mechanism. It can also help eliminate network dependencies.
All generators have a
--mergeimports import that
will merge the imports closure. i.e. all imported definitions will be
recursively copied into the main file.
One particularly useful generator is the linkml generator. This can be used to make a single combined file for distribution (in either JSON or YAML)