4.2 Servidor de Contexto do VadeMecum
4.2.3 Quest˜oes de Implementac¸˜ao
Nesta sec¸˜ao, ser˜ao discutidos as quest˜oes de implementac¸˜ao relacionadas ao servidor de contexto do VadeMecum, sendo apresentadas as principais ferramentas utilizadas no desen-
volvimento desse sistema nas pr´oximas subsec¸˜oes.
Prot´eg´e
Para a descric¸˜ao do modelo de contexto foi utilizada a ferramenta Prot´eg´e [53] juntamente com o plugin para OWL [54], esta auxilou a gerac¸˜ao da ontologia escrita em OWL. O Prot´eg´e ´e uma plataforma de c´odigo aberto desenvolvida pelo Stanford Center for Biomedical Infor-
matics Research para a criac¸˜ao, visualizac¸˜ao e manipulac¸˜ao de ontologias em v´arios formatos de representac¸˜ao, como OWL, RDF e RDFS. Uma das principais caracter´ısticas dessa ferra-
menta ´e que ela permite a sua extens˜ao atrav´es de plugins. Na Figura4.7, apresenta-se uma imagem da interface do Prot´eg´e com o modelo de contexto do VadeMecum aberto.
Apesar do Prot´eg´e ser bastante utilizado pela comunidade cient´ıfica e ser uma das me- lhores para a func¸˜ao a qual ela serve, esta possui diversas falhas e diferentes vers˜oes para
4.2 Servidor de Contexto do VadeMecum 45
Figura 4.7: Ferramenta Prot´eg´e com o plugin OWL.
Jena
O Jena [55] ´e um framework Java para a criac¸˜ao de aplicac¸˜oes para a Web semˆantica. Este possui uma API para manipulac¸˜ao de ontologias escritas em RDF e OWL, permitindo o ar-
mazenamento destas em mem´oria principal ou secund´aria. A realizac¸˜ao de consultas sobre os dados utilizando a linguagem SPARQL e um mecanismo de inferˆencia s˜ao outras funcio-
nalidades importantes neste framework.
O framework Jena possui uma linguagem pr´opria para a descric¸˜ao de regras, as quais
podem ser executadas sobre uma base de dados em OWL utilizando um mecanismo de in- ferˆencia baseada em regras que vˆem contida no mesmo. Este mecanismo oferece trˆes mo-
delos distintos de execuc¸˜ao: o modelo forward chaining, o backward chaining e o modelo
h´ıbrido. O C´odigo Fonte4.2resume a sintaxe informal das regras Jena, nas quais as v´ırgulas s˜ao opcionais.
Para as regras ficarem mais leg´ıveis, Jena oferece suporte a utilizac¸˜ao de namespaces
para URIs, necessitando apenas que estes sejam registrados previamente, sendo que alguns namespaces j´a s˜ao inclu´ıdos: RDF, RDFS, OWL, DAML e XSD (XML Schema).
4.2 Servidor de Contexto do VadeMecum 46
C´odigo Fonte 4.2: Sintaxe das regras no Jena.
1 R u l e : = b a r e−r u l e . 2 o r [ b a r e−r u l e ] 3 o r [ r u l e N a m e : b a r e−r u l e ] 4 5 b a r e−r u l e : = t e r m , . . . t e r m −> hterm , . . . h t e r m / / f o r w a r d r u l e 6 o r t e r m , . . . t e r m <− term , . . . t e r m / / b a c k w a r d r u l e 7 8 h t e r m : = t e r m 9 o r [ b a r e−r u l e ] 10 11 t e r m : = ( node , node , n o d e ) / / t r i p l e p a t t e r n 12 o r ( node , node , f u n c t o r ) / / e x t e n d e d t r i p l e p a t t e r n 13 o r b u i l t i n ( node , . . . n o d e ) / / i n v o k e p r o c e d u r a l 14 / / p r i m i t i v e 15 16 f u n c t o r : = f u n c t o r N a m e ( node , . . . n o d e ) / / s t r u c t u r e d l i t e r a l 17 n o d e : = u r i−r e f / / e . g . h t t p : / / f o o . com / eg 18 o r p r e f i x : l o c a l n a m e / / e . g . r d f : t y p e 19 o r ? v a r n a m e / / v a r i a b l e 20 o r ’a literal’ / / e i t h e r a s t r i n g o r a number 21 o r number / / e . g . 42 o r 2 5 . 5 Joseki
Para o tratamento das consultas em SPARQL e das atualizac¸˜oes provindas dos provedores de contexto em SPARQL Update via protocolo de comunicac¸˜ao HTTP (GET e POST), foi
utilizado o servidor de SPARQL Joseki. Este sistema permite que a partir de alguns arquivos de configurac¸˜ao que descrevam o modelo ontol´ogico a ser utilizado, seja poss´ıvel realizar
consultas e atualizac¸˜oes no modelo utilizando o protocolo SPARQL.
O Joseki utiliza o Jena para a leitura em Java de ontologias descritas utilizando as lingua-
gens RDF e OWL. Al´em disso, este permite que sejam utilizadas as m´aquinas de inferˆencia existentes no Jena ou ent˜ao alguma externa.
4.2 Servidor de Contexto do VadeMecum 47
inferˆencia Pellet [56], esta permite realizar inferˆencias em ontologias descritas em OWL DL
atrav´es de DIG [57], que consiste de uma interface de comunicac¸˜ao HTTP para envio de
mensagens em XML para uma m´aquina de inferˆencia externa. Entretanto, esta forma de comunicac¸˜ao n˜ao permite a inferˆencia de regras, al´em disso, o Pellet s´o d´a suporte a um
subconjunto de SWRL [58], chamado de DL-Safe Rules [59], n˜ao sendo permitido neste a
utilizac¸˜ao de primitivas, como ´e poss´ıvel com o Jena, que s˜ao muito ´uteis nas regras con-
textuais, como na realizac¸˜ao de operac¸˜oes topol´ogicas sobre os dados espaciais [60] (ex.: contatos que est˜ao localizados no munic´ıpio de Campina Grande).
Na descric¸˜ao de um servic¸o no Joseki ´e poss´ıvel descrever um modelo que possui outro modelo interno, dessa forma, ´e poss´ıvel especificar um modelo de inferˆencia baseado em
regras sobre outro modelo para inferˆencias no modelo OWL e outro descrevendo a base de fatos, entretanto esta abordagem se mostrou muito lenta e pouco escal´avel. A abordagem
utilizada para o servidor de contexto do VadeMecum, foi a utilizac¸˜ao de um modelo de inferˆencia baseada em regras com um subconjunto de regras de inferˆencia para modelos
descritos em OWL DL, desta forma, a soluc¸˜ao se tornou mais eficiente pois n˜ao utiliza dois modelos de inferˆencia diferentes.
O Apˆendice B apresenta o arquivo de configurac¸˜ao do Joseki com a descric¸˜ao dos
servic¸os de consulta e atualizac¸˜ao na base de conhecimento do VadeMecum e a especificac¸˜ao
da m´aquina de inferˆencia baseada em regras.
SPARQL e SPARQL Update
SPARQL [61] ´e uma linguagem para consulta em RDF, a qual ´e uma recomendac¸˜ao da
W3C. Uma vez que OWL adiciona possibilidades mais referentes ao poder de inferˆencia – por exemplo, igualdade, equivalˆencia e simetria de classes –, SPARQL tamb´em pode ser
utilizado para consultas a ontologias descritas em OWL.
Nesta linguagem, existem quatro formas diferentes de realizar consultas, podendo o re-
sultado ser no formato RDF ou XML, dependendo em qual das formas a consulta foi reali- zada, sendo elas:
• SELECT: nas consultas realizadas com esta cl´ausula s˜ao retornados um conjunto de
4.2 Servidor de Contexto do VadeMecum 48
C´odigo Fonte4.3mostra um exemplo de consulta feita no VadeMecum utilizando esta
forma;
• CONSTRUCT: ´e utilizado para a construc¸˜ao de outros grafos RDF a partir do con-
sultado;
• ASK: retorna se existe um resultado para as condic¸˜oes desejadas, sendo retornado
apenas a resposta afirmativa ou negativa no formato XML; e
• DESCRIBE: ´e utilizado para adquirir informac¸˜oes sobre um recurso, sendo retorna
apenas um resultado no formato RDF.
C´odigo Fonte 4.3: Exemplo de consulta em SPARQL SELECT.
1 PREFIX v a d e : <h t t p : / / www. l s i . d s c . u f c g . edu . b r / vademecum . owl#>
2 PREFIX r d f : <h t t p : / / www. w3 . o r g / 1 9 9 9 / 0 2 / 2 2− r d f −s y n t a x −n s#> 3 SELECT ? u s e r ? c o n t e x t 4 WHERE { 5 ? u s e r v a d e : h a s C o n t e x t ? c o n t e x t . 6 ? c o n t e x t r d f : t y p e v a d e : E m o t i o n . 7 }
O arquivo XML retornado quando s˜ao realizadas consultas SELECT e ASK, obedece um
XSD especificado pela W3C [62]. No C´odigo Fonte 4.4, mostra-se um exemplo de XML
retornado por uma consulta SPARQL utilizando a cl´ausula SELECT. Para uma consulta ASK ´e retornada uma tag ”‘boolean”’ no lugar de ”‘results”’.
O servidor de contexto do VadeMecum aceita todas as formas de consultas via SPARQL
descritas anteriormente. Nas aplicac¸˜oes m´oveis as consultas s˜ao realizadas utilizando a cl´ausula SELECT, para a obtenc¸˜ao das ac¸˜oes a serem executadas e de informac¸˜oes con-
textuais.
Da mesma forma que SPARQL via HTTP GET ´e utilizado para a obtenc¸˜ao das
informac¸˜oes contextuais, ´e necess´aria uma maneira para adicionar estas no servidor de
contexto doVadeMecum, para isso, foi utilizada a linguagem SPARQL Update [63], esta
´e uma extens˜ao de SPARQL criada pela HP e submetida para a W3C como candidata `a
recomendac¸˜ao. No VadeMecum foram utilizadas trˆes formas de atualizac¸˜oes SPARQL Up-
4.2 Servidor de Contexto do VadeMecum 49
contextuais ainda n˜ao existentes, a segunda ´e utilizada para remover as existentes e a ´ultima
´e para a modificac¸˜ao de informac¸˜oes j´a existentes. No C´odigo Fonte 4.5, mostra-se uma
atualizac¸˜ao feita no contexto de um usu´ario no servidor de contexto via SPARQL Update.
C´odigo Fonte 4.4: Resultado de uma consulta SPARQL na forma SELECT.
1 <?xml v e r s i o n =”1.0”? > 2 <s p a r q l x m l n s =” h t t p : / / www. w3 . o r g / 2 0 0 5 / s p a r q l− r e s u l t s #”> 3 <head> 4 <v a r i a b l e name =” u s e r ”/ > 5 <v a r i a b l e name =” c o n t e x t ”/ > 6 </ head> 7 <r e s u l t s > 8 <r e s u l t > 9 <b i n d i n g name =” u s e r ”>
10 <u r i >h t t p : / / www. l s i . d s c . u f c g . edu . b r / vademecum . owl #Hugo </ u r i >
11 </ b i n d i n g >
12 <b i n d i n g name =” c o n t e x t ”>
13 <u r i >h t t p : / / www. l s i . d s c . u f c g . edu . b r / vademecum . owl # happy </ u r i > 14 </ b i n d i n g >
15 </ r e s u l t >
16 . . .
17 </ r e s u l t s >
18 </ s p a r q l >
C´odigo Fonte 4.5: Atualizando o contexto utilizando SPARQL Update no VadeMecum.
1 PREFIX v a d e : <h t t p : / / www. l s i . d s c . u f c g . edu . b r / vademecum . owl#>
2 PREFIX r d f : <h t t p : / / www. w3 . o r g / 1 9 9 9 / 0 2 / 2 2− r d f −s y n t a x −n s#>
3 MODIFY
4 DELETE { v a d e : Hugo v a d e : h a s C o n t e x t ? c }
5 INSERT { v a d e : Hugo v a d e : h a s C o n t e x t v a d e : happy } 6 WHERE { v a d e : Hugo v a d e : h a s C o n t e x t ? c .