In the past decade, there has been a revolution in thought about how best to create abstractions for the construction of knowledge-based systems. As traditional rule-based approaches have proven to be difficult to maintain, developers have turned to the use (and reuse) of high-level building blocks: domain ontologies and generic problem-solving methods. Development of intelligent systems thus becomes a problem of constructing an appropriate domain ontology, selecting (or adapting) an appropriate problem solver, and creating appropriate mappings between the two components. In our laboratory, we have placed particular emphasis on the development of computer-based tools to aid in the creation of domain ontologies and in the construction of knowledge bases based on those ontologies.
Additional tools aid in the selection and application of problem solvers from online libraries and in mapping the input-output requirements of those problem solvers to relevant concepts in the domain ontology. Our techniques will be discussed in the context of reusing a contraint-satisfaction algorithm known as propose-and-revise to automate a variety of domain tasks, including the configuration of elevators, planning therapy for patients with HIV disease, and suggesting possible three-dimensional conformations of biological macromolecules.