-
Notifications
You must be signed in to change notification settings - Fork 79
Description
This took me a while to figure out. In a chain of commands like this:
robot --catalog catalog-v001.xml \
merge --collapse-import-closure false -i go-edit-filtered-xrefs.ofn -i imports/go_taxon_constraints.owl -i imports/reactome_xrefs_import.owl -i ../taxon_constraints/present_in_taxon.ofn -i imports/go-catalytic-activities-participants.owl \
remove --term 'IAO:0000116' --axioms annotation --signature true \
reason -r ELK -e asserted-only --exclude-duplicate-axioms true --exclude-tautologies structural \
relax \
reduce \
query --update ../sparql/insert-goterm-namespace.ru \
annotate -V http://purl.obolibrary.org/obo/go/releases/`date +%Y-%m-%d`/go.owl --annotation owl:versionInfo `date +%Y-%m-%d` -o output.owl
When the query command runs an update, it has to parse the resulting ontology again. It looks in the CommandState for a catalog that may have been used at the beginning, so that it can properly parse the ontology. However, merge does not put the catalog path into the state. Commands that expect a single ontology use updateInputOntology to get the current state and ontology; in this case if there is a catalog file the path is stored in the state.
But merge uses getInputOntologies, which returns a list of ontologies rather than an updated state.
I've been trying to decide on the best way to store the catalog path in this case, but wanted to go ahead and make the issue so it doesn't get lost. I'm only just now realizing that this command has been reloading imports off the web instead of locally partway through.
This problem may exist for other commands as well; I haven't checked.