• Nenhum resultado encontrado

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 .