M. Endler and D. Schmidt (Eds.): Middleware 2003, LNCS 2672, pp. 143–161, 2003. © IFIP International Federation for Information Processing 2003 A Middleware for Context-Aware Agents in Ubiquitous Computing Environments * Anand Ranganathan and Roy H. Campbell Department of Computer Science University of Illinois at Urbana-Champaign, USA {ranganat,rhc}@uiuc.edu Abstract. Ubiquitous Computing advocates the construction of massively dis- tributed systems that help transform physical spaces into computationally active and intelligent environments. The design of systems and applications in these environments needs to take account of heterogeneous devices, mobile users and rapidly changing contexts. Most importantly, agents in ubiquitous and mobile environments need to be context-aware so that they can adapt themselves to dif- ferent situations. In this paper, we argue that ubiquitous computing environ- ments must provide middleware support for context-awareness. We also pro- pose a middleware that facilitates the development of context-aware agents. The middleware allows agents to acquire contextual information easily, reason about it using different logics and then adapt themselves to changing contexts. Another key issue in these environments is allowing autonomous, heterogene- ous agents to have a common semantic understanding of contextual informa- tion. Our middleware tackles this problem by using ontologies to define differ- ent types of contextual information. This middleware is part of Gaia, our infrastructure for enabling Smart Spaces. 1 Introduction Ubiquitous Computing Environments consist of a large number of autonomous agents that work together to transform physical spaces into smart and interactive environ- ments. In order for an agent to function effectively in these environments, they need to perform two kinds of tasks – they need to sense and reason about the current con- text of the environment; and they need to interact smoothly with other agents. In this paper, we propose a middleware for Ubiquitous Computing Environments that meets these two needs of agents in the environment. The role of context has recently gained great importance in the field of ubiquitous computing. “Context” is any information about the circumstances, objects, or condi- tions by which a user is surrounded that is considered relevant to the interaction be- tween the user and the ubiquitous computing environment [1]. A lot of work has been done in trying to make applications in ubiquitous computing environments context aware so that they can adapt to different situations and be more receptive to users’ needs[1][2][3][8][13]. Humans behave differently in different contexts. They are able to sense what their context is and they adapt their behavior to their current context. The way humans * This research is supported by a grant from the National Science Foundation, NSF CCR 0086094 ITR and NSF 99-72884 EQ