Working with Data

LinkML allows you to specify schemas for data in a variety of forms:

  • JSON / YAML

  • Python object models

  • SQL databases

  • Spreadsheets and tabular data

  • RDF/Linked Data

  • Property Graphs

The “native” form for LinkML can be considered JSON/YAML.

See PersonSchema/data for example data files

Conversion

The linkml-convert script can be used to convert data from one form to another, following a schema

This makes use of “loaders” and “dumpers” in the linkml-runtime

linkml-convert --help
Usage: linkml-convert [OPTIONS] INPUT

  Converts instance data to and from different LinkML Runtime serialization
  formats.

  The instance data must conform to a LinkML model, and there must be python
  dataclasses generated from that model. The converter works by first using
  a linkml-runtime loader to instantiate in-memory model objects, then
  dumpers are used to serialize. When converting to or from RDF, a JSON-lD
  context must also be passed

Options:
  -m, --module TEXT               Path to python datamodel module
  -o, --output TEXT               Path to output file
  -f, --input-format [yaml|json|rdf|csv|tsv]
                                  Input format. Inferred from input suffix if
                                  not specified

  -t, --output-format [yaml|json|rdf|csv|tsv]
                                  Output format. Inferred from output suffix
                                  if not specified

  -C, --target-class TEXT         name of class in datamodel that the root
                                  node instantiates

  -S, --index-slot TEXT           top level slot. Required for CSV
                                  dumping/loading

  -s, --schema TEXT               Path to schema specified as LinkML yaml
  --validate / --no-validate      Validate against the schema
  -c, --context TEXT              path to JSON-LD context file. Required for
                                  RDF input/output

  --help                          Show this message and exit.

Programmatic usage

See developer docs for documentation of the relevant python classes