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 while classifying the EL fragment of galen #38

Open
naditina opened this issue Aug 22, 2016 · 4 comments
Open

NullPointer while classifying the EL fragment of galen #38

naditina opened this issue Aug 22, 2016 · 4 comments

Comments

@naditina
Copy link

I am working with ELK (elk-distribution-0.4.3-owlapi-library) on the EL fragment of some version of galen. I added and subsequently removed several axioms that introduce fresh concept symbols as a shortcut for conjunctions built from subconcepts of that ontology. I get the following exception with the following stack trace:

Exception in thread "main" java.lang.NullPointerException
at org.semanticweb.elk.util.collections.ArrayHashMap.get(ArrayHashMap.java:203)
at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:105)
at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:101)
at org.semanticweb.elk.util.collections.chains.AbstractChain.find(AbstractChain.java:42)
at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom$ThisCompositionRule.removeFrom(IndexedSubClassOfAxiom.java:162)
at org.semanticweb.elk.reasoner.indexing.hierarchy.DifferentialIndex.add(DifferentialIndex.java:172)
at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom.updateOccurrenceNumbers(IndexedSubClassOfAxiom.java:85)
at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.update(MainAxiomIndexerVisitor.java:384)
at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:394)
at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:373)
at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor.indexSubClassOfAxiom(MainAxiomIndexerVisitor.java:148)
at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:166)
at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:63)
at org.semanticweb.elk.owlapi.wrapper.ElkEquivalentClassesAxiomWrap.accept(ElkEquivalentClassesAxiomWrap.java:61)
at org.semanticweb.elk.owlapi.wrapper.ElkClassAxiomWrap.accept(ElkClassAxiomWrap.java:51)
at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:103)
at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:74)
at org.semanticweb.elk.owlapi.wrapper.ElkEquivalentClassesAxiomWrap.accept(ElkEquivalentClassesAxiomWrap.java:61)
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.OwlOntologyChangeProcessorVisitor.visit(OwlOntologyChangeProcessorVisitor.java:78)
at org.semanticweb.elk.owlapi.OwlOntologyChangeProcessorVisitor.visit(OwlOntologyChangeProcessorVisitor.java:39)
at org.semanticweb.owlapi.model.AddAxiom.accept(AddAxiom.java:76)
at org.semanticweb.elk.owlapi.OwlChangesLoader.load(OwlChangesLoader.java:90)
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.reasoner.stages.AbstractReasonerState.getTaxonomy(AbstractReasonerState.java:324)
at org.semanticweb.elk.owlapi.ElkReasoner.precomputeInferences(ElkReasoner.java:942)
at simplification.ConceptMinimizer.computeConjunctions(ConceptMinimizer.java:254)

Nadeschda

@ykazakov
Copy link
Member

Hi & thanks for reporting!
Unfortunately I cannot reproduce this. I need more input.

Can you paste the log output of ELK? Are there any warning / error messages?

Also, can you try to pinpoint which exactly axiom addition triggers the error? As I can see from the stack trace, it is triggered when an equivalence axiom is being added. I need to know which one.

Ideally, could you provide a small example like the one here (with concrete ontology and class expressions) that triggers the problem in your case?

@ykazakov
Copy link
Member

ykazakov commented Aug 24, 2016

Hi Nadeschda,
we were able to reproduce your error message if we query for the empty conjunctions, i.e., add axioms like:

EquivalentClasses(:tmp ObjectIntersectionOf())

Do you by chance create such expressions?

Although it is not a valid OWL 2 expression, OWL API allows to create expressions like this (probably to be backward compatible with the previous version of OWL).
This should be related to issue #35

@naditina
Copy link
Author

Hi Yevgeny,

indeed this was the cause. Thank you for looking into it.

Nadeschda

@ykazakov
Copy link
Member

Reopening this to avoid similar problems in the future.
Should treat empty conjunction as owl:Thing, empty disjunction as owl:Nothing, etc.

@ykazakov ykazakov reopened this Aug 25, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants