What is this?
The ohi LinkML playground converts
LinkML schemas right in your
browser. Paste a schema (YAML), pick a target, and get:
- Data validation –
JSON Schema,
SHACL,
Frictionless Table Schema
- Ontologies –
OWL 2,
RDFS,
Apache Ossie
- Code –
TypeScript,
Pydantic,
GraphQL, Scala
- Schema tools – a
Mermaid ER diagram,
lint report, derived/pruned LinkML, key translations (how names appear in each target), and
Markdown documentation with a page for each class, slot, enum and type
Switch the toolbar to To LinkML to go the other way: paste an OWL 2
or RDFS ontology (Turtle) or an Apache Ossie ontology and get a LinkML schema. For these pairs, the
⇆ button next to Copy turns the output into the other
side's input. The From/To toggle itself keeps each side's input as it was.
How does it work?
ohi LinkML is written in Scala 3
and compiled to JavaScript with Scala.js,
so the whole generator runs in your browser – there is no backend. The
editors are powered by CodeMirror.
See the contributing guide
for how it is built.
Software version
- ohi LinkML
- –
- LinkML metamodel
- –
- Scala
- –
- Scala.js
- –
- Runtime
- –
Where is my data processed?
Entirely on your device. Your schema is never uploaded – all generation
happens locally in this browser tab. There is no server, no account, and no analytics.
This app makes external requests only when you load something. Loading from a
URL downloads the file from the link you paste, so that server sees the request.
Searching ohi.dev sends what
you type to ohi.dev, and picking an ontology downloads it from there. Your schema still
stays here.
Share does not upload anything either. It packs your schema, the selected target
and its options into the link itself, compressed, after the #. Browsers never
send that part of a URL to a server, so the schema only ever travels to whoever you hand the
link to. Long schemas make long links – the dialog tells you how long. (If you loaded
the schema from a URL or ohi.dev and have not edited it, you get a short link pointing
back at that address instead.)
How can I use ohi LinkML?
Beyond this playground, ohi LinkML is available as: