During the past thirty years, the world of computing has evolved from large centralised
computing centres to an increasingly distributed computing environment, where computation
and communication capabilities are being embedded in artefacts of everyday life. Billions of
computational entities will interact in systems with ever changing configurations determined
by local and global context, for example, the location of the user. In such dynamic
environments, users would be overwhelmed if involved in computing-related decisions every
time the context changes. Due to the number of decisions required to sustain continuous
service, most decisions will have to be made by the computing entities themselves. Moreover,
due to the global scale of the environment and the potential risk of disconnected operations,
the computing entities may have to make these decisions autonomously, without relying on a
given fixed infrastructure. Knowledge, especially about the context of the interaction, is vital
for the accuracy of these decisions. However, keeping information on a global scale is
unfeasible for resource-constrained entities, so some degree of uncertainty must be assumed.