1 <? xml v e r s i o n ="1.0" e n c o d i n g ="iso-8859-1"?>
2 <f u n c o e s>
3 <f u n c a o name = "greaterThan" a l i a s = "Maior Que">
4 <p a r a m s>
5 <param t y p e = "http://www.w3.org/2001/XMLSchema#
int" name = "Primeiro valor"/>
6 <param t y p e = "http://www.w3.org/2001/XMLSchema#
int" name = "Segundo valor"/>
7 </ p a r a m s>
8 </ f u n c a o>
9 <f u n c a o name="near" a l i a s ="Pr´oximo" >
10 <p a r a m s>
11 <param name="Primeiro objeto georreferenciado"
t y p e ="http://www.w3.org/2003/01/geo/wgs84_pos#
SpatialThing"/>
12 <param name="Segundo objeto georreferenciado"
t y p e ="http://www.w3.org/2003/01/geo/wgs84_pos#
SpatialThing"/>
13 </ p a r a m s>
14 </ f u n c a o>
15 <f u n c a o name="contains" a l i a s ="Est´a Contido" >
16 <p a r a m s>
17 <param name="Objeto Georreferenciado" t y p e ="http:
//www.w3.org/2003/01/geo/wgs84_pos# SpatialThing"/>
18 <param name="´Area Geogr´afica" t y p e ="http://www.w3
.org/2003/01/geo/wgs84_pos#SpatialThing"/>
19 </ p a r a m s>
20 </ f u n c a o>
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 56
Na Figura 4.9, ´e mostrado o widget para selec¸˜ao de elementos geogr´aficos, sendo este
componente desenvolvido utilizando a API Flash do Google Maps.
Figura 4.9: Widget para selec¸˜ao de elementos geogr´aficos.
Para adicionar um widget no CARE, ´e necess´ario criar os componentes da interface gr´afica utilizando a linguagem ActionScript e configurar o tipo de entidade que pode ser
selecionada. Como pode ser observado, esta n˜ao ´e uma tarefa b´asica de ser executada. As- sim, ´e necess´ario que o usu´ario possua experiˆencia com programac¸˜ao para execut´a-la.
Funcionamento da Ferramenta
Na Figura4.10, ´e mostrada a interface do CARE, que ´e formada por duas partes principais:
a das pr´e-condic¸˜oes e a das ac¸˜oes. Para montar uma regra, o usu´ario deve criar pelo menos
uma pr´e-condic¸˜ao e ac¸˜ao, dessa forma, quando as pr´e-condic¸˜oes forem satisfeitas, as ac¸˜oes ser˜ao executadas.
Ao solicitar para criar uma pr´e-condic¸˜ao, a tela mostrada na Figura 4.11 ´e apresentada
para o usu´ario, com as opc¸˜oes de criar uma condic¸˜ao ou selecionar uma func¸˜ao. Caso seja
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 57 F ig u ra 4 .1 0 : In te rf ac e d o CA RE .
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 58
textEntity existentes no modelo (ver Figura4.12). Em seguida, o usu´ario poder´a selecionar uma instˆancia da classe escolhida ou ir diretamente para escolha de um dos relacionamentos
listados, que tamb´em s˜ao recuperados do modelo, como apresentado na Figura4.13. Ap´os
ter definido uma instˆancia e um relacionamento, ´e necess´ario que seja selecionado o valor
para o relacionamento.
Figura 4.11: Tela do CARE para selec¸˜ao da opc¸˜ao para especificar o estado contextual.
Figura 4.12: Tela do CARE para selec¸˜ao da classe do tipo ContextEntity.
Os valores poss´ıveis para o relacionamento dependem do tipo especificado no modelo
de contexto. Por exemplo, caso o usu´ario tenha selecionado o relacionamento hasContext, ent˜ao ser´a mostrado para ele uma lista com os tipos de contextos poss´ıveis para o dom´ınio
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 59
Figura 4.13: Tela do CARE para selec¸˜ao do relacionamento da entidade.
selecionado, no caso de User seria mostrado as classes do tipo UserContext. Logo ap´os a
selec¸˜ao do tipo de contexto, o usu´ario necessitar´a escolher uma instˆancia do tipo selecionado ou ent˜ao uma faixa de valores, dependendo do tipo selecionado anteriormente.
Suponha-se que o usu´ario deseja especificar na regra que Jos´e possui status idle. Ent˜ao, os passos necess´arios para realizar esta tarefa s˜ao:
1. Selec¸˜ao da classe User;
2. Selec¸˜ao da instˆancia Jos´e;
3. Selec¸˜ao do relacionamento hasContext;
4. Selec¸˜ao da classe Status; e
5. Selec¸˜ao do valor idle.
Para alguns valores, ´e poss´ıvel efetuar a selec¸˜ao de uma faixa. Por exemplo, para o contexto temperatura ´e poss´ıvel informar que o valor deste deve ser maior que 38◦C.
Nem sempre os valores de um relacionamento s˜ao de um tipo primitivo (string, int, float, etc), podendo ser uma classe definida no modelo. Neste caso, a interface ir´a mostrar as
instˆancias ou relacionamentos que podem ser selecionados. Dessa forma, a interac¸˜ao conti- nuar´a at´e que o usu´ario selecione um valor.
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 60 Outras funcionalidades para o CARE
O CARE foi criado inicialmente para a especificac¸˜ao de regras contextuais pelos usu´ario
finais, informando que ac¸˜oes deveriam ser executadas quando um determinado estado con- textual for satisfeito. Por´em, durante os estudos de casos foi percebido que esta ferramenta
pode ser utilizada tamb´em para servir como um descritor de sensores l´ogicos e controle de acesso.
Conforme dito no Cap´ıtulo 2, os sensores l´ogicos fornecem informac¸˜oes contextuais da
uni˜ao de dois ou mais sensores ou da junc¸˜ao de sensores com outras informac¸˜oes do perfil
do usu´ario. Os sensores desse tipo podem ser descritos atrav´es de regras, por exemplo, uma regra pode indicar que se o usu´ario durante o hor´ario comercial estiver no local de trabalho,
ent˜ao ele estar´a com o status ocupado. Por outro lado, a ferramenta CARE permite que o usu´ario descreva nas condic¸˜oes de uma regra a uni˜ao de contextos, sendo necess´ario somente
que no lado das ac¸˜oes seja poss´ıvel determinar o valor de um determinado contexto.
J´a para utilizar o CARE para controle de acesso, algumas func¸˜oes necessitam ser imple-
mentadas no VadeMecum para permitir que um usu´ario conceda permiss˜oes de acesso ao seu contexto para outro usu´ario.
4.3.4
CARE Emulator
Para a validac¸˜ao das regras criadas pelo usu´ario final foi criado um emulador do Sistema VadeMecum, chamado de CARE Emulator. Este permite que todos os estados contextuais
contidos no modelo de contexto sejam simulados. Outro aspecto importante ´e que novos contextos adicionados no modelo s˜ao identificados em tempo de execuc¸˜ao, da mesma forma
que o CARE.
As regras criadas pelo CARE s˜ao adicionadas no emulador e o usu´ario insere um valor
para os contextos desejados, a partir do momento que as pr´e-condic¸˜oes das regras sejam satisfeitas, as ac¸˜oes s˜ao simuladas.
Na Figura 4.14, mostra-se a arquitetura do CARE Emulator, que possui a mesma base
do VadeMecum, para realizar o monitoramento do contexto, entretanto a base de fatos ´e
armazenada na sess˜ao (ver Figura4.5).
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 61
sendo os provedores de contexto – respons´aveis pela atualizac¸˜ao das informac¸˜oes contextu- ais no servidor – simulados pelos valores de contexto informados na interface pelo usu´ario.
O carregamento de regras contextuais no emulador acontece da mesma forma que no ser- vidor de contexto, atrav´es do protocolo HTTP e utilizando a linguagem SPARQL Update,
adicionando instˆancias da classe vade:Rule na base de fatos. Para facilitar a utilizac¸˜ao do emulador, sem a participac¸˜ao do CARE, ´e poss´ıvel entrar com regras na pr´opria interface.
Para emular as ac¸˜oes executadas no dispositivo m´ovel, estas s˜ao capturadas por um “tratador de ac¸˜oes” (Action Handler) e mostradas para o usu´ario.
Figura 4.14: Arquitetura do CARE Emulator.
Funcionamento do Emulador
Na Figura 4.15, mostra-se a interface do CARE Simulator, onde na parte central ´e seleci-
onado o contexto de localizac¸˜ao das instˆancias selecionadas na parte inferior esquerda. J´a
na parte direita s˜ao selecionados os valores dos outros tipos de contexto, sendo tratados de maneira especial somente a localizac¸˜ao e o tempo, que pode ser selecionado em uma janela
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 62
que ´e aberta, quando este for selecionado.
As ac¸˜oes no CARE Emulator s˜ao executadas na parte esquerda da interface, quando est˜ao
executam algum comando no dispositivo m´ovel dos usu´arios do Sistema VadeMecum. Para o usu´ario acompanhar o estado contextual de todos os usu´arios no sistema que est˜ao
sendo simulados, existe uma ´arvore de estados contextuais no lado direito na parte de baixo da interface.
Para a selec¸˜ao do estado contextual, o usu´ario segue os mesmos passos do CARE, se- leciona a classe do tipo ContextEntity, em seguida ser´a mostrado os subtipos de Context
permitidos pelo dom´ınio de hasContext selecionado e em seguida ´e selecionado o valor do contexto. O usu´ario pode simular quantos contextos desejar, sendo o estado contextual atu-
alizado na ´arvore simultaneamente, al´em de ser monitorado, para verificar se alguma regra foi satisfeita.
Para executar uma regra no CARE Emulator, existem duas formas: a primeira ´e quando o usu´ario terminar de criar uma regra no CARE e clica num bot˜ao para validar a regras no
emulador; a segunda opc¸˜ao ´e adicionar a regra manualmente na parte central inferior da interface, no campo destinado para esse fim.
4.3.5
Quest˜oes de Implementac¸˜ao
A interface com o usu´ario no CARE foi feita utilizando Adobe Flex, que ´e uma tecnologia que suporta o desenvolvimento de aplicac¸˜oes do tipo RIA (Rich Internet Application) para
a plataforma Adobe Flash. J´a para o servidor, foi utilizado a plataforma Java, Enterprise
Edition (JEE), sendo utilizado o BlazeDS 1 para realizar o mapeamento de objetos de uma
plataforma para a outra.
Para a leitura do modelo de contexto do VadeMecum, foi utilizado o framework Jena.
Houve a tentativa de realizar a interpretac¸˜ao do modelo de contexto utilizando a lingua- gem SPARQL via o protocolo de comunicac¸˜ao HTTP diretamente no servidor de contexto
do VadeMecum, entretanto, houve alguns problemas com relac¸˜ao `as restric¸˜oes utilizadas no modelo para restringir o conjunto imagem dos relacionamentos, al´em da dificuldade na
interpretac¸˜ao de objetos compostos por uma uni˜ao de duas ou mais classe. Consequente- mente, a adoc¸˜ao da leitura utilizando a mesma tecnologia do servidor de contexto – o fra-
4.3 Aux´ılio na criac¸˜ao de regras pelos usu´arios finais 63 F ig u ra 4 .1 5 : In te rf ac e d o CA RE E m u la to r.
4.4 Considerac¸˜oes finais 64
mework Jena –, foi uma decis˜ao tomada para facilitar o desenvolvimento do prot´otipo para validac¸˜ao de conceito proposto nesta dissertac¸˜ao.
No CARE Emulator, est´a dispon´ıvel a apresentac¸˜ao de trˆes ac¸˜oes: showMultimedia, que recebe como parˆametro o usu´ario que receber´a a ac¸˜ao e um arquivo multim´ıdia; showOnMap,
que recebe como parˆametro o usu´ario que receber´a a ac¸˜ao e um objeto que ser´a mostrado no mapa sua localizac¸˜ao; e sendMail, que recebe um enderec¸o de e-mail e uma mensagem para
enviar ao destinat´ario.
4.4
Considerac¸˜oes finais
O servidor de contexto do VadeMecum foi criado com o objetivo de realizar o tratamento das
informac¸˜oes contextuais e disponibilizar estas atrav´es de uma comunicac¸˜ao padr˜ao. Outros trabalhos na literatura tiveram a mesma proposta [6][7] [8][48], por´em esta soluc¸˜ao destaca- se pelo modelo de contexto baseado em ontologias, a comunicac¸˜ao via HTTP para consultas com SPARQL e atualizac¸˜oes com SPARQL Update e a facilidade de se adicionar novos tipos
de contexto, devido a um modelo de contexto extens´ıvel e um servidor de contexto que se adapta `as mudanc¸as no modelo.
Neste cap´ıtulo, foi apresentado tamb´em a ferramenta CARE, que ´e um editor de regras contextuais para usu´arios finais, possuindo como principal objetivo o aux´ılio na criac¸˜ao de
regras contextuais para o VadeMecum pelos usu´arios finais. Al´em disso, foi descrito o CARE Emulator, que auxilia na validac¸˜ao das regras pelos usu´arios atrav´es da simulac¸˜ao de estados
contextuais e a visualizac¸˜ao das ac¸˜oes que ocorrem nos dispositivos m´oveis.
Algumas ferramentas foram propostas na literatura com o intuito de auxiliar o usu´ario
final na criac¸˜ao de aplicac¸˜oes cientes de contexto. Essas ferramentas podem ser divididas em dois grupos principais, o que explora aplicac¸˜oes cientes de contexto para casas inteligentes
(smart homes), como o iCAP [11], a CAPpella [64] e o RuleCaster [65], e o que enderec¸a
tais aplicac¸˜oes para dispositivos m´oveis, como o CAIPS [66], o MScape [42] e o StreamSpin [13].
Nenhuma das ferramentas analisadas, por´em, possui um modelo de contexto baseado
em ontologias, al´em de n˜ao permitirem a extensibilidade do modelo. Entretanto, estas ca- racter´ısticas s˜ao importantes devido `a grande quantidade de informac¸˜oes contextuais dis-
4.4 Considerac¸˜oes finais 65
pon´ıveis que podem ser utilizadas nas aplicac¸˜oes e n˜ao foram previstas, al´em de possibilitar a inferˆencia de informac¸˜oes contextuais n˜ao expl´ıcitas na base de conhecimento.
Cap´ıtulo 5
Estudo de Caso
Neste cap´ıtulo, ser˜ao apresentadas algumas situac¸˜oes de uso da infraestrutura apresentada
nesta dissertac¸˜ao que foram realizadas para verificac¸˜ao do sistema proposto. As situac¸˜oes descritas ser˜ao:
1. Outdoor Virtual: Uma aplicac¸˜ao ciente de contexto que mostra propagandas mul-
tim´ıdia no dispositivo do usu´ario de acordo com seu contexto; e
2. Multimedia Service: Uma aplicac¸˜ao m´ovel para a captura de aquivos multim´ıdia com o contexto associado para posterior armazenamento e recuperac¸˜ao destes a partir de
regras contextuais.
Para a criac¸˜ao de aplicac¸˜oes cientes de contexto utilizando a infraestrutura apresentada
neste trabalho, foi desenvolvida uma aplicac¸˜ao cliente gen´erica para dispositivos m´oveis. A aplicac¸˜ao foi desenvolvida para a Plataforma Java Micro Edition (Java ME), sendo utilizada
a configurac¸˜ao de dispositivo CLDC-1.1 (Connected Limited Device Configuration) e perfil MIDP 2.0 (Mobile Information Device Profile). Para a criac¸˜ao dos provedores de contexto
no dispositivo m´ovel foi utilizada a API descrita na sec¸˜ao4.2.2.
Na Figura 5.1, apresenta-se o diagrama de classes da implementac¸˜ao do provedor de
contexto da localizac¸˜ao do usu´ario no dispositivo m´ovel, que captura os dados brutos pro- vindos do GPS do dispositivo e os transforma em contexto para, em seguida, enviar para
o servidor de contexto do VadeMecum atrav´es do m´etodo updateContext da classe Locati-
onContextProvider. Neste provedor, foi utilizada a especificac¸˜ao JSR 179, que trata sobre
o acesso `as informac¸˜oes sobre a localizac¸˜ao geogr´afica em dispositivos m´oveis, sendo esta
5.1 Outdoor Virtual 67
especificac¸˜ao ´e implementada na maioria dos smartphones dispon´ıveis no mercado que pos- suem GPS acoplado ou que utilizam outra forma para prover essa informac¸˜ao, como por
exemplo, a triangulac¸˜ao das antenas de celulares.
Figura 5.1: Diagrama de classes do provedor do contexto de localizac¸˜ao.
Os nomes dos provedores que devem ser inicializados juntamente com a aplicac¸˜ao s˜ao
adicionados no arquivo descritor de aplicac¸˜oes no dispositivo m´ovel, chamada de JAD (Java Application Descriptor). Quando o MIDlet do cliente VadeMecum ´e inicializado, s˜ao instan-
ciadas todos os provedores de contexto contidos no descritor JAD do aplicativo atrav´es do processo de reflex˜ao [67], ou seja, uma instˆancia da classe ´e criada a partir do nome desta.
No restante desta sec¸˜ao, ser˜ao descritas as aplicac¸˜oes criadas para os estudos de caso citados no in´ıcio desta sec¸˜ao.
5.1
Outdoor Virtual
Nesta aplicac¸˜ao, o usu´ario deseja que sejam exibidas propagandas multim´ıdia para poss´ıveis clientes de acordo com o contexto deles. Por exemplo, um poss´ıvel cliente est´a de f´erias e
desocupado em Campina Grande durante o mˆes de junho e gosta de forr´o, ent˜ao os orga- nizadores da festa de S˜ao Jo˜ao no munic´ıpio criam uma regra para que quando este estado
5.1 Outdoor Virtual 68
contextual acontec¸a, seja exibido um v´ıdeo sobre o evento.
Para o funcionamento deste estudo de caso s˜ao utilizados os seguintes provedores de
contexto:
• Provedor do contexto de localizac¸˜ao geogr´afica, que ´e obtida a partir de um sensor
f´ısico (GPS) no dispositivo m´ovel do usu´ario;
• Provedor do status do usu´ario, que infere a partir da agenda de compromissos do
usu´ario este contexto, caracterizando um sensor l´ogico; e
• Provedor das preferˆencias do usu´ario, que ´e obtido a partir de um sensor virtual que
capta informac¸˜oes do usu´ario no perfil descrito por ele.
Para o funcionamento deste estudo de caso, o usu´ario criar´a regras utilizando a ferra- menta CARE, as quais indicar˜ao que arquivos devem ser mostrados quando determinados
estados contextuais foram alcanc¸ados. A Figura5.2apresenta a interface do CARE com as
pr´e-condic¸˜oes necess´arias para que a ac¸˜ao de mostrar um arquivo multim´ıdia seja executada.
J´a a Figura5.3 apresenta o widget do CARE para especificar ´areas geogr´aficas nas regras
contextuais.
A regra contextual criada pelo usu´ario no CARE neste estudo de caso ´e descrita no