LPG Modeler
Design a property graph once. Generate every schema from it.
Documentation · Marketplace · Examples · Model format · Design notes
A VS Code extension and CLI for authoring Labeled Property Graph schemas as text, viewing them as ERD-like diagrams, and generating database DDL and RDF artifacts from a single model.

What it does
- Authors the model as reviewable YAML, validated by a contributed JSON Schema — so completion and hover come from the YAML tooling you already have.
- Edits it on a canvas beside the file. Every canvas action becomes a targeted text splice, applied as a workspace edit. Coordinates live in a sidecar, so moving a box produces no semantic diff.
- Models inheritance and mixins as separate tools. An abstract label hierarchy says what a thing is and carries keys and edges down to every descendant; a mixin is a bag of properties a type applies, with no supertype and no identity. Both are flattened before any generator sees the model.
- Generates nine targets from one model: LadybugDB DDL, Neo4j constraints, FalkorDB schema, Memgraph schema, SHACL shapes, and an OWL ontology — plus three standards artifacts, GQL graph types (ISO/IEC 39075), PG-Schema, and LinkML.
- Imports what you already have. A model can start from a SHACL shapes graph, an OWL ontology or LadybugDB DDL rather than from an empty file. Several files are read together, because each carries what the others cannot — and whatever could not be recovered is reported rather than guessed.
- Reports every downgrade. Anything a target cannot enforce becomes an editor diagnostic and a comment at the lossy line of the artifact. Nothing disappears quietly.
- Models lists, enums, open types and cardinality — and cardinality is genuinely enforced where it can be: LadybugDB rejects a violating write, and SHACL bounds both directions.
- Stays interoperable. The model file is self-describing, its scalar types answer to their GQL names, and the JSON Schema is 2020-12 — so a model is readable outside this tool, not only inside it.
- Runs in CI. The same validation, with no editor present, so a pull request can be gated on schema validity.
Full feature tour: https://volland.github.io/lpg-modeler/
The editor
The canvas opens beside the model file, in the manner of Markdown preview. Every box is a node type, every row a property, and every action on it a targeted edit to the YAML.

This is fleet.lpg.yaml, one of the downloadable examples
below. Asset and Vehicle are abstract — drawn with a dashed border and an abstract
badge, and emitting no table. Truck sits three levels down: assetTag arrives from
Asset, vin from Vehicle, and each inherited row names its source with ↑. Properties
that came from a mixin are marked ◇ instead, because a supertype and a bag of properties
are not the same claim about a type. STATIONED_AT is declared once on Asset and drawn
on Asset alone: repeating it on fo