For command-specific error messages, see the command’s doc page.
If you run into any other errors or exceptions not listed, or have any issues with the existing errors, please head over to our GitHub Issues for assistance!
Sometimes when working with very large ontologies, the JVM will run out of memory (
OutOfMemoryError). You can increase the max heap size using the Java option
-Xmx4G before running
robot, which increases the heap to 4G. Any size can be specified here, e.g.
-Xmx8G. For details on setting these options based on platform, see Java Options.
The command line option provided only accepts
false as input.
Chained commands take the output of the last command as the input of the next. Because of this,
--input should only be used with the first command in the chain. This excludes merge and unmerge, which allow multiple inputs.
One of the required files (often
--input) could not be found. This is often caused by a typo.
When specifying the
--format for converting), make sure the file has a valid extension. See convert for a current list of ontology formats.
This error occurs when ROBOT tries to convert an IRI to an XML element name for writing but encounters an illegal character. Common illegal characters include
:. This error usually occurs when creating new ontology terms with
template. See Namespaces in XML for full details on legal XML element names.
The solution is usually to add a new prefix so that the illegal character is no longer part of the element name. For example, the prefix
http://example.com/ is valid, and
http://example.com/foo/bar is a valid IRI, but
ex:foo/bar is not a valid element name. By defining a new prefix
http://example.com/foo/ we can now use
foo:bar as a valid element name for the same IRI
ROBOT was expecting an ontology file, and the file exists, but is not in a recognized format. Adding the
-vvv option will print a stack trace that shows how the underlying OWLAPI library tried to parse the ontology file. This will include details and line numbers that can help isolate the problem.
Either the ontology could not be loaded from the provided IRI, or the file at that IRI was in an unrecognized format. Adding the
-vvv option may provide helpful details.
Either the ontology could not be loaded from the provided input stream, or the input stream was in an unrecognized format. Adding the
-vvv option may provide helpful details.
Many commands involve creating IRIs from provided string representations of the CURIE or full IRI. If the provided field is not a string in valid CURIE or IRI format, the actual IRI cannot be created.
When using CURIEs, make sure the prefix is defined, or add it with
When matching an IRI by pattern, the pattern should contain one or more wildcard characters (
?) or should be a regex pattern preceded by
~. If you wish to match a full IRI to remove or filter, use the
Prefixes (added with
--prefix) should be strings in the following format:
"foo: http://foo/bar#". See Prefixes for more details on adding prefixes.
Reason, materialize, and reduce all expect
--reasoner options. All three commands support
elk. Only the reason command supports
emr. Click on the command for more details
There was an error creating a JSON-LD context. This could be caused by a bad prefix.
There was an error parsing a JSON-LD context. Add the
-vvv option to see more details, and refer to https://json-ld.org for information about that format.
A valid command must be provided, running just
robot will not perform any action.
Some commands require certain options to be present. See the documentation for the specific command.
This error occurs when ROBOT is unable to convert the ontology into an OBO Graphs object while saving an ontology in JSON format. This may be due to problematic annotations, so you can create a subset using filter or remove containing only the necessary annotations and save that as JSON, for example (keeping only labels and definitions):
robot remove --input ont.owl \ --select annotation-properties \ --exclude-term rdfs:label \ --exclude-term IAO:0000115 \ --output ont.json
When running the convert command, if
--check is true (default behavior), the document structure rules are strictly enforced. If you are saving an ontology in OBO format from another command,
--check is always
You may run convert (or chain to convert) with the
--check false option to ignore the errors, e.g.:
robot reason --input ont.owl \ convert --check false --output ont.obo
Please note that
--check false may result in some unintended output. For example, for terms with more than one definition annotation, a definition will be chosen at random.
The ontology could not be saved to the specified IRI. The most common reasons are: the IRI is not a valid file path; ROBOT does not have write permissions; there is not enough space on the storage device.
Each command requires a set of options, although it is more common to get a
MISSING INPUT ERROR. See the command-specific documentation for more details.
If a prefix is incorrectly formatted, or if the prefix target does not point to an absolute IRI, the prefix cannot be loaded. Prefixes should be formatted as follows:
robot -p "robot: http://purl.obolibrary.org/robot/"
This error usually occurs when running
template. If you use a CURIE in one of the ROBOT template strings as a property (e.g.,
A ex:0000115) but do not define the prefix of that CURIE, ROBOT will be unable to save the ontology file.
When rendering the output, only properties are validated for QNames. OWLAPI will allow undefined prefixes to be used in subjects and objects, but the IRI will be the unexpanded version of the CURIE (i.e., the IRI will just be
This error message may appear for one of two common reasons:
A command or option (the argument) was typed incorrectly, or it not exist.
Multiple arguments have been provided to an option that only accepts one argument. For example, the
--term option for extract only accepts one argument. The following would not work:
$ robot extract --input foo.owl --term foo:0000001 foo:0000002 UNKNOWN ARG ERROR unknown command or option: foo:0000002
Instead, use this (or a
robot extract --input foo.owl --term foo:0000001 --term foo:0000002
Sometimes when loading an ontology, not all triples can be parsed. This error is thrown when the
--strict flag is included in the command. Otherwise, the unparsed triples are logged as errors and excluded from the loaded ontology.
This is often because OWL does not support RDF reification (for more details, see this post); ROBOT is a tool for working with OWL, not RDF. Usually this can be easily resolved by replacing
owl:Axiom. For example, this statement cannot be parsed by ROBOT:
_:blank rdf:type rdf:Statement .
… but this statement is OK:
_:blank rdf:type owl:Axiom .
Currently, ROBOT can only annotate subClassOf axioms.
See GitHub issue #67 for more details.
For commands that take input terms, ROBOT will check the ontology to ensure those terms exist before proceeding. If the terms do not exist, then there are no tasks to complete so an error message is returned.
If at least one term exists in the ontology, the task can still proceed, but the results may not be as expected. If you run into problems, run these types of commands with the
--verbose flag, as warnings will be issued when the ontology does not contain a term.
Occurs when an import ontology does not have a valid IRI.
This error occurs when an ontology cannot be loaded from file to a TDB dataset (using
--tdb true). Review your ontology to ensure it is valid RDF/XML or TTL syntax. Jena also supports some other formats.