ohi helps you find, download, and manage ontologies. ohi LinkML helps you write, check, and convert LinkML schemas. It's a single native command-line tool for Linux, macOS and Windows, with libraries for Python, JavaScript/TypeScript, C/C++/Rust, and the JVM.
| What it does | ||
|---|---|---|
| ohi | Search ontologies, download their files and manage ontology projects locally | Docs · Browse |
| ohi LinkML | Validate LinkML schemas and turn them into JSON Schema, SHACL, OWL, Pydantic and more | Docs · Playground |
Note
⭐ If you like ohi, consider giving it a star – it helps others find the project!
On Linux, macOS, or Windows with Git Bash, MSYS2, Cygwin or WSL:
. <(curl -sSfL https://ohi.dev/install.sh)
ohi versionIn PowerShell:
irm https://ohi.dev/install.ps1 | iex
ohi versionRead the scripts before running them: install.sh, install.ps1. For other ways to install (mise, manual download, the JAR) and how to verify a download, see the install guide.
Find an ontology on ohi.dev and download it:
ohi search foaf
ohi get foaf/foaf@2014-01-14 --format owl-turtleOr record the ontologies your project depends on, so anyone can download the same files later:
ohi init
ohi add w3c/prov-o@2013 --format owl-turtle
ohi sync # on another machine, after cloningohi.yaml lists what you asked for, and ohi.lock.json lists the exact files and their checksums.
Commit both. See the ohi docs for the
first-ontology walkthrough,
projects and the full CLI reference.
LinkML is a YAML-based language that lets you model your data or domain once. ohi LinkML is the engine that turns it into code, ontologies, and schemas your tools already use:
ohi linkml validate model.yaml
ohi linkml to json-schema model.yaml
ohi linkml to shacl model.yaml
ohi linkml from owl ontology.ttl # turn an OWL ontology into LinkMLIt tells you exactly what is wrong with your schema, and where:
- Runs everywhere. Native binaries, the JVM, Node.js, the browser (no install – try the playground), Python, and C, C++ or Rust.
- Fast. 22.9–38.5x faster than LinkML-Python, even on very large schemas.
- Consistent. Every generator is rigorously tested against the same set of LinkML models.
Run ohi linkml --help for the full list of generators and importers, or read
the LinkML docs.
| Language | ohi LinkML | ohi |
|---|---|---|
| Python | neverblink-linkml |
ohi-sdk |
| JavaScript / TypeScript | @neverblink/linkml |
@neverblink/ohi |
| JVM (Scala, Java, Kotlin) | Maven Central, Javadoc | eu.neverblink.ohi:ohi-sdk: Maven Central, Javadoc |
| C, C++, Rust | Shared library from Releases | – |
- GitHub Action for validating and generating LinkML schemas in CI: NeverBlink-OSS/linkml-scala-action.
- Agent plugins for Claude Code, Codex and other coding agents. See the plugin guide.
See CONTRIBUTING.md for how to build the project and send changes. Contributors need to sign our Contributor License Agreement. The project follows our Code of Conduct.
Have a question or an idea? Join our Discord – we're happy to help.
ohi is licensed under the Apache License 2.0. See LICENSE for details.
ohi is developed and maintained by NeverBlink. For any inquiries, please email us.
This work has been supported by the HEDGE-IoT project grant number 101136216 funded by the European Commission as part of the Horizon Europe Framework Programme. However, views and opinions expressed are those of the authors only and do not necessarily reflect those of the European Union or the European Climate, Infrastructure and Environment Executive Agency. Neither the European Union nor the granting authority can be held responsible for them.
