LinkML Documentation — linkml documentation

# LinkML Documentation

Everything you need to know about LinkML, the Linked Data Modeling Language.

LinkML is a flexible modeling language that allows you to author schemas in YAML that describe the structure of your data. LinkML provides a framework for working with and validating data in a variety of formats (JSON, RDF, TSV) provides generators for compiling LinkML schemas to other frameworks.

## Documentation

Contents:

- LinkML at a glance
  - Feature: Easy to author schemas
  - Feature: Rich modeling language
  - A bridge between frameworks
  - Feature: Generation of documentation and websites
  - A rapidly growing toolchain
  - We eat our own dogfood!
  - More examples
- Quick Install Guide
  - Install Python
  - Install LinkML
  - Alternative protocol: Use Docker
  - Installation for contributors
- Tutorial
  - Part 1: Creating your first LinkML schema
  - Part 2: Adding a container object
  - Part 3: Adding constraints and performing validation
  - Part 4: Working with RDF
  - Part 5: Using Python dataclasses
  - Part 6: Enumerations
  - Part 7: Slots and inheritance
  - Part 8: Generating Projects
- LinkML Schemas
  - Models
  - Schema Element Metadata
  - Inheritance
  - Slots
  - URIs and Mappings
  - Generators
  - Inlining objects
  - Adding constraints and rules
  - Imports
  - Experimental features
- Working with Data
  - Working with Data
  - Data Validation
  - Working with RDF and LinkML
  - CSVs and Tabular Data
  - Python
- Generators
  - JSON Schema
  - Markdown
  - Python
  - Pydantic
  - Java
  - SQL DDL
  - JSON-LD Contexts
  - SPARQL
  - ShEx
  - Shacl
  - TerminusDB
  - Owl
  - Excel Spreadsheet
  - Project Generator
- Examples of use
  - Introductory Example
  - Example Models
  - LinkML Registry
- The LinkML Ecosystem
  - Tools that build off LinkML
- LinkML specification
  - Introduction
  - LinkML Models
  - LinkML Objects
  - LinkML Metamodel
  - Induced Models
  - Structural conformance of object trees
  - constraints on models
  - Glossary of terms (Information)
- FAQ
  - FAQ: General
  - FAQ: Why LinkML
  - FAQ: Modeling
  - FAQ: Getting Help
  - FAQ: Contributing

## Metamodel Reference

The LinkML metamodel is itself described in LinkML. This model is hosted in the linkml-model repository. Each element of the model has a URI of the form `https://w3id.org/linkml/<ELEMENT>`, shortened to the CURIE `linkml:<ELEMENT>`

The key schema elements are:

- linkml:SchemaDefinition

  > - linkml:ClassDefinition

  > - linkml:SlotDefinition

  > - linkml:TypeDefinition

  > - linkml:EnumDefinition

## Developers

If you are a developer looking to either contribute to the framework, or make use of any linkml package programmatically, this section is for you

Developers guide:

- Developers guide
  - GitHub Organization
  - Jupyter Notebooks
  - Manipulating Schemas
  - Tool Implementor Guide
  - Contributing Code
- Code
  - MetaModel
  - Generators
  - Loaders and Dumpers
  - Schema Utils
  - Utils

## Indices and tables

- Index

- Module Index

- Search Page