@startuml


package "" as settings <<Rectangle>>
{
	package "(reformulation-core)\nanswering.reformulation\n.rewriting" #FFFFEE
	{
		interface QueryRewriter <<DIE>> {
			rewrite(IQ): IQ
			setTBox(ClassifiedTBox)
		}
		
		interface ExistentialQueryRewriter
		QueryRewriter <|-- ExistentialQueryRewriter
	}

	package "(reformulation-core)\nanswering.reformulation\n.rewriting.impl" #FFFFEE
	{
		class DummyRewriter {
			ctor(IntermediateQueryFactory,\n  AtomFactory,\n  TermFactory,\n  CoreUtilsFactory)
		}
		QueryRewriter <|.. DummyRewriter
		
		class TreeWitnessRewriter {
			ctor(AtomFactory,\n  TermFactory,\n  IntermediateQueryFactory,\n  CoreUtilsFactory,\n  SubstitutionFactory)
		}
		DummyRewriter <|-- TreeWitnessRewriter
		ExistentialQueryRewriter <|.. TreeWitnessRewriter
	}
}


@enduml