SCOUT is a mobile application development framework, which supports the development of mobile applications that are aware of the user's context (e.g., profile, device characteristics, ..), his current (physical) environment, and the people, objects and places in it. By exploiting this knowledge on the user and his environment, such applications are able to provide personalized information and services to the user. To realize this support, SCOUT provides mobile applications with an integrated and extensive view on the user's environment, by acquiring and integrating data from different, decentralized sources. SCOUT supports different sensing technologies to become aware of the user's surrounding environment (and the physical entities in it), and is primarily based on Web technologies for communication and data acquisition, and Semantic Web technologies for integrating and enriching the knowledge present in the decentralized data sources. The SCOUT framework consists of a layered architecture: each layer (from the bottom up) is shortly explained below.
The Detection Layer is responsible for detecting identifiable physical entities in the vicinity of the user, by employing sensing technologies which are increasingly available in modern mobile devices (e.g., RFID, Bluetooth, QR code, Microsoft Tag). The framework abstracts from the actual detection techniques employed, and only requires that the detected entity is in some way able to communicate relevant information about itself (usually in the form of a URL pointing to an existing Website or data source). The Location Management Layer receives raw detection information from the Detection Layer, and conceptualizes it by creating positional relationships: when an entity is determined to be nearby, a positional relation is created; when the entity is no longer nearby, the positional relation is invalidated. Determining proximity (i.e., remoteness and nearness) is done using proximity strategies, which may differ depending on the available detection data and the specific detection technique used. The Environment Layer combines several models and services geared towards mobile context- and environment-aware application development. The Environment Model offers an integrated view on the data associated with (currently or past) nearby entities. It encompasses the User Model, which stores the user’s characteristics, needs and preferences; the Relation Model, which stores the (time-stamped) positional relationships provided by the Location Management Layer; and the data sources associated with nearby (and no longer nearby) physical entities. The Environment Layer also provides mobile application developers with some basic services that provide access to these models: pull-based data retrieval, where arbitrary data queries are issued over the different data sources using the Query Service, and push-based data retrieval, where a Notification Service monitors changes in the environment and alerts registered applications of specific changes. Applications that are built on top of SCOUT gain access to all its features, which enable mobile applications to become context- and environment-aware: access to the user's current and past environment in a push- (event-based notification) and pull-based manner (query access) manner, alongside personalization opportunities by exploiting the User Model. Several example applications have been developed: an application computing compatibility with encountered persons, a browser plugin to make existing Web sites context-aware, and several context-aware recommendation applications.