In any mobile contextual search solutions, context is of paramount importance in imposing two necessary characteristics of fault tolerant and highly available mobile applications: proactiveness and adaptability. If the former relates to reacting correctly to external stimuli, the latter refers to adjusting the behavior of the application upon context changes. Sensing and collecting contextual information thus becomes a cornerstone of situation-aware systems, as it is needed both internally (for adapting to environmental changes at runtime), but also externally (for offline processing and analysis).
By considering context as content, it is clear how opportunistic networking can be used to aid in context sharing. In our vision, context is modeled as a data source to be exploited and distributed towards all interested entities to be able to adapt their behaviour to ever-changing situations and environments. As such, each context entity is viewed as an opportunistic channel to which systems can join as both publishers and subscribers in order to share and distribute collected data and which use channel topics as contextual meta-information (e.g. unit of measure).
Our model does not invalidate previous well-established solutions, and easily maps onto the abstractions introduced by the Contextual Toolkit [ref]
Widgets are modeled as both publishers and subscribers of a channel. They can be considered managers or moderators of such channels, as they dictate the topic and sub-topics through meta-information. They publish sensors readings on the channel to share with other entities interested in such specific information. Our model also enhances the idea of a widget as it allows devices which were unable to collect data (e.g. a device that has no GPS hardware), to receive context disseminated by neighboring nodes.
Interpretors are simple components that subscribe to multiple channels, infer higher-level context and publish it on a resulting channel (with its specific meta-data/topic).
Aggregators, much similar to interpretors, subscribe to multiple channels, combine the received results and publish them onto a subsequent opportunistic channel with a topic encompassing those of the subscribed channels.
Services are actuators that subscribe to a given opportunistic channel and take actions based on received contextual information.
Discoverers are no longer needed in our model, as the opportunistic publish/subscribe scheme handles such responsibilities.
Furthermore, our model is oriented at the interoperability of multifarious devices by introducing a new type of component: converter. The converter subscribes to two or more channels, and upon receiving data from one subscription, converts it to the formats needed by the other channels and publishes it for interested subscribers. In lack of such a component, multiple sharing opportunities can be missed. Consider the simple example of two devices interacting in a network, both equipped with temperature sensors, but owned by individuals with different backgrounds: user A is European, and therefore uses the metric system (ºC), while user B is North-American, and, as such, uses the imperial system (ºF). If their devices were to collaborate, they would simply not know how. Moreover, given that they don’t actually subscribe to the same channels (due to different meta-data), their devices would not interact with each other. In such a case, both users would have to update their software to a version that supports both units of measure. Instead it is much easier for just one of them to update in order to fix the compatibility issues; another simple solution would be to introduce a tertiary user with the updated software. Although the problem described in the above scenario may seem superfluous, the reader should imagine the impact of such an issue in crowded environment, such as concert or a conference, where the scalability of our model is much more obvious.
Considering that channel meta-data offer support for ontologies, it is clear how the model is oriented at sharing and globalizing contextual information. This design also aims at solving the performance issues of ontologies, by allowing the partitioning and distribution of slices of large ontologies into an opportunistic network of nodes; here is where converters come into play by bridging the gap between incompatible partitions. This also aids the deployment of context-aware solutions, as ontologies are likely to change over time; only a subset of the nodes will need to be updated in order to properly interpret the changes, as the rest of the users act altruistically and spread the converted data into the opportunistic network.