Skip to content

Welcome to ohi

ohi is an ontology package manager for people, applications and AI agents. It helps you find ontologies, download their files and keep track of the versions and dependencies used by your project.

Download your first ontology

An ontology defines concepts and relationships in a domain. For example, the Organization ontology describes organizations and the people who belong to them. Both are kinds of foaf:Agent, a concept it shares with FOAF.

A publication is an immutable release of an ontology on ohi.dev. It includes the ontology’s files, metadata and dependencies. Once published, its contents stay unchanged.

Several publications can share the original publisher’s version tag. This can happen when the publisher changes a source file without updating the tag, or when ohi updates a generated file. ohi adds timestamps to distinguish these publications. For example, FOAF could keep its version tag through these changes:

FOAFPublisher’s version 2014-01-14
Publication1 Oct 202609:00 UTCOriginal files
Publication2 Oct 202611:00 UTCPublisher corrects a class description
Publication3 Oct 202614:00 UTCohi updates a generated file

Referencing a specific publication ensures you receive identical files each time, even if a newer publication becomes available.

An artifact is one downloadable ontology file. Its format combines a modeling language with a file syntax.

Take “a person is a subclass of an agent.” In OWL + Turtle (owl-turtle), it looks like this:

foaf:Person a owl:Class ;
rdfs:subClassOf foaf:Agent .

The same statement in OWL + RDF/XML (owl-rdfxml):

<owl:Class rdf:about="http://xmlns.com/foaf/0.1/Person">
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent" />
</owl:Class>

The language is still OWL. Only the syntax changed. In LinkML + YAML (linkml-yaml), you’d write:

classes:
Person:
is_a: Agent

ohi.dev supports OWL in Turtle or RDF/XML, RDFS in Turtle, and LinkML or Apache Ossie in YAML. Choose an available artifact in a format your tools can read.

A dependency is another ontology that your chosen ontology builds on. DCAT, for example, describes datasets such as a city’s bus timetables. It uses Dublin Core’s title property to name them.

DCATDatasets
depends on
Dublin Core TermsTitles, creators and dates

You need both ontologies to use those definitions. ohi records the exact publication of each dependency so your project can use the same definitions again later.