Further compounding the confusion is introduction of terms like "problem space" and "solution space." For a systems developer, the real world may be associated with the problem space, the system implementation as the solution space. In an AI context, complex decision-making processes performed by human beings in the real world are often the focus area for the systems. The human's way of characterizing the problem or decision space can be called the problem space and the solution space, the range of potential solutions that might be recommended. For a knowledge modeler coming from this context, therefore, problem and solution space may both be part of the "real world." In some communities the term "ontology" might be used to denote the basic set of concepts and relations needed to understand the semantics of the domain. (While obscure for many people, the term does have the advantage over "problem space" since much of what needs to be modeled is not about problems, but simply about the world.)
Even more subtle distinctions can be drawn. One approach to architecting knowledge-based systems is that of generic tasks, inference structures that can be applied in many real-world application areas [Chandresakaran???]. For example, a configuration assistant for complex product sets (e.g., computer networks and configurations) could be implemented as a generic task, and then instantiated for any number of different types of products. In this case, the concepts and rules needed to make the generic task work for any given application area might be termed the "domain model." Everything above that level would be considered part of the generic task structure.