Closed RLWOHIO closed 8 years ago
That's a side effect of ontology complexity and reasoner performance. The change creation itself is a fast operation, but the reasoning required might be nontrivial - and often this will also mean inferring the first axiom is much slower than inferring the next ones.
Good idea to provide some advancement measure, however bear in mind that the granularity of the monitoring might be quite coarse.
Hi Ignazio,
Just to follow up on my last comment. Am I conceptually confusing reasoning (reasoner.precomputeInferences()) with generating inferred axioms/ontology in OWLAPI? Are these two procedures entirely independent of each other? I thought, for example, a newly inferred subclass relationship after classification would be considered as an inferred axiom. Performance-wise, reasoning part is OK but generating inferred axioms is slow, even for Elk.
Any suggestions/alternative so I can speed up fillOntology() method? Can I accomplish this by reasoning (eg by using Konclude reasoner) and merge the output with the original ontology?
Thanks again,
Ronglin
On Thu, Jul 7, 2016 at 12:49 PM, Ignazio Palmisano <notifications@github.com
wrote:
That's a side effect of ontology complexity and reasoner performance. The change creation itself is a fast operation, but the reasoning required might be nontrivial - and often this will also mean inferring the first axiom is much slower than inferring the next ones.
Good idea to provide some advancement measure, however bear in mind that the granularity of the monitoring might be quite coarse.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/owlcs/owlapi/issues/540#issuecomment-231138630, or mute the thread https://github.com/notifications/unsubscribe/AOJjxQ2n8l0wdmeCNqwJoGBjbH4Vnpyxks5qTS4kgaJpZM4JHAmg .
Rong-Lin Wang
Reasoning is often done lazily, so the axiom generation process will trigger activity in the reasoner. You can verify if this is the case using the structural reasoner, which does not do inference - the difference between fillOntology in the two cases will give you a coarse estimate of how much of the time is spent on reasoning.
Hi Ignazio,
Will definitely try your suggestion of the structural reasoner.
I am studying the source code of fillOntology() method [axiomGenerator.createAxioms(df, reasoner), ontology.getOWLOntologyManager().applyChanges(changes)]. How does its output ontology, containing both the original and inferred axioms, differ from that of simply merging the results of classification with the original ontology? If I understand your remarks correctly, fillOntology() method will yield more inferred axioms?
Thanks much,
Ronglin
On Tue, Jul 12, 2016 at 12:53 PM, Ignazio Palmisano < notifications@github.com> wrote:
Reasoning is often done lazily, so the axiom generation process will trigger activity in the reasoner. You can verify if this is the case using the structural reasoner, which does not do inference - the difference between fillOntology in the two cases will give you a coarse estimate of how much of the time is spent on reasoning.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/owlcs/owlapi/issues/540#issuecomment-232107941, or mute the thread https://github.com/notifications/unsubscribe/AOJjxfqlCIkozCGu_vZMoBF3Ru9BMKnYks5qU8akgaJpZM4JHAmg .
Rong-Lin Wang
This part does not differ from merging results. The work is done in axiomGenerator.createAxioms(df, reasoner) - that's where any reasoner calls are made.
When you create an InferredOntologyGenerator you pass it an instance of OWLReasoner. This reasoner is what is used when finding the inferred axioms.
Incidentally, IOG may not get the best performance from Konclude, since it may result in a lot of expensive XML frobbing.
You might want to try a few different reasoners and see how they perform for you.
(It might be possible to optimize IOG by running some queries in batches, though this can be counter-productive since this will usually involve adding a bunch of temporary named equivalent classes.)
Yes, that's what I meant - but note that including classification results is only one type of axiom inference. There are different kinds of axiom generators, hence different kinds of reasoning tasks behind createAxioms()
Dear owlapi developers:
As far as I can tell, InferredOntologyGenerator.fillOntology() is the most time-consuming step in OWLAPI. Yet, there is no way for users to monitor its progress and estimate the time it takes to finish. The current screen output from this method is not informative in this regard. It would be nice in the future release of OWLAPI to include a modified fillOntology() method so its progress can be tracked.
Thanks!