Context Conceptual Modelling
Context Conceptual Modelling
Context-Aware Applications:
From Context-Models to
Services Platforms
10/05/2012
Patrícia Dockhorn Costa
[email protected]
www.inf.ufes.br/~pdcosta
Healthcare Scenario
• Mr. Janssen suffers from epilepsy
– limitations in lifestyle
– need of constant supervision
• Healthcare application
– detects upcoming seizures
– informs caregivers
– increases quality of life
Context-Aware Application
location
proximity
• Context
– the set of possibly interrelated conditions in which an entity
exists
Context Concepts
• Context
• Context Model
• Context Modelling
• Context Information
• Context-Aware Application
• Situations
• Quality of Context
Context Concepts
Challenges
• Capturing context
– aggregation
– reasoning
– inference
• Time sensitive
• Sensors are imperfect (Quality of Context)
• Sensors are distributed
• Applications are distributed (mobile)
• Application adaptation, reactivity
• Security, privacy
Objective
• Integrated solution for the development of
context-aware applications:
– Reference Architecture
– Context Handling Platform
– Context Modelling
Reference Architecture
• Context-Aware Patterns
– Event-Control-Action pattern
– Context Sources and Managers Hierarchy Pattern
– Actions Pattern
condition rule
behavior
description
generic
context
Context Handling Platform
• Generalizes functionality that can be reused by
several context-aware applications
• Gathers context information, performs context
processing
• Detects situations in a distributed fashion
• Allows delegation of application rules
• Performs adaptation on behalf of applications
Context Handling Platform
(a)
user’s user’s
context1 context2
user1 user2
application-specific application-specific
components components
ip-e1 ip-e2
focusing on infrastructure
interactions user’s
context
ip-d
(b) application-specific
components
ip-e
application1-specific components
application2-specific components
Context Modelling
location
context-aware
proximity application
temperature
end-user
user interaction
context
information
•locationValue (lat, long, alt)
•temperatureValue (Celsius)
•heartBeatValue (ECG)
medical
code
conditions context generation
«Entity» isContainedIn
SpatialEntity 1..*
1..*
hasContainment «RelationalContext»
ContainerEntity
Containment
1 1
hasSocialNetwork «RelationalContext»
Person
SocialNetwork
1..* 0..*
1 hasDeviceAvailability «RelationalContext»
DeviceAvailability
«Entity» 1
SpatialEntity isDeviceAvailableTo
Device 1..* 1..*
0..*
1 callee
Person
«RelationalContext»
TelephoneCall
models
caller
1 0..*
Context Modelling
• Abstractions to facilitate representation of
context information
• Situation modelling (aggregation, reasoning)
• Automatic code generation
• Quality of Context (QoC)
Application’s universe of discourse and state-of-
affairs
• Tourist Application
John and
Mary’s device
Mary
John has to
close
is connected to
pr
ox
a museum
im
access to a
ity
WLAN
Bluetooth
network
Context Modelling Requirements
• In order to support context-aware applications
one needs amongst others (meta)models that
define
– Context and situation types and their relationships
– The “imperfection” of context information (Quality of
context)
– Adaptation rules based on context and situations
«Entity» «Entity»
IntangibleEntity SpatialEntity
{ disjoint} { disjoint}
{ disjoint}
* { overlaping}
* + livesAt
Home Office
*
+ worksAt *
Intrinsic Context Types
«Entity»
SpatialEntity
hasHeartRate «IntrinsicContext»
HeartRate
1
hasMood «IntrinsicContext»
1
Mood
1
hasActivity «IntrinsicContext»
Person
Activity
1..* 1
hasMentalState «IntrinsicContext»
1 MentalState
1..*
hasBandwidth «IntrinsicContext»
Network
Bandwidth
1 1
Relational Context Types
«Entity» «Entity»
SpatialEntity IntangibleEntity
Device Network
*
1 1 hasNetworkAvailability «RelationalContext» isNetworkAvailableTo
*
NetworkAvailability Channel
1 *
hasChannelAvailability «RelationalContext» isChannelAvailableTo
ChannelAvailability *
1
Relational Context Types
«Entity» isContainedIn
SpatialEntity 1..*
1..*
hasContainment «RelationalContext»
ContainerEntity
Containment
1 1
hasSocialNetwork «RelationalContext»
Person
SocialNetwork
1..* 0..*
1 hasDeviceAvailability «RelationalContext»
DeviceAvailability
1
isDeviceAvailableTo
Device 1..* 1..*
Contextual Formal Relations
«datatype»
GeoLocationCoordinates
+ latitude : Real
+ longitude : Real
+ altitude : Real
+ nearness(in entity1 : GeoLocationCoordinates, in enitty2 : GeoLocationCoordinates) : Boolean
+ distance(in entity1 : GeoLocationCoordinates, in entity2 : GeoLocationCoordinates) : Real
Contextual Formal Relations
«datatype»
GeoLocationCoordinates
+ latitude : Real
+ longitude : Real
+ altitude : Real
+ nearness(in entity1 : GeoLocationCoordinates, in enitty2 : GeoLocationCoordinates) : Boolean
+ distance(in entity1 : GeoLocationCoordinates, in entity2 : GeoLocationCoordinates) : Real
hasSpatialCoordinates «IntrinsicContext»
ContainerEntity
SpatialCoordinates
* 1
+ dimension
«datatype»
SpatialDimension
+ radius : Real
+ containment(in point : GeoLocationCoordinates, in container : GeoLocationCoordinates, in dimension : SpatialDimension) : Boolean
+ containment(in entity1 : GeoLocationCoordinates, in dimension1 : SpatialDimension, in entity2 : GeoLocationCoordinates, in dimension2 : SpatialDimension) : Boolean
Context Situation Types: Situation Fever
person
Person
0..1
1
1
«IntrinsicSituation»
SituationFever
1
hasTemperature
0..1
temp «IntrinsicContext»
Temperature
1
Context Situation Types: Context Types
Person
«enumeration» «enumeration»
«IntrinsicContext»
«role» hasMsnStatus MsnStatusEnum SkypeStatusEnum
MsnStatus
MsnUser + online + online
1 1 + status : MsnStatusEnum
+ busy + offline
+ beRightBack + skypeMe
«IntrinsicContext» + away + away
«role» hasSkypeStatus SkypeStatus
SkypeUser + inCall + notAvailable
1 1 -status : SkypeStatusEnum + outToLunch + doNotDisturb
Intrinsic Situation Types: SituationAvailable
WLAN Bluetooth
«RelationalSituation»
{ Context SituationConnected inv:
*SituationConnected
not device.hasConnection.oclIsUndefined() }
* *
1
device
hasConnection *«RelationalContext»
Device
Connection
1 0..1
*
network 0..*
isConnectionOf
Network
1
Formal Relation Situation Types:
SituationWithinRange
«SituationOfSituations» «FormalRelationSituation»
SituationDuration SituationWithinRange
* 1 + range
Context Information Models
«datatype»
GeoLocationCoordinates
+ latitude : Real
+ longitude : Real
+ altitude : Real
+ nearness(in entity1 : GeoLocationCoordinates, in enitty2 : GeoLocationCoordinates) : Boolean
+ distance(in entity1 : GeoLocationCoordinates, in entity2 : GeoLocationCoordinates) : Real
conceptual model
«datatype»
GeoLocationMeasurement
«datatype» «datatype» «enumeration»
RangePrecision Freshness + entityID : String
Origin
+ geoLocation : GeoLocationCoordinates
+ minValue : Real + creationtime : Time + sensed + precision : RangePrecision
+ maxValue : Real + temporalResolution : RangePrecision + derived + freshness : Freshness
+ profiled + origin : Origin
+ probabilityOfCorrectness : Real
context information model
Context Information Models
«role» «IntrinsicContext»
hasMsnStatus
MsnUser MsnStatus
1 + status : MsnStatusEnum
1
0..1 msnUser msnStatus
0..1
0..1 skypeStatus
0..1
skypeUser
«IntrinsicContext»
0..1
«role» SkypeStatus
hasSkypeStatus
SkypeUser 1 + status : SkypeStatusEnum
1
conceptual model
«datatype»
SituationAvailableMeasurement
+ personID : String
+ msnStatus : MsnStatusEnum
+ skypeStatus : SkypeStatusEnum
+ probabilityOfCorrectness : Real
context information model + freshness : Freshness
Context Information Models
«role» «IntrinsicContext»
hasMsnStatus
MsnUser MsnStatus
1 + status : MsnStatusEnum
1
0..1 msnUser msnStatus
0..1
0..1 skypeStatus
0..1
skypeUser
«IntrinsicContext»
0..1
«role» SkypeStatus
hasSkypeStatus
SkypeUser 1 + status : SkypeStatusEnum
1
conceptual model
«datatype»
SituationAvailableMeasurement
+ personID : String
+ msnStatus : MsnStatusEnum
+ skypeStatus : SkypeStatusEnum
+ probabilityOfCorrectness : Real
context information model + freshness : Freshness
Situation Realization
• Rule-based approach
– Fits nicely the nature of situation detection
– Rules (OCL invariants) are repeatedly
applied to a collection of facts (context
information)
• Jess
– Shadow facts
– Main components: working memory and
rule-base
Situation Realization (overview)
specification realization
“shadow”
contextmodels
models context models mechanism context fact
context context models
(Java classes)
context models
(UML class (UML + OCL) templates (Jess)
(UML + OCL)
(UML + OCL)
diagram)
application
designer situation models
situation models
(UML
(UML class
+ OCL)
diagram)
situation models
context models
(Java classes)
(UML + OCL)
“shadow”
mechanism situation
context
templates
fact
models
(UML + OCL) (Jess)
Universe of discourse
Instance level
(run-time) State-of-affairs
condition 1
context sources
condition 2
rule
set
working app.
service users
memory entity
condition 3 context sources rule
J engine
context
Situation Lifecycle
Situation Detection
specification
(defrule entertrue_situation_contained
(Person (OBJECT ?person)( hasGeoLocation ? person_hasGeoLocation))
(GeoLocation (OBJECT ?locationPerson&:(eq ?locationPerson ? person_hasGeoLocation)))
(Building (OBJECT ?building)(geoLocation ?building_hasGeoLocation))
(GeoLocation (OBJECT ?locationBuilding&:(eq ?locationBuilding ?building_hasGeoLocation)))
(Building (OBJECT ?building)(spatialCoordinates ?building_hasSpatialCoordinates))
(SpatialCoordinates (OBJECT ?spatialCoord&:(eq ?spatialCoord ?building_hasSpatialCoordinates)))
(GeoLocation (OBJECT ?locationPerson) (location ?locationPerson_coordinates))
(GeoLocation (OBJECT ?locationBuilding) (location ?locationBuilding_coordinates))
(SpatialCoordinates (OBJECT ?spatialCoord) (dimension ?spatialCoord_dimension))
(test (call context_control.SpatialDimension Containment ?locationPerson_coordinates
?locationBuilding_coordinates ?spatialCoord_dimension))
(not (SituationContained (OBJECT ?st)(person ?person) (building ?building) (finaltime nil)))
=>
(bind ?SituationContained (new situation_control.SituationContained ?person ?building))
(definstance SituationContained ?SituationContained)
)
EnterFalse Rule SituationContained
(defrule enterfalse_situation_contained
(not (and (Person (OBJECT ?person)( hasGeoLocation ? person_hasGeoLocation))
(GeoLocation (OBJECT ?locationPerson&:(eq ?locationPerson ? person_hasGeoLocation)))
(Building (OBJECT ?building)(geoLocation ?building_hasGeoLocation))
(GeoLocation (OBJECT ?locationBuilding&:(eq ?locationBuilding ?building_hasGeoLocation)))
(Building (OBJECT ?building)(spatialCoordinates ?building_hasSpatialCoordinates))
(SpatialCoordinates (OBJECT ?spatialCoord&:(eq ?spatialCoord ?building_hasSpatialCoordinates)))
(GeoLocation (OBJECT ?locationPerson) (location ?locationPerson_coordinates))
(GeoLocation (OBJECT ?locationBuilding) (location ?locationBuilding_coordinates))
(SpatialCoordinates (OBJECT ?spatialCoord) (dimension ?spatialCoord_dimension))
(test (call context_control.SpatialDimension Containment ?locationPerson_coordinates
?locationBuilding_coordinates ?spatialCoord_dimension))
(SituationContained (OBJECT ?st)(person ?person) (building ?building) (finaltime nil))
=>
(call ?SituationContained deactivate)
)
Distribution
• Service-oriented approach: components
encapsulate Jess engines, and situation
information is exchange by means of the
component services
• DJess: separate engines virtually share working
memory. Rule engines running on different
nodes can apply rules on shared facts
Conclusions
• Context models help understanding context
concepts and how they relate to each other
• Context models are static
• Situations allow one to define state-of-affairs of
concern for context-aware applications
• Behaviours can be defined in terms of how the
system evolves from situation to situation!
• Situations can be used to define conditions that
trigger a rule system, as, e.g., in ECA rules
• Situations can be composed of situations
themselves
– modularization of the situation models, improving
organization and reuse of situation specifications
Conclusions (2)
• Situation realization is rule-based
– Allows attentive situation detection as opposed to
query-based solutions
• Model-driven approach
– Specification elements are systematically mapped
to realization elements
– UML as a mature technology in model-driven
developments