O motor de contexto é responsável por gerir todos os dados contextuais e por raciocinar sobre o contexto. Os outros componentes do sistema interagem com este, solicitando-lhe ou fornecendo-lhe informação contextual instanciada a partir de um modelo ontológico.
Como é ilustrado na Figura 5.10, fazem parte do motor de contexto os seguintes componentes:
núcleo do motor de contexto, gestor de perfil e preferências, agregador de contexto, histórico de acções e aprendizagem de perfil e preferências. Este motor interage ainda com duas bases
de dados designadas contexto persistente e histórico de acções. A primeira é responsável por guardar de forma persistente a base de conhecimento contextual, enquanto a segunda mantém o registo do histórico de acções.
Figura 5.10 – Arquitectura do motor de contexto.
Os dados contextuais são fornecidos através do componente motor de aquisição de dados
contextuais e são adicionados à base de conhecimento contextual deste sistema. Todas as
informações contextuais são mantidas numa base de conhecimento, sob a forma de triplas RDF, que são geridas pelo núcleo do motor de contexto mas acessíveis aos outros componentes do motor. A base de conhecimento contém informação sobre os domínios abrangidos pelo modelo semântico de informações contextuais (SeCoM) que inclui as ontologias Actor, Activity, Spatial, SpatialEvent, TemporalEvent, Time, Device, Relationship,
de conhecimento é constituída por dois componentes internos: a TBOX, que contém as descrições dos conceitos do domínio, e a ABOX, que contém factos sobre as terminologias.
O componente núcleo do motor de contexto fornece três funções: armazenamento de contexto, consulta de contexto e inferência de novas informações sobre o contexto. A funcionalidade de armazenamento de contexto suporta armazenamento de informação contextual de forma persistente numa base de dados ou em ficheiros. Esta funcionalidade permite guardar o contexto de forma permanente, manipular grandes volumes de dados RDF e permite reduzir o tempo de carregamento do modelo ontológico cada vez que o sistema é iniciado. A consulta de contexto permite extrair informações contextuais da base de conhecimento. Esta extracção é feita através da uma linguagem de consulta de modelos RDF capaz de obter informações baseada em conhecimento declarativo e inferências básicas.
A linguagem recomendada pelo W3C para a execução destas consultas é a linguagem SPARQL. Para proceder à consulta de contexto são executadas queries as quais, através de um mecanismo de verificação (match) de padrões de grafos, retornam os resultados que satisfazem essas condições (ex.”saber todos os eventos sobre um determinado tema a decorrer e a sua localização”). A funcionalidade de inferência permite deduzir novos factos a partir da semântica de informações de contexto baseada em ontologias. A inferência é feita através de mecanismos de raciocínio lógico que a OWL suporta e podem ser realizados vários tipos de inferência apresentados na secção 3.2.6 Alguns exemplos de deduções possíveis utilizando o modelo SeCoM são:
− através do raciocínio de classe é possível inferir que um “edifício” é um recurso do tipo “localização física”;
− “Maria” é subordinada de “Marta” e esta é subordinada de “Ana”, então através do raciocínio de propriedade é possível inferir que “Maria” é subordinada de “Ana”;
− se o “Pedro” trabalha com “Joana”, também através do raciocínio de propriedade é possível inferir que “Joana” trabalha com “Pedro”.
O componente agregador de contexto é responsável por agregar dados de várias fontes contextuais (ex. localização, serviços de notícias) e relaciona-los com uma entidade (ex. pessoa ou objecto). Sempre que o componente aquisição de dados contextuais captura novos dados ele notifica o agregador de contexto que existem novos dados contextuais para serem lidos. O agregador procede à sua leitura e relaciona-os com uma entidade, convertendo-os ao
mesmo tempo em triplas RDF e actualizando a base de conhecimento contextual. Os tipos de fontes de contexto que fornecem dados genéricos (ex. informação meteorológica na região, cotação da bolsa) são associados a uma entidade genérica que poderá também actualizar a base de conhecimento. Definiu-se ainda que o agregador de contexto poderá tratar os dados contextuais elevadamente dinâmicos de forma diferente, não procedendo à sua actualização na base de conhecimento. Isto acontece, porque se os dados forem muito dinâmicos (ex. localização de um utilizador obtida por GPS), as constantes actualizações da base de conhecimento poderão provocar uma alta carga computacional.
O componente gestor de perfil e preferências é responsável por gerir informação do perfil e preferências do utilizador de uma forma explícita. Usando o painel de administração, este componente permite ao utilizador inserir, actualizar e remover dados do seu perfil e das preferências que apenas podem ser introduzidos de forma explícita. Todas essas informações são guardadas numa base de dados de forma permanente para utilização futura. Este componente suporta também o serviço de autenticação do utilizador feito através do fornecimento das suas credenciais e tem como objectivo evitar o acesso de utilizadores estranhos ao sistema, identificar os utilizadores e saber qual o seu nível de acesso (utilizador ou administrador).
O componente histórico de acções monitoriza as acções executadas pelo componente núcleo
do motor de contexto e pelo gestor de perfil e preferências, registando essas acções na base de dados do histórico de acções. Algumas das acções que são monitorizadas são a pesquisa, a
inserção, a actualização e a remoção, de forma a ter o histórico de mudanças de informações de contexto das entidades.
O componente aprendizagem de perfil e preferências pode alterar preferências e dados de perfil através de um algoritmo de aprendizagem (ex. se um aluno pesquisa muitas vezes uma categoria de livros, essa categoria pode ser adicionada aos temas de interesse do utilizador). Este componente funciona de forma autónoma procurando acções particulares que o utilizador executou e que foram registadas na base de dados histórico de acções. Através de um mecanismo poderá alterar uma ou várias preferências do perfil do utilizador. Este mecanismo funciona com base em regras, especificadas no formato (tipo de acção, valor de threshold, recurso, propriedade e recurso e propriedade a serem alterados); para o exemplo indicado no início deste paragrafo ficaria (pesquisa, 5x, pessoa, categoria, pessoa, temInteresse). A pesquisa da acção sobre um recurso é feita na base de dados histórico de acções e se o
número de ocorrências dessa acção relativa a uma propriedade ultrapassar o valor de
threshold, então o valor da propriedade de um recurso é alterado. Uma melhor aproximação
poderá ser conseguida através da análise de utilização efectiva em campo da arquitectura e de recolha da avaliação dos utilizadores sobre essa aprendizagem. Os trabalhos (Boughanem and Tmar, 2002), (Tebri, Boughanem et al., 2005) e (Mitaim and Kosko, 1998) apresentam algumas aproximações mais avançadas para a aprendizagem de perfis e preferências que poderão ser adaptadas para este componente.
Na Figura 5.11 é ilustrado o diagrama de sequência do processo relativo à actualização do perfil de um utilizador. O cliente cria um proxy que irá invocar o serviço responsável por fornecer o serviço de actualização do perfil. O gestor de perfil e preferências é o componente que implementa esse serviço e irá ler os dados do utilizador da bases de dados contexto
persistente devolvendo os dados ao cliente. Simultaneamente, lança um evento para o histórico de acções, indicando que o utilizador fez uma consulta de determinados dados, que
será guardado na base de dados histórico de acções. Quando o utilizador proceder à actualização dos dados é executado um processo semelhante. O gestor de perfil e preferências irá fazer a actualização dos dados na respectiva base de dados de histórico de acções e notificar o histórico de acções, indicando que o utilizador realizou uma operação de actualização em determinados dados.
Figura 5.11 - Diagrama de sequência do processo actualização do perfil do utilizador.
A Figura 5.12, mostra o diagrama de sequência do processo de autenticação que acontece quando o utilizador inicializa o seu cliente. Este processo faz o controlo de acesso, a identificação do utilizador no sistema e o reconhecimento do terminal que o utilizador está a usar no momento, para posteriormente, se necessário, adaptar os conteúdos que lhe forem entregues. Neste processo é também instanciado o agregador de contexto associado ao utilizador e é feita a subscrição das fontes de contexto a esse agregador.
Cliente Utilizador
pedido para alteração do perfil
gestor de perfil e preferências
criar proxy do serviço de actualização de dados contextuais get_perfil_do_utilizador(utilizador) histórico de acções BD contexto persistente BD histórico de acções select_query_perfil(utilizador)
notificar(utilizador, op_consulta, perfil)
insert_query(utilizador, op_consulta, perfil) enviar_informação(informação_de_perfil)
retornar_informação(informação_de_perfil)
actualiza o seu perfil
actualiza_perfil(utilizador,novo_perfil)
update_perfil(utilizador,novo_perfil) notificar(utilizador, op_actualização, perfil
Figura 5.12 – Diagrama de sequência do processo de autenticação.