Contextual knowledge is best represented explicitly as such. That is, an agent should be able to reason about its context, bringing to bear knowledge that is explicitly known to be contextual in nature. An agent should be able to recognize its current context as an instance of a class of contexts it knows about. Obviously, the agent will not always have encountered or been told about a class of situations that is very similar to the current one. However, if the agent has a repertoire of contextual knowledge which contains information about both general as well as specific contexts (e.g., both ``in a harbor'' and ``in Portsmouth harbor during ebb tide''), it is likely that some contextual knowledge will be available to guide the agent in the situation. The process of recognizing the current situation is essentially one of diagnosis [\protect\citenameTurner, 1992].
An explicit representation also allows an agent to examine its contextual information to decide which piece or pieces to bring to bear in the current situation, and it is essential for knowledge acquisition, debugging the knowledge base, and any sort of meaningful machine learning. Explicit representation also promotes parsimoniously storing contextual knowledge and reducing conflicting information, since all the knowledge about a given context can be represented once as the description of that context, rather than being spread throughout a knowledge base.
A problem with this approach, of course, is a potential combinatorial explosion of contexts, one for each situation the agent is likely to encounter. As we discuss below, however, by allowing contextual information to be merged to represent a situation that is an instance of more than one kind of context, the number can be drastically reduced. For example, ``running low on power while operating under ice during an exploration mission'' is a situation that may be characterized by knowledge representing the situations ``operating on low power'', ``under ice'', and ``exploration mission''.