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
diff
,patch
, and pull requests- branching, merging, and distributed version control
- automated testing and continuous integration?
I think we can, but we have to start from the very beginning, changing how we store the source code for OBI.
The code for this project is written in Clojure and runs on the Java Virtual Machine. You will need:
-
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
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 taskssrc/obi/util.clj
some utility functions that don't belong anywhere elsetest/*
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.
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.