Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullPointer Exception when classifying FMA #35

Open
GoogleCodeExporter opened this issue Oct 16, 2015 · 1 comment
Open

NullPointer Exception when classifying FMA #35

GoogleCodeExporter opened this issue Oct 16, 2015 · 1 comment

Comments

@GoogleCodeExporter
Copy link

What steps will reproduce the problem?
1. Attempt to classify the FMA ontology from BioPortal 
(http://data.bioontology.org/ontologies/FMA/submissions/5/download?apikey=8b5b78
25-538d-40e0-9e9e-5ab9274a9aeb)
with ELK 0.4.2. I tested both OWLAPI 4.0.2 and OWLAPI 3.5.0.

What is the expected output? What do you see instead?

Classification terminates with a NullPointerException:

java.lang.NullPointerException
    at org.semanticweb.elk.util.hashing.HashGenerator.combinedHashCode(HashGenerator.java:85)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedObjectEntry.combinedHashCode(IndexedObjectEntry.java:54)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedObjectSomeValuesFromEntry.computeHashCode(IndexedObjectSomeValuesFromEntry.java:48)
    at org.semanticweb.elk.util.collections.entryset.StrongKeyEntry.<init>(StrongKeyEntry.java:56)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedObjectEntry.<init>(IndexedObjectEntry.java:50)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedClassExpressionEntry.<init>(IndexedClassExpressionEntry.java:45)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedObjectSomeValuesFromEntry.<init>(IndexedObjectSomeValuesFromEntry.java:43)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedEntryConverter.visit(IndexedEntryConverter.java:86)
    at org.semanticweb.elk.reasoner.indexing.entries.IndexedEntryConverter.visit(IndexedEntryConverter.java:57)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedObjectSomeValuesFrom.accept(IndexedObjectSomeValuesFrom.java:86)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedObjectSomeValuesFrom.accept(IndexedObjectSomeValuesFrom.java:91)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedObjectCache$IndexedClassExpressionViewFactory.createEntry(IndexedObjectCache.java:431)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedObjectCache$IndexedClassExpressionViewFactory.createEntry(IndexedObjectCache.java:423)
    at org.semanticweb.elk.util.collections.entryset.KeyEntryHashSet.get(KeyEntryHashSet.java:132)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedObjectCache.visit(IndexedObjectCache.java:163)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$ClassOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:304)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$ClassOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:254)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexObjectConverter.visit(IndexObjectConverter.java:194)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexObjectConverter.visit(IndexObjectConverter.java:59)
    at org.semanticweb.elk.owlapi.wrapper.ElkObjectSomeValuesFromWrap.accept(ElkObjectSomeValuesFromWrap.java:60)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor.indexSubClassOfAxiom(MainAxiomIndexerVisitor.java:145)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:183)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:63)
    at org.semanticweb.elk.owlapi.wrapper.ElkSubClassOfAxiomWrap.accept(ElkSubClassOfAxiomWrap.java:58)
    at org.semanticweb.elk.owlapi.wrapper.ElkClassAxiomWrap.accept(ElkClassAxiomWrap.java:51)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:108)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:74)
    at org.semanticweb.elk.owlapi.wrapper.ElkSubClassOfAxiomWrap.accept(ElkSubClassOfAxiomWrap.java:58)
    at org.semanticweb.elk.owlapi.wrapper.ElkClassAxiomWrap.accept(ElkClassAxiomWrap.java:51)
    at org.semanticweb.elk.reasoner.indexing.hierarchy.ChangeIndexingProcessor.visit(ChangeIndexingProcessor.java:57)
    at org.semanticweb.elk.owlapi.OwlOntologyLoader.load(OwlOntologyLoader.java:129)
    at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.executeStage(AxiomLoadingStage.java:121)
    at org.semanticweb.elk.reasoner.stages.AbstractReasonerStage.execute(AbstractReasonerStage.java:165)
    at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.execute(AxiomLoadingStage.java:45)
    at org.semanticweb.elk.reasoner.stages.LoggingStageExecutor.execute(LoggingStageExecutor.java:53)
    at org.semanticweb.elk.reasoner.stages.AbstractStageExecutor.complete(AbstractStageExecutor.java:55)
    at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.complete(AbstractReasonerState.java:145)
    at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.loadAxioms(AbstractReasonerState.java:306)
    at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.isInconsistent(AbstractReasonerState.java:284)
    at org.semanticweb.elk.owlapi.ElkReasoner.isConsistent(ElkReasoner.java:854)
    at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl.getReasonerStatus(OWLReasonerManagerImpl.java:236)
    at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$1.uncaughtException(OWLReasonerManagerImpl.java:277)
    at java.lang.Thread.dispatchUncaughtException(Thread.java:1986)


What version of the product are you using? On what operating system?

ELK 0.4.2, OWLAPI 3.5.0 and OWLAPI 4.0.2, on Ubuntu GNU/Linux.

Original issue reported on code.google.com by [email protected] on 24 May 2015 at 11:40

@GoogleCodeExporter
Copy link
Author

Thank you for your detailed bug report! I can confirm that I was able to 
reproduce this problem.

Further analysis has revealed that this version of FMA is not a valid OWL 2 
ontology. Specifically, there are three axioms with the empty 
ObjectIntersectionOf:

SubClassOf(<http://purl.org/sig/ont/fma/fma256019> 
ObjectSomeValuesFrom(<http://purl.org/sig/ont/fma/attributed_part> 
ObjectIntersectionOf()))
SubClassOf(<http://purl.org/sig/ont/fma/fma242199> 
ObjectSomeValuesFrom(<http://purl.org/sig/ont/fma/attributed_part> 
ObjectIntersectionOf()))
SubClassOf(<http://purl.org/sig/ont/fma/fma63841> 
ObjectSomeValuesFrom(<http://purl.org/sig/ont/fma/attributed_constitutional_part
> ObjectIntersectionOf()))

According to the OWL 2 specification, ObjectIntersectionOf should have at least 
two class expressions as parameters:

http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Intersection_of_Class_Expres
sions

I am not really sure why OWL API accepts such ontologies. Perhaps to be 
backward compatible with OWL 1, in which such expressions are probably allowed.
You can test if your ontology is compatible with OWL 2 by, e.g., converting it 
to OWL 2 functional-style syntax and loading it again via OWL API (in general, 
OWL 2 functional-style or OWL 2 XML syntax are more stable and easier to parse 
by OWL API than OWL 2 RDF XML syntax). For this ontology the OWL API functional 
style parser would return an error.

Coincidently, this issue has been already fixed in the next development version 
of ELK (0.5.0-SNAPSHOT). If there will be some further urgent problems, I might 
consider fixing this problem in the 0.4.x branch and release a new minor 
version. For now, I would just recommend fixing this problem in the ontology 
directly, perhaps also notifying the developers of FMA.

Best regards,

Yevgeny

Original comment by [email protected] on 31 May 2015 at 9:11

  • Changed state: Accepted
  • Added labels: Priority-Low
  • Removed labels: Priority-Medium

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant