• Nenhum resultado encontrado

SparqlGrounding e SparqlAtomicProcessGrounding

No documento SWoDS: Semantic Web (of Data) Service (páginas 66-73)

2.3 Considerações Finais

3.1.1 SparqlGrounding e SparqlAtomicProcessGrounding

Para implementação de serviços OWL-S que são executados através de consultas SPARQL, é necessário desenvolver uma extensão da classe Grounding que contenha os elementos necessários para construir a consulta SPARQL que implementa o serviço e, consequentemente, as informações necessárias para executá-la.

O mapeamento do Grounding OWL-S para SPARQL especializa a camada abstrata composta pelas classes Grounding e AtomicProcessGrounding, ambas definidas pelo padrão OWL-S. A Figura 3.1 apresenta um diagrama de classes UML que exibe tal especialização.

Na Figura3.1, os detalhes das ontologias Service, Profile e Process foram omiti- dos para evidenciar a especialização da ontologia Grounding. As classes SparqlGrounding e SparqlAtomicProcessGrounding na Figura3.1não fazem parte da ontologia Grounding. Essas classes são propostas neste trabalho com o objetivo de descrever a execução do SWoDS e respectivamente estendem as classes Grounding e AtomicProcessGrounding,

Figura 3.1: Modelo UML da extensão da classe SparqlGrounding. mantendo a integração com os elementos do OWL-S.

O modelo de classes apresentado na Figura 3.1 propõe o agrupamento das novas classes em uma ontologia dedicada, chamada SparqlGrounding. Essa abordagem evita qualquer modificação na especificação OWL-S, o que facilitará a adoção da nova onto- logia, sem interferir em serviços descritos com OWL-S anteriormente à incorporação da SparqlGrounding.

A classe SparqlAtomicProcessGrounding, que representa a execução de um pro- cesso atômico de um serviço OWL-S, deve implementar os mapeamentos necessários para construção e execução da consulta SPARQL que representa o serviço. Portanto, no domínio desta classe são definidos os elementos capazes de descrever uma consulta SPARQL, tal como prefixos, elementos selecionados e triplas na cláusula WHERE.

exemplo para um serviço que tem como entrada o ISBN (?var_isbn) e a saída um re- curso livro (?var_book). Note, que são definidos para cada tipo de estrutura da consulta SPARQL elementos no SparqlAtomicProcessGrounding. Para os prefixos foram defini- dos a propriedade SparqlPrefixes e para as triplas a propriedade SparqlTriples. As entradas e saídas são respectivamente mapeadas pelas propriedades SparqlinputParam e SparqlOutputParam, que armazenam tanto elementos da consulta SPARQL, como as classes da sub-ontologia Process referentes a entrada e saída. A associação com clas- ses do Process garante a conexão dos dados de entrada e saída com suas respectivas descrições semânticas.

Figura 3.2: Demonstração do mapeamento de uma consulta SPARQL nos elementos do AtomicProcessGrounding.

Para a formalização da SparqlGrounding é necessário fazer a descrição de todos os seus elementos seguindo a sintaxe da linguagem OWL. O Documento 3.1 descreve a formalização em OWL da classe SparqlGrounding como uma subclasse da classe Groundingpreviamente definida pela OWL-S. Note também que a definição possui res-

trições referentes à existência de AtomicProcessGrounding (linha 5 do Documento3.1) e que todos esses devem ser do tipo SparqlAtomicProcessGrounding (linha 6 do Do- cumento 3.1). Tais restrições garantem que a instância da classe SparqlGrounding terá uma ou mais subclasses, as quais serão do tipo SparqlAtomicProcessGrounding, garantindo assim a construção exclusiva para as classes do SparqlGrounding.

Note também no Documento3.1 a utilização do prefixo &grounding nas linhas 02 e 05 para referenciar classes definidas na ontologia OWL-S Grounding. O cabeçalho do documento que possui esse trecho de código deve necessariamente definir o URI completo da ontologia referenciada. Referências precisas entre os documentos que formam uma ontologia são requisitos fundamentais para que um agente de software da Web Semântica possa automaticamente encontrar a definição de todas as classes utilizadas.

Documento 3.1: Classe SparqlGrounding.

1 < o w l : C l a s s r d f : I D = " S p a r q l G r o u n d i n g " > 2 < r d f s : s u b C l a s s O f r d f : r e s o u r c e = " & g r o u n d i n g ; G r o u n d i n g " / > 3 < r d f s : s u b C l a s s O f > 4 < o w l : R e s t r i c t i o n > 5 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " & g r o u n d i n g ; h a s A t o m i c P r o c e s s G r o u n d i n g " / > 6 < o w l : a l l V a l u e s F r o m r d f : r e s o u r c e = " # S p a r q l A t o m i c P r o c e s s G r o u n d i n g " / > 7 < / o w l : R e s t r i c t i o n > 8 < / r d f s : s u b C l a s s O f > 9 < r d f s : c o m m e n t > 10 The c l a s s t h a t g r o u n d s e v e r y p r o c e s s to a S P A R Q L q u e r y . 11 < / r d f s : c o m m e n t > 12 < / o w l : C l a s s >

A classe SparqlAtomicProcessGrounding, exibida no Documento3.2, é uma sub- classe de AtomicProcessGrounding, que é uma classe abstrata. A classe SparqlAtomic- ProcessGroundingpossui a restrição de uma propriedade de dados (DatatypeProperty) chamada sparqlEndPoint (linha 5), a qual armazena a URI do ponto de acesso que a consulta SPARQL deve ser submetida na execução do serviço. A propriedade sparqlEndPoint possui restrição de cardinalidade de uma única ocorrência (Docu- mento3.2linha 6). Os demais elementos associados ao SWoDS são pertencentes à essa

classe, logo a SparqlAtomicProcessGrounding representa uma instância de execução atômica de um serviço SWoDS.

Documento 3.2: Classe SparqlAtomicProcessGrounding.

1 < o w l : C l a s s r d f : I D = " S p a r q l A t o m i c P r o c e s s G r o u n d i n g " > 2 < r d f s : s u b C l a s s O f r d f : r e s o u r c e = " & g r o u n d i n g ; A t o m i c P r o c e s s G r o u n d i n g " / > 3 < r d f s : s u b C l a s s O f > 4 < o w l : R e s t r i c t i o n > 5 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # s p a r q l E n d P o i n t " / > 6 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 7 < / o w l : R e s t r i c t i o n > 8 < / r d f s : s u b C l a s s O f > 9 < r d f s : c o m m e n t > 10 The c l a s s t h a t r e l a t e s e l e m e n t s of an OWL - S a t o m i c p r o c e s s to a S P A R Q L q u e r y . 11 < / r d f s : c o m m e n t > 12 < / o w l : C l a s s >

O Documento 3.3 exibe a definição das propriedades sparqlEndPoint e sparql- Version, que pertencem ao domínio da classe SparqlAtomicProcessGrounding. A sparqlEndPointé definida como uma propriedade de dados e tem seu valor referente a uma URI (Documento3.3linha 6). A propriedade sparqlVersion também possui valor definido como URI (Documento 3.3 linha 15), porém por não ter nenhuma restrição de cardinalidade, o que torna seu uso opcional. No caso de ausência da definição sparqlVersionassume-se a versão atual do SPARQL.

Documento 3.3: Propriedades sparqlEndPoint e sparqlVersion.

1 < o w l : D a t a t y p e P r o p e r t y r d f : I D = " s p a r q l E n d P o i n t " > 2 < r d f s : c o m m e n t >

3 A URI for a S P A R Q L e n d p o i n t t h a t p r o v i d e s the o p e r a t i o n to w h i c h t h i s a t o m i c p r o c e s s is g r o u n d e d . 4 < / r d f s : c o m m e n t > 5 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l A t o m i c P r o c e s s G r o u n d i n g " / > 6 < r d f s : r a n g e r d f : r e s o u r c e = " & xsd ; a n y U R I " / > 7 < / o w l : D a t a t y p e P r o p e r t y > 8 9 < o w l : D a t a t y p e P r o p e r t y r d f : I D = " s p a r q l V e r s i o n " > 10 < r d f : t y p e r d f : r e s o u r c e = " & owl ; F u n c t i o n a l P r o p e r t y " / > 11 < r d f s : c o m m e n t >

12 The URI t h a t i n d i c a t e s the S P A R Q L v e r s i o n b e i n g u s e d . 13 < / r d f s : c o m m e n t >

14 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l A t o m i c P r o c e s s G r o u n d i n g " / > 15 < r d f s : r a n g e r d f : r e s o u r c e = " & xsd ; a n y U R I " / >

16 < / o w l : D a t a t y p e P r o p e r t y >

Uma consulta SPARQL pode possuir prefixos, que eventualmente são usados nas tri- plas, portanto, no SparqlGrounding é definida uma propriedade do tipo ObjectProperty, seguida da classe OWL SparqlPrefixMap (Documento 3.4 linhas 9 a 25), que define o mapeamento do nome do prefixo (PrefixName) para a URI associada (PrefixUri). O Documento 3.4 apresenta um trecho de tal definição, note que o SparqlPrefixMap define a existência de um (e somente um) elemento PrefixName e PrefixUri, garan- tindo assim a integridade para formação dos prefixos. O Documento3.4também define, nas linhas 1 a 7 ObjectProperty SparqlPrefixes, que irá conter o conjunto de prefixos definidos.

Documento 3.4: Propriedade SparqlPrefixes e classe SparqlPrefixMap.

1 < o w l : O b j e c t P r o p e r t y r d f : I D = " S p a r q l P r e f i x e s " > 2 < r d f s : c o m m e n t > 3 T h e r e s h o u l d l i s t the p r e f i x i e s of s p a r q l q u e r y . 4 < / r d f s : c o m m e n t > 5 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l A t o m i c P r o c e s s G r o u n d i n g " / > 6 < r d f s : r a n g e r d f : r e s o u r c e = " # S p a r q l P r e f i x M a p " / > 7 < / o w l : O b j e c t P r o p e r t y > 8 9 < o w l : C l a s s r d f : I D = " S p a r q l P r e f i x M a p " > 10 < r d f s : s u b C l a s s O f > 11 < o w l : R e s t r i c t i o n > 12 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # P r e f i x N a m e " / > 13 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 14 < / o w l : R e s t r i c t i o n > 15 < / r d f s : s u b C l a s s O f > 16 < r d f s : s u b C l a s s O f > 17 < o w l : R e s t r i c t i o n > 18 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # P r e f i x U r i " / > 19 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 20 < / o w l : R e s t r i c t i o n > 21 < / r d f s : s u b C l a s s O f > 22 < r d f s : c o m m e n t > 23 B u i l d a map of e a c h p r e f i x . 24 < / r d f s : c o m m e n t > 25 < / o w l : C l a s s >

O Documento 3.5descreve a definição das triplas pertencentes à clásula WHERE das consultas SPARQL (como pode ser exemplificado na Figura 3.2), mapeando o sujeito, o predicado e o objeto das triplas, respectivamente representados pelas propriedades TripleSubject(Documento 3.5 linhas 34 a 37 ), TriplePredicate (Documento 3.5 linhas 39 a 42 ) e TripleObject (Documento3.5linhas 44 a 47 ). A SparqlTripleMap (Documento3.5linhas 9 a 31 ) é responsável por mapear as propriedades que compõem a tripla e possui uma restrição referente à quantidade de elementos que compõem a tripla a fim de garantir sua integridade sintática. O ObjectProperty SparqlTriples (Docu- mento3.5linhas 1 a 7 ) possui a classe de mapeamento de tripla RDF SparqlTripleMap.

Documento 3.5: Elementos OWL para descrever triplas SPARQL.

1 < o w l : O b j e c t P r o p e r t y r d f : I D = " S p a r q l T r i p l e s " > 2 < r d f s : c o m m e n t > 3 T h e r e s h o u l d l i s t the t r i p l e s in w h e r e c l a u s e s of s p a r q l q u e r y . 4 < / r d f s : c o m m e n t > 5 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l A t o m i c P r o c e s s G r o u n d i n g " / > 6 < r d f s : r a n g e r d f : r e s o u r c e = " # S p a r q l T r i p l e M a p " / > 7 < / o w l : O b j e c t P r o p e r t y > 8 9 < o w l : C l a s s r d f : I D = " S p a r q l T r i p l e M a p " > 10 < r d f s : s u b C l a s s O f > 11 < o w l : R e s t r i c t i o n > 12 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # T r i p l e P r e d i c a t e " / > 13 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 14 < / o w l : R e s t r i c t i o n > 15 < / r d f s : s u b C l a s s O f > 16 < r d f s : s u b C l a s s O f > 17 < o w l : R e s t r i c t i o n > 18 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # T r i p l e S u b j e c t " / > 19 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 20 < / o w l : R e s t r i c t i o n > 21 < / r d f s : s u b C l a s s O f > 22 < r d f s : s u b C l a s s O f > 23 < o w l : R e s t r i c t i o n > 24 < o w l : o n P r o p e r t y r d f : r e s o u r c e = " # T r i p l e O b j e c t " / > 25 < o w l : c a r d i n a l i t y r d f : d a t a t y p e = " & xsd ; n o n N e g a t i v e I n t e g e r " > 1 < / o w l : c a r d i n a l i t y > 26 < / o w l : R e s t r i c t i o n > 27 < / r d f s : s u b C l a s s O f > 28 < r d f s : c o m m e n t > 29 B u i l d map of p a r t of e a c h t r i p l e .

30 < / r d f s : c o m m e n t > 31 < / o w l : C l a s s > 32 33 34 < o w l : D a t a t y p e P r o p e r t y r d f : I D = " T r i p l e S u b j e c t " > 35 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l T r i p l e M a p " / > 36 < r d f s : r a n g e r d f : r e s o u r c e = " & xsd ; s t r i n g " / > 37 < / o w l : D a t a t y p e P r o p e r t y > 38 39 < o w l : D a t a t y p e P r o p e r t y r d f : I D = " T r i p l e P r e d i c a t e " > 40 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l T r i p l e M a p " / > 41 < r d f s : r a n g e r d f : r e s o u r c e = " & xsd ; s t r i n g " / > 42 < / o w l : D a t a t y p e P r o p e r t y > 43 44 < o w l : D a t a t y p e P r o p e r t y r d f : I D = " T r i p l e O b j e c t " > 45 < r d f s : d o m a i n r d f : r e s o u r c e = " # S p a r q l T r i p l e M a p " / > 46 < r d f s : r a n g e r d f : r e s o u r c e = " & xsd ; s t r i n g " / > 47 < / o w l : D a t a t y p e P r o p e r t y >

3.1.2 Mapeamento das Entradas e Saídas de OWL-S para Sparql-

No documento SWoDS: Semantic Web (of Data) Service (páginas 66-73)