A configurable rete-oo engine for reasoning with different types of imperfect information.