Closed marijane closed 6 years ago
I decided to use the -f flag to work around this issue, and now I'm seeing some of the same ROBOT errors in the Travis CI log: https://travis-ci.org/data2health/credit-ontology/jobs/425038956
@cmungall Is this related to https://github.com/ontodev/robot/issues/289
or
You can reproduce this quite simply running your example, instead of:
./seed-via-docker.sh -d po ro pato -u cmungall -t "Triffid Behavior ontology" triffo
add IAO:
./seed-via-docker.sh -d po ro pato iao -u cmungall -t "Triffid Behavior ontology" triffo
Correct, the robot ticket is a manifestation of the same error.
One approach would be to simply abandon making obo files as default in odk. Many communities don't use these. Yet I'd be loathe to do this. The bioinformatics community served by OBO makes heavy use of these. And errors in making the obo file are often manifestations of underlying structural issues in ontologies that need to be fixed
Note I get a different error for ./seed-via-docker.sh -d po ro pato iao -u cmungall -t "Triffid Behavior ontology" triffo
robot convert -i triffo.owl -f obo -o triffo.obo.tmp && mv triffo.obo.tmp triffo.obo
2018-09-06 18:28:39,516 ERROR org.obolibrary.obo2owl.OWLAPIObo2Owl - error executing obo id to IRI
com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203)
at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI(OWLAPIObo2Owl.java:1664)
at org.obolibrary.oboformat.writer.OBOFormatWriter$OWLOntologyNameProvider.getName(OBOFormatWriter.java:1182)
at org.semanticweb.owlapi.oboformat.OBOFormatRenderer$1.getName(OBOFormatRenderer.java:74)
at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:325)
at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:203)
at org.semanticweb.owlapi.oboformat.OBOFormatRenderer.render(OBOFormatRenderer.java:88)
at org.semanticweb.owlapi.oboformat.OBOFormatStorer.storeOntology(OBOFormatStorer.java:42)
at org.semanticweb.owlapi.util.AbstractOWLStorer.store(AbstractOWLStorer.java:99)
at org.semanticweb.owlapi.util.AbstractOWLStorer.storeOntology(AbstractOWLStorer.java:64)
at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.saveOntology(OWLOntologyManagerImpl.java:1302)
at org.obolibrary.robot.IOHelper.saveOntology(IOHelper.java:559)
at org.obolibrary.robot.IOHelper.saveOntology(IOHelper.java:500)
at org.obolibrary.robot.ConvertCommand.execute(ConvertCommand.java:167)
at org.obolibrary.robot.CommandManager.executeCommand(CommandManager.java:246)
at org.obolibrary.robot.CommandManager.execute(CommandManager.java:190)
at org.obolibrary.robot.CommandManager.main(CommandManager.java:139)
at org.obolibrary.robot.CommandLineInterface.main(CommandLineInterface.java:53)
Caused by: java.lang.NullPointerException
at org.obolibrary.obo2owl.OWLAPIObo2Owl.translateShorthandIdToExpandedId(OWLAPIObo2Owl.java:1766)
at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI_load(OWLAPIObo2Owl.java:1705)
at org.obolibrary.obo2owl.OWLAPIObo2Owl$1.load(OWLAPIObo2Owl.java:81)
at org.obolibrary.obo2owl.OWLAPIObo2Owl$1.load(OWLAPIObo2Owl.java:77)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
... 20 more
Use the -vvv option to show the stack trace.
Use the --help option to see usage information.
Makefile:50: recipe for target 'triffo.obo' failed
make: *** [triffo.obo] Error 1
rm imports/iao_terms_combined.txt imports/pato_terms_combined.txt imports/po_terms_combined.txt imports/ro_terms_combined.txt
ERROR RUNNING: cd src/ontology && make prepare_release
Exiting. Run with '-f' to force execution and ignore errors at ./seed-my-ontology-repo.pl line 330.
A subset of these are fixed by making the obo writing be less script use --check false
in the conversion command in the makefile
One of the side effects of using the -f flag here is that the iao_imports file was missing a bunch of annotations, which we've added back manually.
As a relative ODK novice, what would I need to do in my repo to get my ontology to build? I notice Chris mentioned above that this is related to building the OBO version, is there an option for me to turn that off?
Hey! I have this issue here as high priority, but I won't get to it before next week. Is it an option to remove IAO from the imports for now, import IAO manually into your edit file and remove it again when we have fixed this? In order to remove it, you can simply delete the IAO entry in the Makefile (IMPORT variable), or, if you start from scratch, just leave it out? Is that an option?
Possibly? I'll have to take a look because I'm not very familiar with how the ODK is structured, but this does seem like something I can figure out. Looking forward to the fix!
For now, we will go for the solution that simply avoids checking whether an ontology, for example an import, corresponds to valid OBO. In order to really tighten things up, it would be good if ROBOT would allow a flag like --check warning, instead of --check false, so we could get at least a print in the logfile that tells us that a source ontology does not confirm to the OBO format @rtauber . :) So if you check out the latest ODK, creating a new ontology with IAO, or any other import for that matter, should now work.
Note that the "side-effect" of the OBOFormat writer linting your OWL (e.g. to check cardinality of various annotation assertions) should now be largely subsumed by the awesome robot report mechanism. This is also more flexible, so unlike the OBOWriter you aren't locked in to having max cardinality for rdfs:comment.
So I have two projects created with the last release, and we've already made modifications to them. I don't want to lose that work. Is there a way to implement this fix in our repositories, or do I need to save a copy of my -edit.owl files and recreate the repository with the latest ODK?
OK, so I cloned the ODK repo and used it to create a new version of one of my ontologies with IAO imported. That worked, so I think this bug has been fixed.
Then I created and checked out a new branch in my old repo, called "latest-odk". I copied and committed the files from the newly generated repo to that branch, except for the changes in the -edit.owl and -idranges.owl files that I wanted to keep. So I think I have a branch that contains both the work I want to save and the files/structure of the latest ODK. I want to successfully build in that branch before I merge into master, and I'm hitting some problems there. Time for a new ticket.
I will close this in favour of the other now open tickets. Please re-open if necessary.
I am running ODK 1.1.4 on OS X 10.11.16 with Docker CE 18.06.0-ce-mac-70.
See the attached terminal capture for details. ODK-IAO-failure.txt
Auxiliary issue: I specified the -vvv flag on the command line. I still got truncated stack traces and the message to use the -vvv flag.