The release workflow recommended by the ODK is based on GitHub releases and works as follows:
These steps are outlined in detail in the following.
Preparation:
git status should say that there are no modified files)git pull)git checkout -b release-2021-01-01)docker pull obolibrary/odkfullTo actually run the release, you:
cd bervo/src/ontology)sh run.sh make prepare_release -B. Note that for some ontologies, this process can take up to 90 minutes - especially if there are large ontologies you depend on, like PRO or CHEBI.Release files are now in ../.. - now you should commit, push and make a release on your git hosting site such as GitHub or GitLab.This will create all the specified release targets (OBO, OWL, JSON, and the variants, ont-full and ont-base) and copy them into your release directory (the top level of your repo).
bervo.obo - this reflects a useful subset of the whole ontology (everything that can be covered by OBO format). OBO format has that speaking for it: it is very easy to review!bervo-base.owl - this reflects the asserted axioms in your ontology that you have actually edited.bervo-full.owl, which may reveal interesting new inferences you did not know about. Note that the diff of this file is sometimes quite large.Once your CI checks have passed, and your reviews are completed, you can now merge the branch into your main branch (don’t forget to delete the branch afterwards - a big button will appear after the merge is finished).
bervo.obo file and check the data-version: property. The date needs to be prefixed with a v, so, for example v2020-02-06.When you are dealing with large ontologies, you need a lot of memory. When you see error messages relating to large ontologies such as CHEBI, PRO, NCBITAXON, or Uberon, you should think of memory first, see here.
Sometimes you will get cryptic error messages when using legacy tools using OBO format, such as the ontology release tool (OORT), which is also available as part of the ODK docker container. In these cases, you need to track down what axiom or annotation actually caused the breakdown. In our experience (in about 60% of the cases) the problem lies with duplicate annotations (def, comment) which are illegal in OBO. Here is an example recipe of how to deal with such a problem:
make: *** [cl.Makefile:84: oort] Error 255 you might have a OORT error.sh run.sh make IMP=false PAT=false oort -B (assuming you are already in the ontology folder in your directory)bervo-edit.owl in Protégé and find the offending term and delete all offending issue (e.g. delete ALL definition, if the problem was “multiple def tags not allowed”) and save.
*While this is not idea, as it will remove all definitions from that term, it will be added back again when the term is fixed in the ontology it was imported from and added back in.sh run.sh make IMP=false PAT=false oort -B and if it all passes, commit your changes to a branch and make a pull request as usual.