/obi

A prototype for new OBI development workflows.

Primary LanguageClojure

OBI Development Workflow Prototype

The Ontology for Biomedical Investigations (OBI) is a formal ontology focused on scientific investigations in biology and medicine. OBI is part of the Open Biological and Biomedical Ontologies (OBO) Foundry, a consortium of projects developing high-quality, interoperable ontologies for science under open licenses and a set of shared principles.

Like other OBO projects, OBI is a surprising mixture of science, philosophy, logic, and software. The software part of OBI is written in the Web Ontology Language (OWL) using Protégé and .owl files. But as Chris Mungall discusses in this post, the OWL/XML files that Protégé creates are not suited to version control. Even small edits are likely to produce large, random changes in the .owl file, making it very difficult to diff, patch, branch, and merge versions. These operations are the very heart of collaborative online software development!

This project is about rethinking the software part of OBI. Can we take full advantage of

I think we can, but we have to start from the very beginning, changing how we store the source code for OBI.

Usage

The code for this project is written in Clojure and runs on the Java Virtual Machine. You will need:

  1. Java

  2. Leiningen

  3. a copy of this repository

    git clone https://github.com/jamesaoverton/obi.git

Then run this command inside the project to get started:

lein run help

Source Code

Only a few of the files we use are written in a programming language:

  • src/obi/build.clj the instructions for building OBI and doing various tasks
  • src/obi/util.clj some utility functions that don't belong anywhere else
  • test/* testing code

The rest of the source files are written in plain-text, human-readable data formats, such as tab-separated-values (.tsv). You can edit these files in your favourite text editor or a specialized program such as Microsoft Excel. The tool will make sure that these files are always sorted in a consistent way. diff will show you exactly what you've changed, you can send clean patches and pull requests, and so you can branch and merge versions of the ontology using all the standard tools.

License

Most of the content included here is part of OBI. New content is copyright © 2014 James A. Overton and distributed under the CC-by 3.0 License, same as OBI.