- - - - - - - - - -
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
The filter
command allows you to create a new ontology from a source ontology by copying only the selected axioms. The remove
command is the opposite of filter
, allowing you to remove selected axioms. filter
accepts the same options as remove
and processes them in the same order, with just a few differences. See remove
for details on configuring the options.
Including and excluding terms is the opposite of remove
:
--exclude-term <term>
or --exclude-terms <term-file>
. These terms will never be in the output.--include-term <term>
or --include-terms <term-file>
. These terms will always be in the output.The key difference between remove
and filter
comes in the fourth processing step:
--signature
option works the same as remove
, but --trim
differs. When using filter --trim true
(the default), if all objects for the axiom are in the target set then that axiom is copied to the new ontology. When using filter --trim false
, if any object for the axiom are in the target set, then that axiom is copied.Consider an example with this small ontology:
ax1: A subClassOf B
ax2: A subClassOf R some C
ax3: D subClassOf E
Then filter --term A --term R --term C --select "self parents" --axioms all --signature true --trim true
works as follows:
--term
s: {A, R, C}
self
we get just the initial target set {A, R, C}
; for parents
we get {B, R some C}
; so the new target set is the union {A, B, R, C, R some C}
--axioms all
means that we consider all axioms--signature true
we only consider the named objects, i.e. objects that have IRIs, not anonymous objects such as R some C
. With --trim true
we are checking that all objects for the axiom is in the target set.
ax1
are {A, B}
, and all of these are in the target set, so ax1
is matched and copiedax2
are {A, R, C}
(with R some C
excluded), and all of these are in the target set, so ax2
is matched and copiedax3
are {D, E}
, and none of these are in the target set, so ax3
is not matched and is not copiedFinally --drop-axiom-annotations
option lets you to specify an annotation property to drop all axiom annotations using it. all
parameter can be used to drop all axiom annotations.
The remove
and filter
operations maintains structural integrity by default: lineage is maintained, and gaps will be filled where classes have been removed. If you wish to not preserve the hierarchy, include --preserve-structure false
.
The filter
command also includes a special --select "annotations"
selector. If this selector is used, all annotations on filtered terms will be copied, regardless of if those properties are in the set of terms or not.
The following command will only return OBI:0000070
with just a label annotation:
robot filter --input obi.owl --term OBI:0000070 --term rdfs:label
Alternatively, if you want OBI:0000070
with all annotations:
robot filter --input obi.owl --term OBI:0000070 --select annotations
Copy a class (‘organ’) and all its descendants, with all annotations:
robot filter --input uberon_module.owl \
--term UBERON:0000062 \
--select "annotations self descendants" \
--signature true \
--output results/filter_class.owl
Copy all of OBI except descendants of ‘assay’ (using remove
on ‘assay’ is preferred):
robot filter --input uberon_module.owl \
--term UBERON:0000062 \
--select annotations \
--select descendants \
--select complement \
--signature true \
--output results/remove_assay.owl
Copy a subset of classes based on an annotation property (maintains hierarchy):
robot filter --input uberon_module.owl \
--prefix "core: http://purl.obolibrary.org/obo/uberon/core#" \
--select "oboInOwl:inSubset=core:uberon_slim" \
--select annotations \
--signature true \
--output results/uberon_slim.owl
Copy a class, all axioms that a class appears in and annotations on all the classes (only UBERON:0000062
here) in the filter set:
robot filter --input uberon_module.owl \
--term UBERON:0000062 \
--select annotations \
--trim false \
--signature true \
--output results/uberon_annotated.owl
Create a “base” subset that only includes internal axioms (alternatively, use remove --axioms external
):
robot filter --input template.owl \
--base-iri http://example.com/ \
--select "annotations" \
--axioms internal \
--include-term IAO:0000117 \
--include-term IAO:0000119 \
--output results/template-base-filter.owl
Create a “base” subset in which axiom annotations involving IAO:0000117 and IAO:0000119 are removed:
robot filter --input template.owl \
--base-iri http://example.com/ \
--select "annotations" \
--axioms internal \
--drop-axiom-annotations IAO:0000117 \
--drop-axiom-annotations IAO:0000119 \
--output results/template-drop-axiom-filter.owl