示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}