O SeCoM (Bulcão Neto and Pimentel, 2005; Bulcão Neto and Pimentel, 2006) apresenta um modelo contextual semântico, que representa a semântica da informação contextual através de um conjunto de ontologias. Este modelo foi desenvolvido a partir das seguintes normas de metadados: Dublin Core, vCard e iCalendar e das ontologias SUMO, OpenCyc, FOAF,
SWEET, CC/PP e OWL-Time e oferece as seguintes características:
− modela os conceitos básicos de contexto como a identidade, localização, data, eventos, actividades e dispositivos;
− oferece uma semântica com um alto nível de expressividade e formalismo através da Lógica de Descritiva (DL – Description Logic);
− oferece o conceito de modelo modelar, em que cada tipo de informação de contexto é representada por uma ontologia particular, para facilitar a reutilização e a extensibilidade;
− reutiliza conceitos de diversas ontologias consensuais e normalizadas da Semantic
Web;
− permite a inferência de novos factos a partir de informação contextual prévia devido à sua semântica ontológica;
− utiliza normas da Semantic Web para representar os aspectos estruturais, semânticos e exibições lógicas de informações de contexto, como a RDF e a OWL.
Tal como o SOUPA este modelo é baseado em dois conjuntos de ontologias (Figura 4.10):
− ontologias de núcleo – definem os conceitos gerais através das ontologias Actor (identificação), Spatial (espaço), Spatial Event (eventos espaciais), Temporal
Event (eventos temporais), Device (dispositivos), Time (tempo), Activity
(actividades);
− ontologias de apoio Knowledge (área de conhecimento), Relationship (relações sociais), Role (regras sociais), Contact (informação de contacto), Document (documentos físicos e virtuais), Project (projectos reais).
As ontologias que pertencem ao núcleo são apresentadas em seguida e a sua descrição é retirada do trabalho (Sousa, Carrapatoso et al., 2009). Para obter informações mais detalhadas sobres estas ontologias, podem ser consultados os trabalhos (Bulcão Neto and Pimentel, 2005; Bulcão Neto and Pimentel, 2006):
− ontologia Actor – modela o perfil das entidades como pessoas, grupos e organizações que realizam acções num ambiente de computação ubíqua;
− ontologia Time – modela informação temporal em termos de instantes de tempo e intervalos de tempo, relações entre instantes de tempo e intervalos, relações entre intervalos de tempo e informação de calendário e relógio (duração de tempo, dia da semana, mês do ano, etc);
− ontologia Temporal Event – modela os eventos com extensões temporais como eventos instantâneos ou eventos que contenham intervalos de tempo. É uma extensão da ontologia Time. Por outras palavras, está habilitada a representar metodologias temporais entre eventos. Esta ontologia também representa informação sobre eventos temporais periódicos (ex. frequência de um evento);
− ontologia Space – descreve espaços virtuais ou reais interiores (ex. Sala) e exteriores (ex. Rua) e relações entre eles (ex. spatiallyContains, isSpatiallyConnectedTo), relações entre lugares, coordenadas geográficas (ex. latitude) e direcções (ex. norte) e regiões administrativas (ex. cidades);
− ontologia Spatial Event – modela os eventos com extensões espaciais chamados eventos espaciais, que são subclasses da classe SpatialThing definida na ontologia Space. Os eventos espaciais podem ser representados por duas classes disjuntas: eventos físicos, que são aqueles que ocorrem numa localização física (ex. entrada numa sala de reuniões), e eventos virtuais, que incluem aqueles que ocorrem em localizações virtuais (ex. entrada numa sala de chat). Em geral, ambos os eventos espaciais físicos e virtuais herdam todas as propriedades, relações e axiomas PhysicalLocation e VirtualLocation das classes da ontologia Space;
− ontologia Device: descreve dispositivos em termos das suas plataformas de hardware e software, relações entre componentes e aspectos de computação móvel necessários para sistemas sensíveis ao contexto. Em geral, modela informação sobre características de hardware e software como: capacidade da bateria,
componentes sem fios, resolução, sistemas operativos, navegadores Web, entre outros;
− ontologia Actividade – descreve as actividades como conjuntos de eventos espaço- temporais incluindo os actores ou dispositivos envolvidos neles. Deste modo, esta ontologia importa directamente as ontologias Actor, Spatial Event, Temporal Event e Device como é ilustrado na Figura 4.10. Sendo modeladas como eventos espaço- temporais, as actividades reutilizam os mesmos atributos e relações dos eventos espaciais e temporais. Por outras palavras, é possível inter-relacionar actividades em termos de relações descritivas e espaciais com a sua localização física/virtual (ex. “a reunião decorre na sala Da Vinci”), ou em termos de relações temporais como o instante de início ou um intervalo de tempo (ex. “a reunião começa às 9:30 e dura 1 hora”). Além disso, é também possível modelar actividades em dois tipos disjuntos: improviso e agendado. São utilizados para representar actividades que ocorrem de uma dada maneira (ex. “tomar café”), enquanto a outra representa normalmente uma actividade agendada em termos de tempo e espaço (ex. “reunião às 9:30 na sala Da Vinci”). O Código 4.2 descreve um enxerto de código RDF de uma conferência com o tema “Computer Science 2010” representada como uma actividade agendada na sala Da Vinci localizada no “Piso II” e que faz parte do IPB – Instituto Politécnico de Bragança. A conferência “Computer Science 2010” começa às 10:00 da manhã em 7 de Dezembro de 2010 e tem duas horas de duração. Os participantes desta actividade são designados através da propriedade actvy:hasParticipant. O prefixo actvy: é utilizado para representar o
namespace XML para a ontologia Actividade. Em termos de raciocínio temporal e
espacial, o motor de inferência pode inferir que a conferência continua a decorrer às 11:00 no Piso II.
Figura 4.11 – Ontologia Activity (Bulcão Neto and Pimentel, 2005). 1: <actvy:CSConference rdf:ID="cmeeting19">
2: <rdf:type rdf:resource= "&actvy;#ScheduledActivity"/> 3: <actvy:hasName> Computer Science 2010 </actvy:hasName> 4: <actvy:hasSummary>
5: 1st International Workshop on Software Engineering for Context 6: Aware Systems and Applications
7: </actvy:hasSummary> 8: <actvy:hasParticipant rdf:resource="#person19"/> 9: <sEve:isLocatedIn rdf:resource="#room82"/> 10: <time:beginPointOf rdf:resource="#bpo67"/> 11: <time:intervalDuratioDescriptionDataType rdf:datatype="&xsd;#duration"> 12: PT2H 13: </time:intervalDuratioDescriptionDataType> 14: </actvy:CSConference> 15: <act:Person rdf:ID="person19"> 16: <act:hasName>Ana Correia</act:hasName> 17: </act:Person> 18: <spc:DaVinciRoom rdf:ID="room82"> 19: <rdf:type rdf:resource="&spc;#Room"/> 20: <spc:placeName>Da Vinci</spc:placeName> 21: <spc:isSpatiallyPartOf rdf:resource="#floor4"/> 22: </spc:DaVinciRoom> 23: <spc:ConferenceFloor rdf:ID="floor2"> 24: <rdf:type rdf:resource="&spc;#Floor"/> 25: <spc:placeName> Piso II </spc:placeName> 26: <spc:isSpatiallyPartOf df:resource="#IPB"/> 27: </spc:ConferenceFloor> 28: <time:InstantThing rdf:ID="bpo67"> 29: <time:instantCalendarClockDataType rdf:datatype="&xsd;#dateTime"> 30: 2010-12-07T10:00 31: </time:instantCalendarClockDataType> 32: </time:InstantThing> 33: </actvy:CSConference>
Em seguida são apresentadas as ontologias de apoio (Bulcão Neto, 2006):
− ontologia Contact – descreve informações de contacto de um actor (ex. morada de casa/trabalho, email). Esta ontologia está relacionada com a ontologia Actor através da propriedade hasContactInformation que liga a classe Actor à classe ContactInformation;
− ontologia Role – representa o papel social de um actor. (ex. aluno, empregado) Relacionam-se as classes Actor e Role através da propriedade hasSocialRole;
− ontologia Relationship – esta ontologia modela os relacionamentos sociais entre os pessoas (ex. é amigo de, é empregado de). Explora as propriedade simétricas (SymmetricProperty) e herança proporcionadas pela OWL. Por exemplo se “João é empregado de Pedro” então “Pedro é o empregador de João” então “Pedro e João têm um tipo qualquer de Relação”;
− ontologia Knowledge – representa informações sobre o conhecimento que uma pessoa tem num determinado assunto ou tema de conhecimento (ex. “...tem experiência...”, “...tem interesse...”);
− ontologia Document – descreve informações de documentos físicos ou electrónicos elaborados por um actor (ex. documento de papel, autor, título);
− ontologia Project – representa projectos e relações entre estes e os actores. Relaciona classes das ontologias Project, Actor e TemporalEvent (ex. um projecto pode ter um título, membros e um prazo temporal).
4.6 Resumo
Este capítulo apresentou diversas tecnologias que podem ser usadas em arquitecturas SOA baseadas em Web Services e Web Services Semânticos. Iniciou-se o capítulo com a descrição da arquitectura que suporta os Web Services como base para posteriormente se compreender melhor as diversas propostas existentes na área dos Web Services Semânticos e quais as contribuições que estes trazem no âmbito dos sistemas distribuídos.
Observou-se que apesar dos Web Services possuírem normas maduras, sendo bem aceites quer pela indústria quer como tecnologia predominante nas arquitecturas distribuídas, no entanto
estes possuem também sérias restrições semânticas. Isto é, o conjunto de normas que definem a sua arquitectura, como SOAP, WSDL, UDDI, especificam apenas a funcionalidade a nível sintáctico, provocando limitações em funcionalidades como a localização e composição automática com base nas capacidades do serviço, recuperação de falhas em tempo de execução, entre outras.
Pela mão da DARPA, foi iniciado o programa DARPA DAML com o objectivo de fornecer a base para a próxima evolução da Web, a Semantic Web (Hendler and McGuinness, 2000). Deste e de outros programas semelhantes surgiram várias propostas como o objectivo de adicionar uma camada semântica aos Web Services, por forma a descrever as suas propriedades, capacidades e permitindo suportar um conjunto de novas funcionalidades como a descoberta automática por agentes de software e a invocação automática, entre outras. Para conhecer melhor esta proposta é apresentada neste capítulo uma revisão bibliográfica sobre essas frameworks e as linguagens mais populares que suportam os Web Services Semânticos. A partir desta revisão verificou-se que existem diversas propostas para a descrição semântica de Web Services que variam desde soluções complexas e bastante detalhadas, com o objectivo de explorar o máximo das características oferecidas pelos vários tipos de linguagens semânticas, a outras mais simples que podem ser vistas apenas como extensões semânticas de normas já existentes.
Finalmente, foi estudado o modelo contextual semântico SeCoM, que descreve a semântica da informação contextual através de um conjunto de módulos que representam domínios particulares, por forma a auxiliar o desenvolvimento de aplicações sensíveis ao contexto.