The first category in our model is domain knowledge. The domain knowledge category specifies a set of concepts and a set of relations among them relevant for a given application. For instance, in the application of diagnosing car malfunctions, domain knowledge will be specified as a set of concepts capturing knowledge about individuals like cars or abstractions like malfunctions. An example of a relation from cars to persons is the ``owner of a car''.
Another category in our model is problem solving knowledge. Problems to be solved in a domain are modeled as tasks. For instance, following the previous example, the main task in the cars domain is to diagnose car malfunctions. In our approach methods model the ways to solve problems. Methods can be elementary or can be decomposed in subtasks. These new (sub)tasks can be achieved by corresponding methods in the same way. For a given task there may be multiple alternative methods (alternative ways to solve the task). For instance, a generate-and-test method is decomposed into the generate and test subtasks and there are several possible methods to achieve each subtask (see section 4). This recursive decomposition of task into subtasks by means of a method is called the task/method decomposition. A relation can be described extensionally or intensionally. An intensional description of a relation can be modeled by means of methods. For instance, the age of a given person could be unknown but it is known that will be exactly the difference in years between the current date and the person's birthday.
The last category in our model is metalevel knowledge. Metalevel (or reflective) knowledge is knowledge about domain knowledge and problem solving knowledge. More specifically, metalevel knowledge can have models about concepts, relations, tasks, and methods. These models are formed by metalevel concepts, metalevel relations, metalevel tasks, and metalevel methods. Moreover, metalevel knowledge also includes preferences to model decision making about sets of alternatives present in domain knowledge and problem solving knowledge. For instance, metalevel knowledge models criteria for preferring some methods over other methods for a task in a specific situation. An example of metalevel task is to choose a method for a given task. An example of metalevel method is one that -for a specific situation- searches possible methods for a task, selects some methods as suitable alternatives, and finally sorts them using a set of preferences.