All Projects → obi-ontology → obi

obi-ontology / obi

Licence: other
The Ontology for Biomedical Investigations

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to obi

pronto
A Python frontend to (Open Biomedical) Ontologies.
Stars: ✭ 202 (+312.24%)
Mutual labels:  semantic-web, owl, ontology, obo, obofoundry
evidenceontology
Evidence & Conclusion Ontology development site: Use ISSUES to request terms. See WIKI for how to request terms. See README for how to cite ECO. Visit our website for more project info.
Stars: ✭ 35 (-28.57%)
Mutual labels:  owl, ontology, obo, obofoundry
environmental-exposure-ontology
Modular environmental exposures ontology
Stars: ✭ 20 (-59.18%)
Mutual labels:  owl, ontology, obo, obofoundry
ontobio
python library for working with ontologies and ontology associations
Stars: ✭ 104 (+112.24%)
Mutual labels:  semantic-web, ontology, obo, obofoundry
cell-ontology
An ontology of cell types
Stars: ✭ 75 (+53.06%)
Mutual labels:  semantic-web, owl, ontology, obofoundry
mobi
Mobi is a decentralized, federated, and distributed graph data platform for teams and communities to publish and discover data, data models, and analytics that are instantly consumable.
Stars: ✭ 41 (-16.33%)
Mutual labels:  semantic-web, owl, ontology
cowl
A lightweight C/C++ library for working with Web Ontology Language (OWL) ontologies
Stars: ✭ 18 (-63.27%)
Mutual labels:  semantic-web, owl, ontology
semantic-python-overview
(subjective) overview of projects which are related both to python and semantic technologies (RDF, OWL, Reasoning, ...)
Stars: ✭ 406 (+728.57%)
Mutual labels:  semantic-web, owl, ontology
mondo
Mondo Disease Ontology
Stars: ✭ 156 (+218.37%)
Mutual labels:  owl, ontology, obofoundry
fastobo-py
Faultless AST for Open Biomedical Ontologies in Python.
Stars: ✭ 21 (-57.14%)
Mutual labels:  ontology, obo, obofoundry
semantic-web
Storing ontologies/vocabularies from the web. Wish anybody can translate some of them.
Stars: ✭ 114 (+132.65%)
Mutual labels:  semantic-web, owl, ontology
foodon
The core repository for the FOODON food ontology project. This holds the key classes of the ontology; larger files and the results of text-mining projects will be stored in other repos.
Stars: ✭ 137 (+179.59%)
Mutual labels:  owl, ontology, obofoundry
plant-trait-ontology
Explore the Plant Trait Ontology on the Planteome site.
Stars: ✭ 26 (-46.94%)
Mutual labels:  owl, obo, obofoundry
HPO-translations
Internationalisation of the HPO content
Stars: ✭ 19 (-61.22%)
Mutual labels:  semantic-web, ontology, obofoundry
ont-api
ONT-API (OWL-API over Apache Jena)
Stars: ✭ 20 (-59.18%)
Mutual labels:  semantic-web, owl, ontology
MAxO
Medical action ontology
Stars: ✭ 26 (-46.94%)
Mutual labels:  owl, ontology, obofoundry
knowledge-graph-change-language
Tools for working with KGCL
Stars: ✭ 14 (-71.43%)
Mutual labels:  owl, ontology, obofoundry
OLGA
an Ontology SDK
Stars: ✭ 36 (-26.53%)
Mutual labels:  semantic-web, owl, ontology
bioportal web ui
A Rails application for biological ontologies
Stars: ✭ 20 (-59.18%)
Mutual labels:  semantic-web, owl, obo
lsw2
OWL and Semantic Web toolkit for Common Lisp, used for construction and reasoning over ontologies and ontology-structured data
Stars: ✭ 22 (-55.1%)
Mutual labels:  semantic-web, owl, ontology

Ontology for Biomedical Investigations

Build Status

The Ontology for Biomedical Investigations (OBI) helps you communicate clearly about scientific investigations by defining more than 2500 terms for assays, devices, objectives, and more.

This is the developer repository for OBI. You can download the most up-to-date OBI products here and learn more about OBI through our documentation.

Editing

Our ontology terms come in three groups. Depending on what type of term you want to edit or add, you have to go through different routes:

  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.

Editing Templates in Excel

If you wish to edit a template or templates in Excel, rather than copy & pasting the template, we ask that you follow this workflow to preserve quoting. Going back and forth with Excel can cause some unintentional changes to double quotes within templates.

First, install the python requirements:

python3 -m pip install -r requirements.txt

Then, make the Excel sheet. In your local OBI git directory, run the following command to create a file called obi.xlsx:

make obi.xlsx

Next, open obi.xlsx in Excel (or whatever editor you prefer). This spreadsheet contains a tab for each OBI template (e.g., "study-design", "assays", etc.). Find the tab that corresponds to the template you need to edit, make your changes, and save the Excel spreadsheet to the same location (obi.xlsx). Finally, run the following to update the TSV versions of the templates:

make update-tsv

This will convert the tabs in obi.xlsx back to TSVs and overwrite the existing TSVs in the src/ontology/templates/ directory with your changes. Review your changes (git diff) and make your pull request.

Finding Terms

To find where a term lives, you can use src/scripts/locate.py.

Then you can run the script to find terms by ID or label by passing them as a space-separated list, for example:

src/scripts/locate.py OBI:0000070 CHMO:0000087 GO:0000785

Labels should be enclosed in double quotes:

src/scripts/locate.py "assay" "fluorescence microscopy" "chromatin"

Editing Utility Scripts

The OBI repo includes some Python scripts to help developers efficiently edit both obi-edit.owl and OBI templates. These scripts require Python 3.

The scripts also require that you first to build two databases (one from OBI edit, and one from a merged version of OBI):

make obi-dbs

Relabeling Terms

Since labels are used in templates, manually finding and replacing all usages of a term can be difficult and tedious. Instead, you can use src/scripts/relabel.py to automatically update a term's label and its usages.

You can run this by passing the term you want to update and the new label:

src/scripts/relabel.py CHMO:0000087 "microscopy with fluorescence"

You can also pass the old label as the first argument, as long as it is enclosed in double quotes:

src/scripts/relabel.py "fluorescence microscopy" "microscopy with fluorescence"

Make sure to commit all changed files to ensure that all usages are updated.

Files

Building

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 test merge and run SPARQL tests (this is run on every push to GitHub)
  • make sort sort templates, and fix quoting and line endings
  • make imports update OntoFox imports
  • make modules update ROBOT templates
  • make obi.owl build the release file; reasoning can take about 10 minutes
  • make views update ROBOT templates
  • make all prepare for a release, runs imports, modules, test, obi.owl, and views
  • make build/obi_merged.owl merge obi-edit.owl into a single file, don't reason
  • make clean remove temporary files

Development

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/check-line-endings.sh .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. Please use the OBI Term ID Reservations sheet to manage new IDs.

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. make sort sort and normalize tables, for cleaner diffs
  6. git status and git diff inspect your changes
  7. git add --update src/ add all updated files in the src/ directory to staging
  8. git commit --message "Description, issue #123" commit staged changes with a message; it's good to include an issue number
  9. git push --set-upstream origin your-branch-name push your commit to GitHub
  10. open https://github.com/obi-ontology/obi 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!

Keeping Things Tidy

The easiest way to edit our src/ontology/template/ files is with Excel. Unfortunately Excel has some idiosyncratic rules for quoting cell values, and on macOS uses old line endings. Both these things make our diffs messy and confusing.

For clean diffs, we also like to keep out templates sorted by ID. The make sort command will fix line endings and sorting by running all the templates through a Python script.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].