- - - - - - - - - -
view on github
getting started
common errors
chaining commands
global options
makefile
plugins
- - - - - - - - - -
annotate
collapse
convert
diff
expand
explain
export
export-prefixes
extract
filter
materialize
measure
merge
mirror
python
query
reason
reduce
relax
remove
rename
repair
report
template
unmerge
validate-profile
verify
- - - - - - - - - -
ROBOT is licensed under the
BSD 3-Clause License.
Theme by orderedlist
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 true
or 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 --output
(or --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 /
and :
. 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 ex
for 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 foo
for http://example.com/foo/
we can now use foo:bar
as a valid element name for the same IRI http://example.com/foo/bar
.
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 --prefix
.
When matching an IRI by pattern, the pattern should contain one or more wildcard characters (*
and/or ?
) or should be a regex pattern preceded by ~
. If you wish to match a full IRI to remove or filter, use the --term
option.
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 structural
, hermit
, jfact
, and 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.
An input ontology must be specified with --input
. In the case of merge and unmerge, at least one input is required.
Some commands (extract and filter) require terms as input in addition to the ontology. Click on the commands for more details.
For all commands other than merge and unmerge, only one --input
may be specified.
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 true
.
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.
To resolve this, make sure all CURIEs use prefixes that are defined. ROBOT includes a set of default prefixes, but you can also define your own prefixes. To include a custom prefix, see prefixes.
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 ex:0000115
).
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 --term-file
):
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 rdf:Statement
with 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 .
Any pattern specified with --inputs
for merge and unmerge must be a wildcard pattern, including either *
(to match any number of characters) or ?
(to match any single character).
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.