A Python/Django web application and REST API for managing the ODM2 Controlled Vocabularies, with SKOS and community moderation features.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



A Python/Django web application and REST API for managing the ODM2 Controlled Vocabularies. This system provides the benefits of both:

  1. Community moderation features, for anyone to suggest edits to exisiting terms or propose new terms; and
  2. SKOS RESTful web services API, for automated machine-to-machine fetching and updating of vocabulary terms.

This repository contains the source code for the master controlled vocabulary registry web application for the Observations Data Model 2 (ODM2).

The production Controlled Vocabulary website for ODM2 (which uses this code) can be accessed at:


Accessing Vocabularies and Individual Terms

Each individual vocabulary can be accessed through the web user interface. For example:


Every term has a unique URL:


Each vocabulary and term can also be accessed in Simple Knowledge Organization System (SKOS) format through a RESTful API.

Vocabularies can also be exported in comma separated values (CSV) format.

Modifying the Controlled Vocabularies

This web application provides moderated submission of new vocabulary terms and edits to existing terms. You can simply click on the "New" button on a vocabulary page or the "Edit" button on the page for an individual term to submit changes.


This work was supported by National Science Foundation Grants EAR-1332257 and EAR-1224638. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.