The Ontology for Biomedical Investigations
Makefile Shell
Clone or download
jamesaoverton Merge pull request #937 from obi-ontology/rc-2018-05-23
Add new release candidate 2018-05-23
Latest commit ff6fc00 May 30, 2018
Failed to load latest commit information.

Ontology for Biomedical Investigations

Build Status


Our ontology terms come in three groups:

  1. external terms (from other ontologies): We use OntoFox for imports. Edit the corresponding src/ontology/OntoFox_inputs/ file.
  2. template terms: We use ROBOT templates to convert spreadsheets to OWL. Edit the relevant src/ontology/templates/ file:
  3. other terms: Edit src/ontology/obi-edit.owl in Protege.

See below for a full list of files, build instructions, and instructions on using Git and GitHub for OBI.



The Makefile contains scripts for building OBI. On macOS or Linux, you should just be able to run make or one of the specific tasks below. On Windows consider using some sort of Linux virtual machine such as Docker or Vagrant. Most results will be in the build/ directory. If you have trouble, contact James.

  • make all prepare for a release
  • make obi.owl build the release file; reasoning can take about 10 minutes
  • make imports update OntoFox imports
  • make modules update ROBOT templates
  • make build/obi_merged.owl merge obi-edit.owl into a single file, don't reason
  • make clean remove temporary files
  • make test merge and run SPARQL tests
  • make check check for bad line-endings (see below)
  • make fix fix bad line-endings (see below)


We use git and GitHub to develop OBI. There's a lot of good documentation on both:

Initial Set Up

Before you can start developing with OBI, you will need to do some initial setup:

  1. sign up for a GitHub account

  2. install the Git command line tool, the GitHub Desktop app, or another Git client of your choosing

  3. configure Git with your name and email

  4. clone the OBI repository

  5. if you're using macOS and Excel, set up a pre-commit hook (see below for details):

    ln -s ../../src/scripts/ .git/hooks/pre-commit

Making Changes

Changes should be made in manageable pieces, e.g. add one term or edit a few related terms. Most changes should correspond to a single issue on the tracker.

Start from a local copy of the master branch of the OBI repository. Make sure your local copy is up-to-date. Make your changes on a new branch. When you're ready, push your branch to the OBI repository and make a Pull Request (PR) on the GitHub website. Your PR is a request to merge your branch back into master. Your PR will be tested, discussed, adjusted if necessary, then merged. Then the cycle can repeat for the next change that you or another developer will make.

These are the steps with their CLI commands. When using a GUI application the steps will be the same.

  1. git fetch make sure your local copy is up-to-date
  2. git checkout master start on the master branch
  3. git checkout -b your-branch-name create a new branch named for the change you're making
  4. make your changes
  5. git status and git diff inspect your changes
  6. git add --update add all updated files to staging
  7. git commit --message "Desciption, issue #123" commit staged changes with a message; it's good to include an issue number
  8. git push --set-upstream origin your-branch-name push your commit to GitHub
  9. open in your browser and click the "Make Pull Request" button

Your Pull Request will be automatically tested. If there are problems, we will update your branch. When all tests have passed, your PR can be merged into master. Rinse and repeat!

Line endings

The easiest way to edit our src/ontology/template/ files is with Excel. Unfortunately Excel on macOS uses old line endings, and this messes up our diffs. We've adopted this solution.

If you're not using macOS or Excel, you should ignore these instructions.

Before you start using a new clone of the repository under macOS, please set up a git hook that checks for bad line endings before every commit. From the repository root, run:

ln -s ../../src/scripts/ .git/hooks/pre-commit

This will check that all files have Unix endings once files have been staged (so after git's crlf treatment). You can run it manually to check by running


which looks at staged files only, or

src/scripts/ tsv

which looks at all tsv files in the project, including uncommitted, unstaged, ignored files, etc.

To fix line endings, run

src/scripts/ path/to/file.tsv

To fix all files in the project, run


which looks at all tsv files, regardless of git status, ending correctness, etc.

If you really need to override a pre-commit check, use git's --no-verify option.