3 releases
new 0.1.3 | Nov 17, 2024 |
---|---|
0.1.1 | Jul 1, 2024 |
0.1.0 | Jul 1, 2024 |
#102 in Template engine
92 downloads per month
Used in 2 crates
(via mdmodels-macro)
260KB
4K
SLoC
MD-Models
Welcome to Markdown Models (MD-Models), a powerful framework for research data management that prioritizes flexibility and efficiency.
With an adaptable markdown-based schema language, MD-Models automatically generates schemas and programming language representations. This markdown schema forms the foundation for object-oriented models, enabling seamless cross-format compatibility and simplifying modifications to data structures.
Check out the documentation for more information.
Example
The schema syntax uses Markdown to define data models in a clear and structured way. Each object is introduced with a header, followed by its attributes. Attributes are described with their type, a brief explanation, and optional metadata like terms. Nested or related objects are represented using array types or references to other objects.
---
prefixes:
schema: http://schema.org/
---
### Person
- **name**
- Type: string
- Description: The name of the person
- Term: schema:name
- age
- Type: integer
- Description: The age of the person
- Term: schema:age
- addresses
- Type: Address[]
- Description: The address of the person
### Address
- street
- Type: string
- Description: The street of the address
Installation
In order to install the command line tool, you can use the following command:
git clone https://github.com/JR-1991/md-models
cd md-models
cargo install --path .
Command line usage
The command line tool can be used to convert markdown files to various formats. The following command will convert a markdown file to Python code:
md-models convert -i model.md -o lib.py -l python-dataclass
This will read the input file model.md
and write the output to lib.py
using the Python dataclass template. Alternatively, you can also pass a URL as input to fetch the model remotely. For an overview of all available templates, you can use the following command:
md-models --help
Available templates
The following templates are available:
python-dataclass
: Python dataclass implementation with JSON-LD supportpython-pydantic
: PyDantic implementation with JSON-LD supportpython-pydantic-xml
: PyDantic implementation with XML supportxml-schema
: XML schema definitionjson-schema
: JSON schema definitionshacl
: SHACL shapes definitionshex
: ShEx shapes definition
Development
This project uses GitHub Actions for continuous integration. The tests can be run using the following command:
cargo test
cargo clippy
Dependencies
~14–30MB
~465K SLoC