ontodev / robot

ROBOT is an OBO Tool
http://robot.obolibrary.org
BSD 3-Clause "New" or "Revised" License
259 stars 73 forks source link

Missing exception message when running `robot convert` #1055

Closed cthoyt closed 1 year ago

cthoyt commented 1 year ago

Warning This isn't actually a problem with ROBOT, but the underlying OWLAPI, and the fact that it sometimes gives back unhelpful exceptions that ROBOT can't do anything. See duplicate issue on the appropriate tracker at https://github.com/owlcs/owlapi/issues/830.

I ran

robot convert -I https://raw.githubusercontent.com/cthoyt/covid19-epidemiology-ontology/2c2c43442b7364cce38d05eca487fb67731eee94/owl/cemo.owl -o cemo.obo -vvv

and got the following error message related to null pointers. This seems to be another exception that isn't getting reported properly:

2022-09-30 13:18:07,666 DEBUG org.obolibrary.robot.ExceptionHelper - {} missing exception message.
java.lang.NullPointerException
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.translateShorthandIdToExpandedId(OWLAPIObo2Owl.java:1739)
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI_load(OWLAPIObo2Owl.java:1679)
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI(OWLAPIObo2Owl.java:1643)
    at org.obolibrary.oboformat.writer.OBOFormatWriter$OWLOntologyNameProvider.getName(OBOFormatWriter.java:992)
    at org.semanticweb.owlapi.oboformat.OBOFormatRenderer$1.getName(OBOFormatRenderer.java:74)
    at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:312)
    at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:197)
    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:1478)
    at org.obolibrary.robot.IOHelper.saveOntologyFile(IOHelper.java:1709)
    at org.obolibrary.robot.IOHelper.saveOntology(IOHelper.java:838)
    at org.obolibrary.robot.CommandLineHelper.maybeSaveOutput(CommandLineHelper.java:671)
    at org.obolibrary.robot.ConvertCommand.execute(ConvertCommand.java:141)
    at org.obolibrary.robot.CommandManager.executeCommand(CommandManager.java:248)
    at org.obolibrary.robot.CommandManager.execute(CommandManager.java:192)
    at org.obolibrary.robot.CommandManager.main(CommandManager.java:139)
    at org.obolibrary.robot.CommandLineInterface.main(CommandLineInterface.java:60)
null
java.lang.NullPointerException
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.translateShorthandIdToExpandedId(OWLAPIObo2Owl.java:1739)
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI_load(OWLAPIObo2Owl.java:1679)
    at org.obolibrary.obo2owl.OWLAPIObo2Owl.oboIdToIRI(OWLAPIObo2Owl.java:1643)
    at org.obolibrary.oboformat.writer.OBOFormatWriter$OWLOntologyNameProvider.getName(OBOFormatWriter.java:992)
    at org.semanticweb.owlapi.oboformat.OBOFormatRenderer$1.getName(OBOFormatRenderer.java:74)
    at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:312)
    at org.obolibrary.oboformat.writer.OBOFormatWriter.write(OBOFormatWriter.java:197)
    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:1478)
    at org.obolibrary.robot.IOHelper.saveOntologyFile(IOHelper.java:1709)
    at org.obolibrary.robot.IOHelper.saveOntology(IOHelper.java:838)
    at org.obolibrary.robot.CommandLineHelper.maybeSaveOutput(CommandLineHelper.java:671)
    at org.obolibrary.robot.ConvertCommand.execute(ConvertCommand.java:141)
    at org.obolibrary.robot.CommandManager.executeCommand(CommandManager.java:248)
    at org.obolibrary.robot.CommandManager.execute(CommandManager.java:192)
    at org.obolibrary.robot.CommandManager.main(CommandManager.java:139)
    at org.obolibrary.robot.CommandLineInterface.main(CommandLineInterface.java:60)
matentzn commented 1 year ago

its been reported a few times before: https://github.com/ontodev/robot/issues/1041

ROBOT cant really do anything about this, needs to be reported here: https://github.com/owlcs/owlapi/issues/

cthoyt commented 1 year ago

1041 appears to be a different message, but this one is reporting an issue from robot code org.obolibrary.robot.ExceptionHelper in https://github.com/ontodev/robot/blob/e2aaf880ba3a3a255cf5af6525175ad212676bd8/robot-command/src/main/java/org/obolibrary/robot/ExceptionHelper.java#L84. Looks like this {} is supposed to get the exception formatted in but is not

I guess this is also related:

https://github.com/owlcs/owlapi/blob/429b50ac82da2439b3509783398dfa15c58906cc/oboformat/src/main/java/org/obolibrary/obo2owl/OWLAPIObo2Owl.java#L1580-L1597

Okay now I found this actually a duplicate of https://github.com/owlcs/owlapi/issues/830

matentzn commented 1 year ago

Yeah, this null pointer exception simply does not have a message.. Sorry :/ I would really like it if we could fix these issue in OWL API..