ROBOT is an OBO Tool
ROBOT is a tool for working with Open Biomedical Ontologies.
R.C. Jackson, J.P. Balhoff, E. Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. ROBOT: A tool for automating ontology workflows. BMC Bioinformatics, vol. 20, July 2019.
Installation and Usage
Please see http://robot.obolibrary.org.
mvn clean package
This will create a self-contained Jar file in
Other build options:
mvn clean testruns JUnit tests with reports in
mvn clean verifyrebuilds the package and runs integration tests against it, with reports in
mvn sitegenerates Javadoc in
Alternatively, you can use Docker with the provided Dockerfile to build and run ROBOT from within a container. First build an image with
docker build --tag robot . then run ROBOT from the container with the usual command-line arguments:
docker run --rm robot --help.
The library provides a set of Operations and a set of Commands. Commands handle the command-line interface and IO tasks, while Operations focus on manipulating ontologies. Sometimes you will have the pair of an Operation and a Command, but there's no necessity for a one-to-one correspondence between them.
Commands implement the Command interface, which requires a
main(String args) method. Each command can be called via
main, but the CommandLineInterface class provides a single entry point for selecting between all the available commands. While each Command can run independently, there are shared conventions for command-line options such as
--output, etc. These shared conventions are implemented in the CommandLineHelper utility class. There is also an IOHelper class providing convenient methods for loading and saving ontologies and lists of terms. A simple Command will consist of a few CommandLineHelper calls to determine arguments, a few IOHelper calls to load or save files, and one call to the appropriate Operation.
Operations are currently implemented with static methods and no shared interface. They should not contain IO or CLI code.
The current implementation is modular but not pluggable. In particular, the CommandLineInterface class depends on a hard-coded list of Commands.
Many Operations require lists of terms. The IOHelper class defines methods for collecting lists of terms from strings and files, and returning a
Set<IRI>. Our convention is that a term list is a space-separated list of IRIs or CURIEs with optional comments. The "#" character and everything to the end of the line is ignored. Note that a "#" must start the line or be preceded by whitespace -- a "#" inside an IRI does not start a comment.
The initial version of ROBOT was developed by James A. Overton, based on requirements and designs given by Chris Mungall, Heiko Dietze and David Osumi-Sutherland. This initial version was funded by P41 grant 5P41HG002273-09 to the Gene Ontology Consortium. Current support is from NIH grant 1 R24 HG010032-01, “Services to support the OBO foundry standards” to C. Mungall and B. Peters.
The copyright for ROBOT code and documentation belongs to the respective authors. ROBOT code is distributed under a BSD3 license. Our
pom.xml files list a number of software dependencies, each with its own license.