void TBox :: answerQuery ( const std::vector<DLTree*>& Cs ) { DLHeap.removeQuery(); std::cout << "Transforming concepts..."; // create BPs for all the concepts concepts.clear(); for ( std::vector<DLTree*>::const_iterator q = Cs.begin(), q_end = Cs.end(); q != q_end; ++q ) concepts.push_back(tree2dag(*q)); std::cout << " done" << std::endl << "Filling all individuals..."; // all individuals to go thru std::vector<TIndividual*> AllInd; for ( i_iterator i = i_begin(), i_e = i_end(); i != i_e; i++ ) AllInd.push_back(*i); std::cout << " done with " << AllInd.size() << " individuals" << std::endl; size_t size = Cs.size(); std::cout << "Creating iterables..."; IV.clear(); for ( size_t j = 0; j < size; j++ ) IV.add(new Iterable<TIndividual*>(AllInd)); std::cout << " done\n"; std::cout << "Run consistency checks..."; size_t n = 0, nAns = 0; TsProcTimer timer; timer.Start(); do { if ( n++ % 100 == 0 ) { float time = timer; std::cout << n << " tries, " << nAns << " answers, " << time << " total time, " << time/n << " avg time" << std::endl; } if ( static_cast<NominalReasoner*>(nomReasoner)->checkExtraCond() ) { for ( size_t k = 0; k < size; k++ ) std::cout << IV.get(k)->getName() << " "; std::cout << "\n"; } } while ( !IV.next() ); timer.Stop(); std::cout << "Total " << n << " tries, " << nAns << " answers, " << timer << " total time, " << timer/n << " avg time" << std::endl; }
void ReasoningKernel :: Save ( SaveLoadManager& m ) { TsProcTimer t; t.Start(); m.checkStream(); SaveHeader(m); m.checkStream(); SaveOptions(m); m.checkStream(); SaveKB(m); m.checkStream(); SaveIncremental(m); m.checkStream(); t.Stop(); std::cout << "Reasoner internal state saved in " << t << " sec" << std::endl; }
void ReasoningKernel :: Load ( SaveLoadManager& m ) { TsProcTimer t; t.Start(); m.checkStream(); // releaseKB(); // we'll start a new one if necessary LoadHeader(m); m.checkStream(); LoadOptions(m); m.checkStream(); LoadKB(m); m.checkStream(); LoadIncremental(m); m.checkStream(); t.Stop(); std::cout << "Reasoner internal state loaded in " << t << " sec" << std::endl; }
void CreateAD ( TOntology* Ontology, ModuleMethod moduleMethod ) { std::cerr << "\n"; // do the atomic decomposition TsProcTimer timer; timer.Start(); TModularizer mod(moduleMethod); AtomicDecomposer* AD = new AtomicDecomposer(&mod); AD->setProgressIndicator(new CPPI()); AOStructure* AOS = AD->getAOS ( Ontology, M_BOT ); timer.Stop(); Out << "Atomic structure built in " << timer << " seconds\n"; size_t sz = sizeAD(AOS); Out << "Atomic structure (" << sz << " axioms in " << AOS->size() << " atoms; " << Ontology->size()-sz << " tautologies):\n"; for ( AOStructure::iterator p = AOS->begin(), p_end = AOS->end(); p != p_end; ++p ) printADAtom(*p); delete AD; }