Package to author schemas using spreadsheets
Project description
Schemasheets - make datamodels using spreadsheets
Create a data dictionary / schema for your data using simple spreadsheets - no coding required.
About
Schemasheets is a framework for managing your schema using spreadsheets (Google Sheets, Excel). It works by compiling down to LinkML, which can itself be compiled to a variety of formalisms, or used for different purposes like data validation
Documentation
See the Schema Sheets Manual
Quick Start
pip install schemasheets
You should then be able to run the following commands:
- sheets2linkml - Convert schemasheets to a LinkML schema
- linkml2sheets - Convert a LinkML schema to schemasheets
- sheets2project - Generate an entire set of schema files (JSON-Schema, SHACL, SQL, ...) from Schemasheets
As an example, take a look at the different tabs in the google sheet with ID 1wVoaiFg47aT9YWNeRfTZ8tYHN8s8PAuDx5i2HUcDpvQ
The personinfo tab contains the bulk of the metadata elements:
record | field | key | multiplicity | range | desc | schema.org |
---|---|---|---|---|---|---|
> class |
slot | identifier | cardinality | range | description | exact_mappings: {curie_prefix: sdo} |
> |
||||||
id | yes | 1 | string | any identifier | identifier | |
description | no | 0..1 | string | a textual description | description | |
Person | n/a | n/a | n/a | a person,living or dead | Person | |
Person | id | yes | 1 | string | identifier for a person | identifier |
Person, Organization | name | no | 1 | string | full name | name |
Person | age | no | 0..1 | decimal | age in years | |
Person | gender | no | 0..1 | decimal | age in years | |
Person | has medical history | no | 0..* | MedicalEvent | medical history | |
Event | grouping class for events | |||||
MedicalEvent | n/a | n/a | n/a | a medical encounter | ||
ForProfit | ||||||
NonProfit |
This demonstrator schema contains both record types (e.g Person, MedicalEvent) as well as fields (e.g. id, age, gender)
You can convert this like this:
sheets2linkml --gsheet-id 1wVoaiFg47aT9YWNeRfTZ8tYHN8s8PAuDx5i2HUcDpvQ personinfo types prefixes -o personinfo.yaml
This will generate a LinkML YAML file personinfo.yaml
from 3 of the tabs in the google sheet
You can also work directly with TSVs:
wget https://raw.githubusercontent.com/linkml/schemasheets/main/tests/input/personinfo.tsv
sheets2linkml personinfo.tsv -o personinfo.yaml
We recommend using COGS to synchronize your google sheets with local files using a git-like mechanism
Finding out more
- Schema Sheets Manual
- linkml/schemasheets code repo
- linkml/linkml main LinkML repo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for schemasheets-0.1.20-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 201fe8d23a11e8815189af01a991698e45b67156b3ac75008b5cc0054544e82a |
|
MD5 | ebd1a61b1941389fb5c99636c2dd8aac |
|
BLAKE2b-256 | 7b59165cba3992c94e5be573bc1c49d86f458e07f05222d0cc5c28144b253531 |