lo
U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE
D EPARTAMENTO DE I NFORMÁTICA E M ATEMÁTICA
A PLICADA - DIMA P
Mo
de
T HIAGO P EREIRA DA S ILVA
AutoWebS
Um Ambiente para Modelagem e Geração Automática de
Serviços Web Semânticos
Natal - RN
2012
U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE
D EPARTAMENTO DE I NFORMÁTICA E M ATEMÁTICA
A PLICADA - DIMA P
AUTORIZAÇÃO PARA P UBLICAÇÃO DE D ISSERTAÇÃO
EM
F ORMATO E LETRÔNICO
Na qualidade de titular dos direitos de autor, AUTORIZO o Departamento de
Informática e Matemática Aplicada - DIMAp da Universidade Federal do Rio Grande
do Norte – UFRN a reproduzir, inclusive em outro formato ou mídia e através de
armazenamento permanente ou temporário, bem como a publicar na rede mundial de
computadores (Internet) e na biblioteca virtual da UFRN, entendendo-se os termos
“reproduzir” e “publicar” conforme definições dos incisos VI e I, respectivamente, do
artigo 5o da Lei no 9610/98 de 10/02/1998, a obra abaixo especificada, sem que me seja
devido pagamento a título de direitos autorais, desde que a reprodução e/ou publicação
tenham a finalidade exclusiva de uso por quem a consulta, e a título de divulgação da
produção acadêmica gerada pela Universidade, a partir desta data.
Título: AutoWebS – Um Ambiente para Modelagem e Geração Automática de Serviços
Web Semânticos
Autor(a): Thiago Pereira da Silva
Natal - RN, 06 de Agosto de 2012.
Thiago Pereira da Silva – Autor
Thaís Vasconcelos Batista – Orientadora
T HIAGO P EREIRA DA S ILVA
AutoWebS
Um Ambiente para Modelagem e Geração Automática de
Serviços Web Semânticos
Dissertação apresentada ao Programa de Pós–Graduação
em Sistemas e Computação - PPgSC do Departamento de
Informática e Matemática Aplicada - DIMAp da Universidade Federal do Rio Grande do Norte, como requisito parcial para obtenção do título de Mestre em Sistemas e Computação.
Área de concentração: Engenharia de Software.
Orientadora: Profa. Thaís Vasconcelos Batista
Natal - RN
2012
T HIAGO P EREIRA DA S ILVA
AutoWebS
Um Ambiente para Modelagem e Geração Automática de
Serviços Web Semânticos
Dissertação defendida no Programa de Pós–Graduação do Departamento de Informática e Matemática Aplicada - DIMAp da Universidade
Federal do Rio Grande do Norte como requisito parcial para obtenção
do título de Mestre em Sistemas e Computação, aprovada em 06 de
Agosto de 2012, pela Banca Examinadora constituída pelos professores:
Profa. Thaís Vasconcelos Batista
Departamento de Informática e Matemática Aplicada - DIMAp – UFRN
Presidente da Banca
Prof. Nélio Alessandro Azevedo Cacho
Universidade Federal do Rio Grande do Norte - DIMAp – UFRN
Profa. Flavia Coimbra Delicato
Universidade Federal do Rio de Janeiro - DCC/IM – UFRJ
Prof. Paulo F. Pires
Universidade Federal do Rio de Janeiro - DCC/IM – UFRJ
Agradecimentos
Agradeço a minha orientadora Thais Batista pela dedicação, ensinamentos e
compartilhamento de experiências que me foi dado durante o mestrado.
Agradeço os professores Paulo Pires, Nélio Cacho e Flávia Delicato pelas
sugestões valiosas que contribuiram para o desenvolvimento deste trabalho.
Sou grato aos meus pais, meus irmãos e minha avó pelo amor e carinho que
sempre me deram.
Aos colegas de trabalho, Lidiane, Fred Lopes, Everton Cavalcante, Taniro Rodrigues, Ana Luisa, Gustavo, Eduardo e Lucas Silva agradeço os conselhos, ensinamentos e
companhia.
A CAPES pelo apoio financeiro despendido a este trabalho.
Resumo
da Silva, Thiago Pereira. AutoWebS: Um Ambiente para Modelagem e Geração Automática de Serviços Web Semânticos. Natal - RN, 2012. 159p. Dissertação de Mestrado. Departamento de Informática e Matemática Aplicada DIMAp, Universidade Federal do Rio Grande do Norte.
Tipicamente serviços Web contêm apenas informações sintáticas que descrevem suas interfaces e a falta de descrições semânticas torna a composição de serviços Web uma tarefa
difícil. Para resolver este problema, pode-se usar ontologias para a definição semântica da
interface dos serviços, facilitando a automação da descoberta, publicação, mediação, invocação e composição dos serviços. No entanto, linguagens que permitem se descrever
semanticamente serviços Web utilizando ontologias, como OWL-S, têm construções que
não são fáceis de entender, mesmo para desenvolvedores Web, e as ferramentas existentes
levam aos usuários muitos detalhes que as tornam difíceis de serem manipuladas. Este trabalho apresenta uma ferramenta chamada AutoWebS (Automatic Generation of Semantic
Web Services) para o desenvolvimento de serviços Web semânticos. O AutoWebS usa
uma abordagem baseada em perfis UML e transformações entre modelos para a geração
automática de serviços Web e sua descrição semântica em OWL-S. O AutoWebS disponibiliza um ambiente que oferece recursos para modelar, implementar, compilar e implantar
serviços Web semânticos.
Palavras–chave
MDD, OWL-S, serviço Web semântico, perfil UML, Web semântica
Abstract
da Silva, Thiago Pereira. AutoWebS: Um Ambiente para Modelagem e Geração Automática de Serviços Web Semânticos. Natal - RN, 2012. 159p. MSc.
Dissertation. Departamento de Informática e Matemática Aplicada - DIMAp,
Universidade Federal do Rio Grande do Norte.
Typically Web services contain only syntactic information that describes their interfaces. Due to the lack of semantic descriptions of the Web services, service composition
becomes a difficult task. To solve this problem, Web services can exploit the use of ontologies for the semantic definition of service’s interface, thus facilitating the automation
of discovering, publication, mediation, invocation, and composition of services. However,
ontology languages, such as OWL-S, have constructs that are not easy to understand, even
for Web developers, and the existing tools that support their use contains many details
that make them difficult to manipulate. This paper presents a MDD tool called AutoWebS
(Automatic Generation of Semantic Web Services) to develop OWL-S semantic Web services. AutoWebS uses an approach based on UML profiles and model transformations for
automatic generation of Web services and their semantic description. AutoWebS offers
an environment that provides many features required to model, implement, compile, and
deploy semantic Web services.
Keywords
MDD, OWL-S, semantic Web services, UML profile, semantic Web
Sumário
Lista de Figuras
9
Lista de Tabelas
11
Lista de Códigos de Programas
12
1
13
16
17
Introdução
1.1
1.2
2
Fundamentação Teórica
2.1
2.2
2.3
2.4
3
Serviço Web
Web Semântica
2.2.1
RDF e RDF Schema
2.2.2
Ontologia
2.2.3
OWL
2.2.4
Serviços Web Semânticos
OWL-S
2.3.1
Service Profile
2.3.2
Service Model
2.3.3
Service Grounding
Desenvolvimento de Software Dirigido por Modelos
Mapeamento entre OWL e UML
3.1
3.2
4
Objetivos
Estrutura do Documento
Mapeamento entre as linguagens de especificação de ontologias e a UML
Mapeamento entre OWL e UML
Ambiente para Modelagem e Geração Automática de Serviços Web Semânticos
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Requisitos de uma ferramenta para criação de serviços Web semânticos
Visão Geral da Ferramenta
Arquitetura
Perfil UML
Importação das Ontologias OWL
Metamodelo da Linguagem OWL-S
Implementação das Regras de Mapeamento entre UML e OWL-S
Funcionamento da Ferramenta
19
19
19
21
24
25
29
29
31
33
36
40
43
43
46
50
50
52
54
56
58
60
63
65
5
Estudo de Caso
5.1
5.2
5.3
5.4
6
Sistemas de middleware de provisão de contexto
Ontologia de Domínio
Modelagem do Serviço Web Semântico
Resultados
Experimento Controlado
6.1
6.2
6.3
Ferramentas Avaliadas
Projetos de Serviços Web Semânticos
6.2.1
Serviço Web semântico OilMonitor 1
6.2.2
Serviço Web semântico OilMonitor 2
6.2.3
Serviço Web semântico Book Finder
6.2.4
Serviço Web semântico Zip Code Finder
6.2.5
Serviço Web semântico Latitude Longitude Finder
6.2.6
Serviço Web semântico Barnes and Nobles Price Finder
6.2.7
Serviço Web semântico BabelFish Translator
6.2.8
Serviço Web semântico Currency Converter
Planejamento do Experimento
6.3.1
6.3.2
Objetivos
Questões a serem respondidas e métricas correspondentes
Sobre a ferramenta
67
67
69
71
74
76
77
77
77
78
78
78
78
79
79
79
80
80
80
80
Sobre o grau de dificuldade, tempo e esforço despendido na criação das
diferentes ontologias dos serviços Web
Sobre o uso da ferramenta
6.3.3
Hipóteses
Alternativas
Nulas
6.3.4
Variáveis
Variáveis Independentes
Variáveis Dependentes
Variáveis Controladas
6.4
6.5
6.3.5
Seleção dos Participantes e Treinamento
6.3.6
Local do Experimento e Recursos
6.3.7
Validade
Operação do Experimento
6.4.1
Plano Experimental
6.4.2
Questionário do Perfil do Participante
6.4.3
Questionário para Análise Subjetiva da Ferramenta e do Projeto do Serviço Web
Análise e Interpretação dos Resultados
6.5.1
Apresentação dos Resultados
6.5.2
Teste Estatístico
6.5.3
Análise Qualitativa
6.5.4
Verificação da Hipóteses
81
81
82
82
82
82
82
83
83
83
84
84
84
84
85
86
86
86
88
90
92
7
Trabalhos Relacionados
7.1
7.2
7.3
7.4
7.5
7.6
OWL-S Editor
CODE - CMU’s OWL-S Development Environment
ASSAM - Automated Semantic Service Annotation with Machine Learning
Yang e Chung
Kim e Lee
Comparação entre as ferramentas
95
95
97
98
99
100
101
Contribuições
Limitações
Trabalhos Futuros
105
107
108
108
Referências Bibliográficas
110
A
XSL Transformation
118
Tecnologias dos serviços Web
123
123
127
131
132
8
Conclusão
8.1
8.2
8.3
B
B.1
B.2
B.3
B.4
SOAP
WSDL
UDDI
Apache Axis2
C Tranformação XSLT
133
D Tranformação QVT
147
E
154
154
155
156
Questionários do Experimento Controlado
E.1
E.2
E.3
F
Questionário do Perfil do Participante
Questionário para Análise Subjetiva da Ferramenta e da Atividade
Questionário para o AutoWebS
Quadrados Latino
158
Lista de Figuras
Arquitetura de um serviço Web - retirado de [Wikipedia, 2011]
Principais tecnologias da Web semântica
Exemplo de um grafo em RDF - ilustração retirada de
[Manola and Miller, 2004]
2.4 Dialetos da OWL
2.5 Relação entre classes OWL
2.6 Subontologias da OWL-S - extraído de [Burstein et al., 2004]
2.7 OWL-S Service Profile - extraído de [Burstein et al., 2004]
2.8 Subontologia OWL-S ServiceModel - extraído de [Burstein et al., 2004]
2.9 Grounding OWL-S/WSDL - extraído de [Burstein et al., 2004]
2.10 Classes e propriedades da subontologia OWL-S ServiceGrounding
2.11 Transformações entre modelos
20
20
3.1
Exemplo de mapeamento entre OWL eUML
49
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Visão geral da ferramenta AutoWebS
Arquitetura da ferramenta AutoWebS
Perfil UML usado pela ferramenta AutoWebS
Ontologia BibTex representada como UML
Mapeamento da classe OWL em UML
Metamodelo OWL-S
Transformação de UML para OWL-S
Funcionamento do AutoWebS
53
55
57
59
60
61
64
65
5.1
5.2
5.3
5.4
5.5
5.6
5.7
Arquitetura do OpenCOPI - extraído de [Lopes et al., 2009b]
Ontologia de domínio OilExploration
Trecho da ontologia de domínio OilExploration
Atividades realizadas para o estudo e caso
Trecho da ontologia de domínio OilExploration
Artefatos de códigos gerados
Implementação da regra de negócio do serviço Web
69
70
71
71
72
73
74
6.1
6.2
Tempo de desenvolvimento dos serviços Web semânticos
Valores Críticos W para o teste de Wilcoxon para amostras pequenas extraído de [Lowry, 2012]
Grau de cansaço no desenvolvimento dos serviços Web semânticos
Grau de contribuição da ferramenta para o desenvolvimento dos serviços
Web semânticos
Grau de dificuldade em criar o serviço Web
88
2.1
2.2
2.3
6.3
6.4
6.5
22
25
27
30
33
34
37
38
40
89
90
91
91
6.6
6.7
6.8
Grau de dificuldade em criar a ontologia do serviço Web
Recursos oferecidos pelas ferramentas avaliadas
Contribuição para o desenvolvimento do serviço Web semântico
92
92
93
7.1
7.2
7.3
7.4
Ferramenta OWL-S Editor
Arquitetura da ferramenta CODE - extraído de [Srinivasan et al., 2005]
Ferramenta ASSAM - extraído de [Heß et al., 2004]
Abordagem de Yang e Chung para construção de serviços Web semânticos - extraído de [Yang and Chung, 2006b]
Abordagem de Kim e Lee para construção de serviços Web semânticos extraído de [Kim and Lee, 2007]
96
97
99
7.5
100
101
A.1
Transformação em XSLT
119
B.1
Elementos do WSDL 1.1
128
F.1
Exemplo de quadrado latino de tamanho 4
158
Lista de Tabelas
21
2.1
Mudanças das características da Web semântica
3.1
3.6
3.7
Mapeamento entre UML e os principais conceitos das linguagens para
especificação de ontologias
Mapeamento entre o elemento owl:Ontology e a UML
Mapeamento entre as construções de classes OWL e a UML
Mapeamento entre o elemento owl:Restriction e a UML
Mapeamento entre os elementos owl:ObjectProperty e owl:DatatypeProperty
e a UML
Mapeamento entre alguns elementos da OWL e a UML
Mapeamento dos tipos de dados do Schema XML e a UML
6.1
6.2
6.3
6.4
6.5
6.6
6.7
Distribuição dos Blocos
Réplica l
Réplica 2
Réplica 3
Réplica 4
Resultados obtidos na execução do experimento controlado
Cálculo do teste estatístico de Wilcoxon
7.1
Comparação entre os trabalhos relacionados
3.2
3.3
3.4
3.5
44
46
47
47
48
48
49
85
85
85
86
86
87
89
101
Lista de Códigos de Programas
2.1
2.2
2.3
2.4
2.5
A.1
A.2
A.3
B.1
B.2
B.3
B.4
B.5
B.6
Descrição em RDF/XML das afirmações sobre Eric Miller - extraído de
[Manola and Miller, 2004]
Declaração do cabeçalho de um documento OWL
Declaração de uma classe e suas propriedades em OWL
Instância da classe Regime
Exemplo de uma transformação QVT
Mensagem SOAP
XSLT para a mensagem SOAP
Documento
Exemplo de Mensagem SOAP de Resposta
Exemplo de Mensagem SOAP de Requisição
Definição do tipo complexo subscribeBurdenAssyncService
Definição do elemento message
Definição do elemento portType
Definição do elemento binding
23
26
28
29
41
120
121
122
125
126
127
130
130
131
CAPÍTULO 1
Introdução
Serviços Web [Alonso et al., 2004] fornecem meios para comunicação entre
diferentes sistemas de software em diferentes plataformas, tornando-se um paradigma
efetivo da computação distribuída na Internet. Entretanto, apesar dos esforços da W3C
(World Wide Web Consortium) em padronizar as tecnologias utilizadas pelos serviços
Web, a fim de facilitar a interoperabilidade, o uso desses serviços, em muitas situações,
necessita da intervenção humana, uma vez que os serviços Web carecem da definição
semântica da interface dos seus serviços. Por exemplo, no processo de busca por serviços
relevantes que podem ser combinados para atender a uma determinada aplicação. Outro
exemplo que evidencia a ausência de definição semântica dos serviços Web é o UDDI
(Universal Description Discovery and Integration) [Bloehdorn and Moschitti, ], que não
utiliza semântica para descrição dos serviços e seu uso é praticamente desnecessário,
uma vez que, em geral, as aplicações invocam diretamente os arquivos WSDL (Web
Service Definition Language) [Christensen et al., 2001] em detrimento à utilização de
APIs (Application Programm Interface) baseadas em palavra-chave que realizam busca
sintáticas no UDDI. Os resultados dessas buscas são passíveis de ambiguidade. Já os
arquivos WSDL somente descrevem a interface dos serviços, ou seja, fornecem uma
descrição sintática, e informações úteis para composição e interoperação entre serviços
Web, ou seja, as informações semânticas não são fornecidas, como por exemplo, o
comportamento do serviço e sua relação com elementos de uma ontologia.
Para preencher essa lacuna surgiram os serviços Web semânticos
[McIlraith et al., 2001], que tratam a questão da definição semântica dos serviços através
do uso de ontologias. As ontologias proporcionam uma descrição do serviço interpretável
computacionalmente através da associação dos elementos do serviço Web com os conceitos definidos em uma ontologia. Os serviços Web semânticos são um prolongamento
da Web semântica [Berners-Lee et al., 2001] para os serviços Web de forma a facilitar a
automatização da descoberta, publicação, mediação, invocação e composição de serviços.
O desenvolvimento de um serviço Web semântico ocorre, basicamente, em duas etapas:
(i) o desenvolvimento do serviço Web e (ii) a criação da ontologia ou descrição semântica
do serviço Web. A ontologia do serviço Web pode utilizar conceitos definidos em outras
14
ontologias como, por exemplo, ontologias para um domínio específico.
Existem várias linguagens que permitem se descrever semanticamente serviços Web utilizando ontologias. Alguns exemplos são OWL-S (Ontology Web Language for Services) [Burstein et al., 2004], WSMO (Web Service Modelling Ontology)
[de Bruijn et al., 2005], WSDL-S (Web Service Semantics) [Akkiraju et al., ] e SAWSDL
(Semantic Annotations for WSDL and XML Schema) [Kopecký et al., 2007]. Essas linguagens apresentam sintaxes distintas, um vocabulário muito extenso e a grande maioria
são baseadas em lógica descritiva ou de primeira ordem. As ferramentas existentes que
apóiam sua utilização levam ao usuário muitos detalhes que as tornam difíceis de serem
manipuladas.
A adoção de descrições semânticas dos serviços Web esbarra nas limitações das
ferramentas e no fato de que criar ontologia demanda tempo e é difícil de ser realizada,
conforme Missikoff [Missikoff et al., 2002] ressalta em seu trabalho. As ferramentas
atuais para a criação da descrição semântica de serviços Web foram projetadas para serem
utilizadas por especialistas da Web semântica, pois seus usos requerem o conhecimento
de muitos conceitos desta área. Brambilla et al. [Brambilla et al., 2007] argumentam que
o maior obstáculo para a ampla adoção dos serviços Web semânticos é a dificuldade
em descrever aplicações Web com tecnologias semânticas. Portanto, para se explorar os
serviços Web semânticos é preciso haver ferramentas que abstraiam detalhes específicos,
relativos a cada linguagem de descrição semântica, que normalmente demandam muito
tempo para a total compreensão e, não deveria demandar tanto tempo quanto a de
implementação da regra de negócio do serviço Web.
Em virtude dos benefícios que os serviços Web semânticos oferecem, as abordagens empregadas pelas ferramentas atuais devem ser repensadas em direção a novas
abordagens que ofereçam um maior nível de abstração sobre a sintaxe das linguagens.
Neste sentido, [Chafle et al., 2007] e [Fonseca et al., 2009] propuseram alguns requisitos
essenciais para o desenvolvimento de uma ferramenta para compor serviços Web. Alguns
destes requisitos podem ser adaptados para uma ferramenta de alto nível de abstração para
a criação de serviços Web semânticos. Estes requisitos adaptados, juntamente com novos
requisitos podem formar um conjunto mínimo de requisitos para uma ferramenta para
criação de serviços Web semânticos acessível a um público maior do que aquele formado
por especialistas da Web semântica.
Os requisitos mínimos de uma ferramenta para criação de serviços Web semânticos devem definir abordagens para abstrair as tecnologias subjacentes usadas no desenvolvimento de serviços Web semânticos, isto é, as tecnologias usadas na especificação
das interfaces dos serviços Web e nas suas ontologias. Também, por se tratar de uma ferramenta de alto nível de abstração, faz-se necessário a especificação de requisitos sobre
a automatização da geração de artefatos de código, pois se deseja abstrair as linguagens
15
envolvidas na criação de serviços Web semânticos. Os requisitos devem prever a integração das funcionalidades necessárias para criação de serviços Web semânticos, sem que
haja a necessidade do usuário usar recursos externos à ferramenta, de forma a diminuir o
tempo de desenvolvimento dos serviços Web semânticos, evitar erros e possíveis conflitos
gerados quando se usa diferentes ferramentas/aplicativos como, por exemplo, conflitos de
versões das linguagens de especificação da interface do serviço Web ou da ontologia do
serviço Web.
Para atender os requisitos mínimos de uma ferramenta para criação de serviços
Web semânticos, o Desenvolvimento de Software Dirigido por Modelos (Model Driven
Development - MDD) [Stahl and Völter, 2006] pode ser utilizado para gerenciar a complexidade inerente do emprego de ontologias para especificação de serviços Web semânticos, pois MDD é uma abordagem de desenvolvimento de software que está centrada na
criação de modelos, em vez de código de programa, permitindo separação de interesses
entre especificação e implementação. Usando-se uma abordagem MDD é possível prover
abstração das tecnologias subjacentes aos serviços Web semânticos através de modelos.
No contexto do MDD a linguagem de modelagem UML (Unified Modeling Language) é amplamente usada para modelagem de sistemas de software e também para
criação de modelos em abordagens MDD. A linguagem UML e as linguagens de especificação de ontologias têm algumas sobreposições e semelhanças, especialmente para
representação estrutural de um software. Alguns elementos das duas linguagens são semelhantes como, por exemplo, classes, associações entre classes, propriedades de classes, generalizações e tipos de dados. Estas semelhanças tornam possível o mapeamento
de alguns elementos das linguagens de especificação de ontologias em elementos de um
modelo UML [Atkinson et al., 2006, Pondrelli, 2005]. Outros elementos das linguagens
de especificação de ontologias que não correspondem diretamente aos elementos primários da linguagem UML podem ser representados com o uso de perfis UML. Um perfil
UML consiste em uma coleção de extensões que personalizam a UML para um domínio
específico. O uso de perfis UML é altamente alinhado à proposta da MDD, pois os perfis
UML definem uma versão especializada da UML para um determinado domínio. Logo,
os modelos criados a partir de perfis UML são modelos UML válidos e podem utilizar as
mesmas ferramentas para modelagem em UML.
Este trabalho apresenta o AutoWebS (Automatic Generation of Semantic Web
Services), uma ferramenta baseada no desenvolvimento dirigido por modelos (MDD Model Driven Development [Stahl and Völter, 2006]) para criação de serviços Web semânticos. O AutoWebS oferece um ambiente gráfico onde é possível importar ontologias
especificadas na linguagem OWL (Web Ontology Language) [Dean and Schreiber, 2004]
e representá-las graficamente utilizando elementos definidos em um perfil UML (Unified
Modeling Language). Estes elementos servem para que a interface de um serviço Web
1.1 Objetivos
16
possa ser modelada. Dessa forma, abstrai-se dos desenvolvedores a sintaxe e algumas
construções da linguagem OWL, tais como especificações de relações entre propriedades e definições de indivíduos, que são desnecessárias para a criação de serviços Web
semânticos.
O AutoWebS integra, em um único ambiente, várias funcionalidades que um
desenvolvedor precisa para modelar, implementar, compilar e fazer o deploy de um
serviço Web semântico. No ambiente oferecido pelo AutoWebS é possível: (i) modelar
a interface do serviço Web, isto é, modelar os inputs e outputs de cada operação do
serviço Web, (ii) realizar as anotações semânticas, ou seja, associar os inputs e outputs
das operações com os elementos de uma ontologia, (iii) criar automaticamente o arquivo
OWL-S que contém a descrição semântica do serviço Web, (iv) gerar automaticamente
o código fonte do serviço Web modelado, (v) estender a funcionalidade da ferramenta
como, por exemplo, incluir suporte a outra linguagem de descrição semântica, com a
inserção de novos plugins. Para a implementação da ferramenta é utilizado o ambiente
Eclipse, juntamente com o EMF (Eclipse Modeling Framework) [Steinberg et al., 2008]
para especificação em Ecore do metamodelo da linguagem OWL- S. O perfil UML define
alguns estereótipos e propriedades para os elementos do diagrama de classes da UML 2.0.
A transformação entre os modelos é realizada através de regras definidas na linguagem
QVT (Query/View/Transformation) [Object Management Group, 2008]. Enquanto que,
para importação da ontologia de domínio, são usadas regras definidas na linguagem XSLT
(XSL Transformations) [w3c, 1999]. Para a transformação de modelo para texto é usado
o Acceleo [Obeo Network, 2007], para geração do código fonte do serviço Web usamos
o middleware Axis2 da Apache [Perera et al., 2006].
1.1
Objetivos
O objetivo principal desse trabalho é a especificação e o desenvolvimento de
uma ferramenta para criação de serviços Web semânticos. Esta ferramenta, chamada
de AutoWebS, deve implementar uma abordagem MDD, com o uso de um conjunto
de estereótipos definidos em perfil UML, um metamodelo para linguagem OWL-S e
transformações automatizadas entre modelos. O AutoWebS deve oferecer um ambiente
gráfico que recebe como entrada uma ontologia de domínio, especificada na linguagem
OWL, e fazer sua transformação para elementos predefinidos em um perfil UML. Neste
ambiente gráfico deve ser possível modelar a interface do serviço Web utilizando os
elementos da ontologia de domínio importada. Desta forma, após a modelagem do serviço
Web, deve ser aplicado um conjunto de regras de transformações para criação automática
da descrição semântica do serviço Web na linguagem OWL-S e, também, para geração
do código fonte do serviço Web.
1.2 Estrutura do Documento
17
Para alcançar o objetivo principal deste trabalho são necessários os seguintes
objetivos específicos:
• Especificar um perfil UML que torne possível a modelagem e representação da interface de serviços Web, bem como a representação de elementos de uma ontologia
OWL que são necessários para criação de um serviço Web semântico;
• Elaborar regras de transformações XSLT para transformar os elementos de uma
ontologia OWL que são necessários para criação de serviços Web semânticos, em
elementos da UML;
• Elaborar um metamodelo em Ecore para a linguagem OWL-S;
• Implementar transformação Modelo para Modelo (M2M) na linguagem QVT para
transformar um modelo UML em um modelo correspondente ao metamodelo
OWL-S;
• Implementar transformação Modelo para Texto (M2T) para que, a partir de um
modelo OWL-S, criar-se um arquivo OWL-S;
• Ilustrar o uso do AutoWebS através de um estudo de caso que consiste na criação
de serviços Web semânticos para os serviços providos por sistemas de middleware
de provisão de contexto que não utilizam a tecnologia de serviços Web;
• Avaliar a ferramenta através de um experimento controlado que confronta o uso
do AutoWebS em relação a uma suíte de aplicativos composta pelo OWL-S Editor
[Elenius et al., 2005] um plugin do software Protégé [Noy et al., 2000] que é amplamente utilizado para criação de ontologias OWL-S, e o plugin Axis2 da IDE
Eclipse, usado para criar serviços Web.
• Validar as descrições semânticas de serviços Web geradas pelo AutoWebS através
da aplicação de validadores sintáticos para a linguagem OWL-S;
1.2
Estrutura do Documento
Este trabalho está estruturado da seguinte forma: O Capítulo 2 apresenta as
tecnologias dos serviços Web, Web semântica e Desenvolvimento de Software Dirigido
por Modelos, que são usadas no desenvolvimento desse trabalho; o Capítulo 3 apresenta
a similaridade entre as linguagens de especificação de ontologias e a linguagem de
modelagem UML, apresentando o mapeamento entre a linguagem OWL e a UML; o
Capítulo 4 apresenta a ferramenta AutoWebS, detalhando sua arquitetura, implementação
e funcionamento; o Capítulo 5 apresenta um estudo de caso que usa a ferramenta; o
Capítulo 6 apresenta um experimento controlado que avalia a ferramenta AutoWebS;
o Capítulo 7 cita os trabalhos relacionados; por fim, no Capítulo 8 são descritas as
considerações finais e a conclusão.
1.2 Estrutura do Documento
18
O Apêndice A apresenta a linguagem XSL Tranformation, usada para converter
documentos XML em outro documento XML ou textual; o Apêndice B apresenta as tecnologias SOAP, WSDL, UDDI e Apache Axis2 usadas pelos serviços Web; o Apêndice C
traz a transformação XSLT; o Apêndice D demonstra o mapeamento QVT; e o Apêndice E
traz os questionários usados na condução do experimento controlado. O Apêndice F traz
uma breve explicação do modelo experimental Quadrado Latino.
CAPÍTULO 2
Fundamentação Teórica
Este capítulo descreve sucintamente as principais tecnologias usadas nesse trabalho. As tecnologias formam a fundamentação teórica para o trabalho e são apresentadas
da seguinte forma: a seção 2.1 discorre a respeito das principais tecnologias usadas pelos
serviços Web e apresenta o middleware para serviços Web da Apache Axis2; a seção 2.2
apresenta a Web Semântica, com enfoque para o framework RDF, também são apresentados os conceitos de ontologias e a linguagem OWL, por fim são apresentados os serviços
Web semânticos; a seção 2.3 apresenta a ontologia OWL-S que é utilizada para descrição
dos serviços Web; a seção 2.4 contém uma rápida descrição das tecnologias do contexto
do Desenvolvimento de Software Dirigido por Modelos (MDD) utilizadas neste trabalho.
2.1
Serviço Web
A W3C define serviço Web [Alonso et al., 2004] como uma tecnologia que provê
meios para comunicação entre diferentes sistemas de software em diferentes plataformas.
Os serviços Web são serviços distribuídos que processam mensagens SOAP (Simple Object Access Protocol) [Mitra, 2003] codificadas em um arquivo XML, mandadas através de protocolos da Internet como, por exemplo, HTTP (Hypertext Transfer Protocol)
e POP (Post Office Protocol). Os serviços Web são descritos em WSDL (Web Services
Description Language) e, normalmente, são registrados em um repositório UDDI (Universal Description Discovery and Integration) para que aplicações possam localizá-las,
conforme ilustrado na Figura 2.1.
O apêndice B apresenta as tecnologias SOAP, WSDL, UDDI e o framework da
Apache Axis2, usadas para construção de serviços Web.
2.2
Web Semântica
A Web semântica [Berners-Lee et al., 2001] propõe a estruturação semântica do
conteúdo da Web a partir da atribuição de um significado a cada elemento publicado na
2.2 Web Semântica
20
Figura 2.1: Arquitetura de um serviço Web - retirado de
[Wikipedia, 2011]
Internet de forma a tornar possível o seu entendimento, tanto pelo humano quanto pelo
computador. A Web Semântica estende a Web tradicional, baseada em redes de hiperlinks,
adicionando metadados1 sobre os conteúdos e como eles estão relacionados.
Para prover a estruturação semântica do conteúdo da Internet, a Web semântica
utiliza três principais tecnologias: XML; esquemas sintáticos; e ontologias; conforme ilustrado na Figura 2.2. A primeira tecnologia é a metalinguagem XML, que torna possível
estruturar e organizar conteúdos na Internet de forma customizada através de marcações.
A segunda tecnologia tem como propósito atribuir sentido lógico as informações. Sobre
estas informações aplicam-se esquemas sintáticos como, por exemplo, RDF (Resource
Description Framework) que é um modelo de representação para fazer em XML afirmações a respeito dos recursos disponíveis na Web. A terceira principal tecnologia são as
ontologias, utilizadas para explicitamente representar e definir os conceitos e suas interrelações em domínio.
Figura 2.2: Principais tecnologias da Web semântica
Existem uma série de mudanças em algumas características da Web tradicional
1 dados
estruturados que descrevem a característica de um recurso
2.2 Web Semântica
21
em relação à Web semântica, devido a descrição formal dos conceitos, termos e relações
dos elementos da Web. Sollazzo et al.[Sollazzo et al., 2002] sintetizam algumas dessas
mudanças, representadas na Tabela 2.1.
Características
Mudanças
Web Tradicional
Web Semântica
Serviços Web
Simples
Composto
Requisitante
Humanos
Agentes de software
Broker
Principal entidade Apenas um facilitador
Descrição do serviço Taxonomia
Ontologia
Elementos descritivos Fechados
Abertos
Troca de mensagens
Estrutura sintática Estrutura semântica
Tabela 2.1: Mudanças das características da Web semântica
A Web semântica permite a descrição mais rica dos serviços Web sendo que o
papel fundamental do broker pode desaparecer. Ele ainda pode ser viável como motor de
pesquisa para serviços Web, mas ele vai perder o seu papel fundamental de repositório
para registro de serviços e documentos, porque com a Web semântica qualquer pessoa
pode publicar descrições semânticas de seus serviços ou dados para que outras possam
encontrá-los. Na Web semântica, agentes inteligentes assumem o papel de solicitante
de serviços Web ao invés do usuário humano e serviços podem ser obtidos a partir da
composição de outros serviços.
As tecnologias que compõem os pilares da Web semântica são apresentadas nas
próximas subseções.
2.2.1
RDF e RDF Schema
RDF (Resource Description Framework) [Lassila et al., 1998] é uma linguagem
que oferece um modelo de representação para fazer em XML afirmações a respeito dos
recursos disponíveis na Web. RDF é usado para representar metadados dos recursos
disponíveis na Web a partir de afirmações.
Cada afirmação em RDF é formada por uma tripla sujeito-predicado-objeto,
onde o sujeito representa um determinado recurso, que pode ser qualquer coisa que
contenha um URI (Uniform Resource Identifier), incluindo as páginas da Web assim
como elementos de um documento XML, figuras, serviços, etc. O predicado representa
aspectos, características ou propriedade do recurso e expressa uma relação entre o
sujeito e o objeto.
Para exemplificar o poder de expressividade da RDF considere a seguinte exemplo, retirado da W3C Recommendation [Manola and Miller, 2004].
2.2 Web Semântica
22
“there is a Person identifi ed byhttp://www.w3.org/People/EM/contact#me,
whose name is Eric Miller, whose email address is [email protected], and whose
title is Dr.”
Esta afirmação pode ser também visualizada como um grafo RDF, conforme ilustrado na
Figura 2.3.
Figura 2.3: Exemplo de um grafo em RDF - ilustração retirada de
[Manola and Miller, 2004]
Na afi rmação ilustrada na Figura2.3 é possível identifi car que osujeito RDF
é o recurso
"http://www.w3.org/People/EM/contact#me", ou seja, um URI. O sujeito RDF possui um tipo Person que está definido no URI
htt p : //www.w3.org/2000/10/swap/pim/contact#Person. Esta afirmação relaciona alguns objetos:
Eric Miller que possui o predicado "whose name is";
[email protected] com o predicado "whose email address is";
Dr. com o predicado "whose title is".
Os predicados da afirmação estão associados às seguintes URIs:
whose name is http://www.w3.org/2000/10/swap/pim/contact#fullName
whose email address is http://www.w3.org/2000/10/swap/pim/contact#mailbox
whose title is http://www.w3.org/2000/10/swap/pim/contact#personalTitle
2.2 Web Semântica
23
Desta forma, utilizando as URIs, podemos expressar as seguintes triplas RDFs:
• http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#fullName,
Eric Miller
• http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#personalTitle, Dr.
• http://www.w3.org/People/EM/contact#me,
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,
http://www.w3.org/2000/10/swap/pim/contact#Person
• http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#mailbox,
[email protected]
Para armazenar e compartilhar as afirmações descritas em RDF, é usado uma
linguagem baseada em XML chamada de RDF/XML. O trecho de Código 2.1 demonstra
em RDF/XML o grafo correspondente a Figura 2.3.
Código 2.1 Descrição em RDF/XML das afirmações sobre Eric Miller - extraído de
[Manola and Miller, 2004]
1
<?xml version="1.0"?>
2
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3
xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#">
4
5
<contact:Person rdf:about="http://www.w3.org/People/EM/contact#me">
6
<contact:fullName>Eric Miller</contact:fullName>
7
<contact:mailbox rdf:resource="mailto:[email protected]"/>
8
<contact:personalTitle>Dr.</contact:personalTitle>
9
</contact:Person>
10
11
</rdf:RDF>
O objetivo da RDF é definir um mecanismo para descrição de recursos que não faça
nenhuma suposição ou premissa sobre o domínio de uma aplicação. Desta forma, modelos
RDF podem ser reutilizados para vários domínios. O Schema RDF define um modelo
orientado a objeto para os tipos de dados em RDF através da definição dos conceitos de
classes, relações entre classes e propriedades.
As classes definidas no Schema RDF podem ser organizadas em uma hierarquia,
semelhante a sistemas orientados a objeto. O Schema RDF suporta herança múltipla e a
maior diferença entre ele e linguagens orientadas a objeto é que todas as classes em RDF
2.2 Web Semântica
24
podem ser sobrepostas. A herança múltipla permite também que instâncias mudem seus
tipos durante seu ciclo de vida.
As propriedades RDF são entidades autônomas que podem ser definidas de
forma independente de uma classe específica. As propriedades RDF podem ser utilizadas
em várias outras classes. Isto faz com que seja possível reutilizar a mesma propriedade
em vários arquivos. Para associar uma propriedade a uma classe é utilizado a declaração
rdfs:domain, uma tag do namespace do Schema RDF.
RDF define os tipos de dados a partir de um Schema XML. Alguns valores dos
tipos de dados são xsd:string e xsd:float. É possível limitar os tipos que um valor de
uma propriedade pode ter usando a declaração rdfs:range. Uma propriedade pode assumir
valores definidos em um Schema XML ou uma classe. Propriedades que possuem classes
podem ser comparadas a relacionamentos em linguagens orientadas a objeto.
O Schema RDF define uma linguagem de modelagem de domínio similar a
linguagens orientadas a objetos. RDF é útil para muitos propósitos, porém em alguns
domínios a expressividade do Schema RDF é insuficiente. Por exemplo, RDF não pode
expressar restrições de cardinalidade, desta forma, no grafo RDF ilustrado na Figura 2.3,
um tipo Person pode ter somente um mailbox.
Devido as restrições de RDF e do Schema RDF, eles não são suficientes para
implementar a Web semântica. Desta forma, algumas linguagens, dentre elas a OWL,
estenderam o Schema RDF e adicionaram mecanismos para expressar mais informações
a respeito de características das propriedades, classes e relações entre classes.
2.2.2
Ontologia
Ontologia é um modelo de dados que representa um conjunto de conceitos e
os relacionamentos entre estes dentro de um domínio. Normalmente é criado a partir do
conhecimento de especialistas do domínio e é usado para realizar inferência sobre os indivíduos, classes, atributos e relacionamentos deste domínio. Para (Bruijn [de Bruijn, 2003]
apud Uschold [Uschold and Grüninger, 1996]): “as ontologias fornecem uma maneira
uniforme para a especificação de conceitos chave ou fundamentais, bem como uma quantidade arbitrária de subconceitos e fatos, em conjunto permitindo o compartilhamento e
reutilização de conhecimento contextual em um sistema de computação”. Assim, uma
ontologia define um vocabulário comum para pesquisadores que compartilham informações em um domínio, propicia o reuso do conhecimento deste domínio além de explicitar hipóteses e separar o conhecimento do domínio do conhecimento operacional
[Natalya Fridman Noy, 2001, Tiago Semprebom and Mendonça, 2007].
Segundo Clark [Clark, 1999], ontologia é a materialização do nível do conhecimento. O uso de ontologias é mais visível em aplicações de inteligência artificial, enge-
2.2 Web Semântica
25
nharia de software e sistemas de informação, porém ela pode ser utilizada em qualquer
aplicação que necessite representar e estruturar conhecimento ou a interoperabilidade entre sistemas incompatíveis como, por exemplo, na integração de bases de dados heterogêneas, uma vez que as ontologias não tem dependência com os modelos de dados.
Ontologias são especificadas em linguagens expressivas e com semântica bem
definida, passíveis de inferência. A W3C (World Wide Web Consortium) desenvolve um
conjunto de linguagens que têm como objetivo principal promover a interoperabilidade
entre aplicações na Web. Dentre essas linguagens a OWL (Web Ontology Language) é
utilizada para representar ontologias na Web.
2.2.3
OWL
OWL (Web Ontology Language) [Dean and Schreiber, 2004] é uma linguagem
baseada nas linguagens DAML (DARPA Agent Markup Language) e OIL (Ontology
Inference Layer ou Ontology Interchange Language) e surgiu dos esforços da união de
dois grupos. A linguagem OIL é uma evolução da RDF e foi desenvolvida por um grupo
Europeu, no escopo do projeto IST OntoKnowledge. A linguagem DAML é uma extensão
da RDF e foi desenvolvido por um grupo nos Estados Unidos, financiado pela US Defense
Advanced Research Projects Agency.
OWL subdivide-se em três linguagens ou dialetos que se diferem pelo nível
de expressividade que representam, conforme a Figura 2.4 ilustra. A OWL-Lite é a
linguagem menos expressiva e destina-se as situações em que apenas são necessárias
restrições e uma hierarquia de classes simples. A OWL-Full é a mais expressiva e
apropriada para situações onde alta expressividade é mais importante do que garantir
a decidibilidade ou completeza da linguagem, pois não é possível realizar inferências.
A expressividade da OWL-DL está entre as duas, ela é baseada em lógica descritiva,
um fragmento de Lógica de Primeira Ordem, passível, portanto de raciocínio automático
[Horridge et al., 2004].
Figura 2.4: Dialetos da OWL
A OWL-DL é constituída de três elementos básicos:
2.2 Web Semântica
26
Indivíduos representam objetos no domínio de interesse. São instâncias de uma determinada classe;
Propriedades são relações binárias entre os indivíduos do domínio de interesse. As
propriedades especificam características das classes e podem possuir capacidades
lógicas tal como transitividade, simetria, inversão e funcional.
Classes são conjuntos que contêm os indivíduos e são construídas a partir de descrições,
as quais especificam as condições que devem ser satisfeitas por um individuo para
que ele possa ser um membro da classe.
As propriedades podem ser do tipo Object Properties, DataType Properties e
Annotation Property. Propriedades do tipo Object Properties conectam um indivíduo
a outro indivíduo, as propriedades DataType Properties definem uma relação entre um
indivíduo e um tipo de dado definido em um Schema XML ou a um literal definido no
Schema RDF. As propriedades Annotation Property associam um indivíduo a um valor
específico.
Um documento OWL inicia-se com a declaração do seu cabeçalho. O cabeçalho
é delimitado pelo elemento <owl:Ontology> e especifica algumas informações a respeito
do autor e a versão do documento. O trecho de Código 2.2 demonstra a sintaxe de um
cabeçalho OWL.
Código 2.2 Declaração do cabeçalho de um documento OWL
1
<?xml version="1.0"?>
2
<rdf:RDF
3
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4
xmlns="http://www.example.org/owls/OilMonitor.owl#"
5
xmlns:owl="http://www.w3.org/2002/07/owl#"
6
xmlns:dc="http://purl.org/dc/elements/1.1/"
7
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
8
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
9
xml:base="http://www.example.org/owls/OilMonitor.owl">
10
<owl:Ontology rdf:about="">
11
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
12
13
Comentario</rdfs:comment>
<dc:creator rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
14
15
Autor</dc:creator>
</owl:Ontology>
16
17
...
18
</rdf:RDF>
2.2 Web Semântica
27
Para efeito de ilustração considere duas classes OWL, Regime e Change, que
estão associadas por uma propriedade do tipo Object Property, chamada hasRegime. A
Figura 2.5 ilustra este caso.
Figura 2.5: Relação entre classes OWL
O Código 2.3 ilustra a declaração da classe Regime, de uma propriedade do tipo
Object Property que tem como domínio instâncias da classe Change e valores possíveis
instâncias da classe Regime. Também é possível visualizar a definição das propriedades
stemSize, burdenValue, cpmValue e idRegime, todas do tipo Datatype Property.
2.2 Web Semântica
28
Código 2.3 Declaração de uma classe e suas propriedades em OWL
1
...
2
...
3
<owl:Class rdf:ID="Regime"/>
4
5
<owl:ObjectProperty rdf:ID="hasRegime">
6
<rdfs:domain rdf:resource="#Change"/>
7
<rdfs:range rdf:resource="#Regime"/>
8
</owl:ObjectProperty>
9
10
<owl:DatatypeProperty rdf:ID="stemSize">
11
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
12
<rdfs:domain rdf:resource="#Regime"/>
13
</owl:DatatypeProperty>
14
<owl:DatatypeProperty rdf:ID="burdenValue">
15
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
16
<rdfs:domain rdf:resource="#Regime"/>
17
</owl:DatatypeProperty>
18
<owl:DatatypeProperty rdf:ID="cpmValue">
19
<rdfs:domain rdf:resource="#Regime"/>
20
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
21
</owl:DatatypeProperty>
22
<owl:DatatypeProperty rdf:ID="idRegime">
23
<rdfs:domain rdf:resource="#Regime"/>
24
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
25
</owl:DatatypeProperty>
26
...
27
...
O Código 2.4 ilustra a declaração de uma instância da classe Regime. Esta instância é
identificada por Regime_5.
2.3 OWL-S
29
Código 2.4 Instância da classe Regime
1
...
2
<Regime rdf:ID="Regime_5">
3
4
5
6
7
8
9
<stemSize rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
25</stemSize>
<burdenValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
59</burdenValue>
<idRegime rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
5</idRegime>
<cpmValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
10
50</cpmValue>
11
</Regime>
12
...
2.2.4
Serviços Web Semânticos
Os serviços Web utilizam mensagens SOAP para se comunicarem com os
clientes. As mensagens SOAP são documentos XML descritos por Schemas XML e
encapsulam os inputs e outputs das operações do serviço Web. Entretanto, no nível
semântico, os inputs e outputs de um serviço Web são descritos utilizando-se ontologias.
Desta forma, um cliente de um serviço Web semântico precisa obter informações que
descrevem como um determinado dado pode ser escrito em um documento XML que será
enviado para o serviço e como um documento XML, advindo do serviço Web semântico,
que pode ser interpretado semanticamente.
Os serviços Web semânticos utilizam ontologias para descrever seus serviços.
Neste sentido, os mecanismos oferecidos pela OWL para criação de ontologias, podem
ser reutilizados para os serviços Web. Desta forma, a linguagem OWL-S utiliza os mecanismos da OWL e adicionam outros, como por exemplo, um conjunto de conceitos
para descrição de serviços, para formar um framework que permite a inserção de semântica aos serviços Web de forma a tornar possível o descobrimento, execução e composição de serviços. OWL-S consiste de três subontologias conhecidas por Serviceprofile,
ServiceModel e ServiceGrounding.
2.3
OWL-S
OWL-S é uma ontologia baseada em OWL para descrever semanticamente serviços Web, permitindo aos usuários e agentes de software automaticamente descobrir,
invocar, compor e monitorar os recursos da Web que oferecem serviços, sob restrições
2.3 OWL-S
30
especificadas, por intermédio de uma descrição formal das suas propriedades e capacidades [Burstein et al., 2004]. O último release da especificação OWL-S é a versão 1.2, de
dezembro de 2008. Entretanto, este documento apresenta a versão 1.1 que é compatível
com o WSDL 1.1, usado neste trabalho.
A ontologia OWL-S consiste de três inter subontologias, ServiceProfile,
ServiceModel e ServiceGrounding. A ontologia ServiceProfile é usada para expressar ”o que o serviço faz“, para fi ns de publicidade, construção de requisições do
serviço, e matchmaking2 ; a ontologia ServiceModel descreve ”como funciona“, para
permitir a invocação, a criação, composição, monitoramento e recuperação; e, por fi m,
a ontologia ServiceGrounding define os mapeamentos entre as construções da ontologia ServiceModel com as especificações detalhadas dos formatos de mensagens, protocolos, entre outros, expressos no arquivo WSDL. A ontologia ServiceGrounding
pode ser vista como a cola entre as descrições semântica (ontologia) e sintática (WSDL)
[Davies et al., 2006].
Todas as subontologias estão ligados ao conceito de nível superior Service,
que serve como um ponto de referência organizacional para declarar serviços Web e
sempre que um serviço é declarado, uma instância do conceito de Service é criada. A
Figura 2.6 ilustra a relação entre as subontologias e as propriedades presents, describedBy,
e supports de Service.
Figura 2.6: Subontologias
da
OWL-S
[Burstein et al., 2004]
-
extraído
de
Cada instância de Service apresenta (presents) uma descrição ServiceProfi le,
é descrita (describedBy) pela subontologia ServiceModel e suporta (supports) uma
descrição ServiceGrounding.
2 Processo
de busca dos possíveis casamentos entre demandas/requisições e ofertas/serviços, em um
dado domínio de aplicação.
2.3 OWL-S
2.3.1
31
Service Profile
Na subontolgia ServiceProfile a classe ServiceProfile é uma superclasse para
todos os tipos de descrições em alto nível a respeito do serviço. Esta classe contém
as informações básicas necessárias para vincular qualquer instância de Profile, uma
subclasse da subontologia ServiceProfile, com uma instância de Service. O serviço,
definido através de Profile, é modelado em termos de três tipos de informações, detalhados
em seguida:
• As informações da organização que provê o serviço, constituindo-se de informações de contato que se refere à entidade que fornece o serviço. Por exemplo, informações de contato podem se referir ao operador de manutenção, que é responsável
pela execução do serviço, ou para um representante do cliente que podem fornecer
informações adicionais sobre o serviço [Burstein et al., 2004].
• A descrição da funcionalidade do serviço é expressa em termos da transformação
produzida pelo serviço. A descrição funcional inclui as entradas (inputs) requeridas
pelo serviço e as saídas (outputs) geradas; as pré-condições (precondition) requisitadas pelos serviços e os efeitos (effects) esperados da execução do serviço. Por
exemplo, um serviço de vendas pode exigir como pré-condição (precondition) um
cartão de crédito válido e como entrada (input) o número do cartão de crédito e data
de validade. Como saída (output) ele gera um recibo, e como efeito (effect) o cartão
é debitado [Burstein et al., 2004].
• O primeiro tipo de informação especifica a categoria de um determinado serviço,
por exemplo, a categoria do serviço dentro do sistema de classificação de produtos
e serviços para uso em eCommerce. O segundo tipo de informação é a classificação da qualidade do serviço, por exemplo, bom, ruim, tempo de resposta rápido,
confiável, taxa de atualização pequena. O último tipo de informação é uma lista de
parâmetros do serviço que pode conter qualquer tipo de informação, por exemplo,
parâmetros que fornecem uma estimativa do tempo de resposta máximo, a disponibilidade geográfica de um serviço [Burstein et al., 2004]. A classe Profile fornece
um mecanismo para representar tais parâmetros.
As informações que especificam as características do serviço podem ser úteis em
situações em que o solicitante do serviço pretende verificar a qualidade do serviço. Um
serviço pode ter suas informações publicadas em sistemas de classificação de forma que
sua ”qualidade” possa ser publicada. Neste caso, o solicitante do serviço pode usar essa
informação, contida no sistema de classificação, para verificar se o serviço é útil ou não
para a sua necessidade.
A classe Profile contém a especificação de quais funcionalidades o serviço
oferece e as condições que devem ser satisfeitas para sua execução. As funcionalidades e
2.3 OWL-S
32
as condições são representadas a partir de dois aspectos do serviço:
• a transformação da informação (representado por inputs e outputs);
• e a mudança de estado produzido pela execução do serviço (representado por
preconditions e effects).
Para exemplificar, considere o exemplo do cartão de crédito, agora aplicado
a uma livraria virtual. Para concluir a venda, o serviço requer como entrada (input) o
número do cartão de crédito e a data de validade, mas também a condição (precondition)
de que o cartão de crédito é válido e tem crédito. O resultado da venda é a saída (output) de
um recibo que confirma a boa execução da transação e como efeito (effect) o pagamento
(transferência de propriedade) e a transferência física do livro a partir do armazém da
livraria para o endereço do comprador [Burstein et al., 2004].
Nenhum esquema para descrever as instâncias dos Inputs/Outputs/Preconditions/Effects
(IOPEs) é fornecido pela classe Profile. No entanto, este esquema existe na subontologia
ProcessModel. Os IOPEs publicados pela classe Profile são um subconjunto daqueles
publicados pela subontologia ProcessModel, assim, espera-se que a subontologia ProcessModel crie todas as instâncias IOPEs e a instância de Profile simplesmente aponte para
essas instâncias de IOPEs.
A Figura 2.7, ilustra as propriedades da classe Profile que são usadas para referenciar os IOPEs definidos na subontologia ServiceProfile. As seguintes propriedades
são definidas:
hasParameter varia ao longo de uma instância da classe Parameter da subontologia
ServiceModel. Sua principal função é apenas tornar o conhecimento de domínio
explícito. A classe Parameter modela a intuição de que inputs e outputs - que são
os tipos de parâmetros - estão ambos envolvidos na transformação da informação
e, portanto, são diferentes das preconditions e effects. Como consequência, a classe
Parameter não é instanciada.
hasInput varia sobre instâncias da classe Inputs, definida na subontologia
ServiceModel.
hasOutput define instâncias da classe Output, da subontologia ServiceModel.
hasPrecondition especifica uma das pré-condições do serviço e varia ao longo de instâncias da classe Preconditions, definida de acordo com o esquema na subontologia
ServiceModel.
hasResult especifica um dos resultados do serviço, conforme definido pela classe Result
da subontologia ServiceModel. Esta propriedade especifica as condições em que
as saídas (outputs) são geradas. Além disso, a classe Result especifica quais as
mudanças de domínio são produzidos depois da execução do serviço.
2.3 OWL-S
33
Figura 2.7: OWL-S
Service
Profile
[Burstein et al., 2004]
-
extraído
de
Complementarmente as informações de IOPEs, algumas propriedades da classe
Profi lefornecem informação legíveis aos humanos que são pouco prováveis que sejam
processadas automaticamente. São elas:
serviceName refere-se ao nome do serviço que está sendo oferecido. Pode ser usado
como um identifi cador do serviço.
textDescription fornece uma breve descrição do serviço. Ele resume o que o serviço oferece, descreve o que o serviço requer para funcionar, e indica qualquer informação
adicional que se queira compartilhar com os usuários.
contactInformation fornece um mecanismo para indicar os indivíduos responsáveis pelo
serviço.
Uma instância da classe Profi le pode ter no máximo um nome de serviço e
uma descrição em texto, mas pode ter várias propriedades de informações de contato.
Conforme ilustrado na Figura 2.7, a propriedade contactInformation está relacionada a
classe Actor, defi nida na ontologiaActorDefault.
2.3.2
Service Model
A subontologia ServiceProfile descreve apenas o funcionamento global do
serviço provido. Uma perspectiva detalhada sobre como interagir com o serviço é provido
pela classe Process, uma subclasse de ServiceModel. Para efeito de entendimento, uma
instância de Process pode ser visto como um processo que defi ne a interação com
2.3 OWL-S
34
o serviço Web. Em OWL-S, processos não são necessariamente programas a serem
executados, mas sim uma especificação das maneiras que um cliente pode interagir com
um serviço.
Qualquer processo pode ter qualquer número de entradas (inputs), representando as informações que estão sob certas condições (preconditions), necessárias para
iniciar o processo. Processos podem ter qualquer número de saídas (outputs), a informação de que o processo fornece ao solicitante. Inputs e Outputs são representados como
subclasses da classe Parameter. Apesar da Figura 2.8 não ilustrar a relação entre Input,
Output e Parameter, cada Parameter tem um tipo, especificado usando um URI. Pode
existir qualquer número de preconditions, que devem ser satisfeitas para que um processo possa ser iniciado com êxito. Um processo pode ter qualquer número de effects.
Outputs e effects dependem de condições acerca do estado do mundo no momento em
que o processo é realizado. Preconditions e effects são representados como fórmulas
lógicas e podem ser expressos com o uso de linguagens cujo padrão de codificação é
XML, tais como SWRL (Semantic Web Rule Language) [Horrocks et al., 2004] e RDF
[Manola and Miller, 2004], ou literais strings, tal como PDDL (The Planning Domain
Defi nition Language) [Ghallab et al., 1998].
Figura 2.8: Subontologia OWL-S ServiceModel - extraído de
[Burstein et al., 2004]
Para conectar um processo, ou seja, uma instância da classe Process aos seus
IOPEs, as seguintes propriedades são usadas:
hasParticipant que associa instâncias da classe Participant. Um processo envolve pelo
menos duas partes: theClient e theServer. Se existem outros, então eles são listados
usando-se a propriedade hasParticipant.
2.3 OWL-S
35
hasInput especifica as instâncias da classe Input. Um Input especifica a informação que
o processo requer para sua execução. Ele pode vir diretamente do usuário ou de
uma etapa anterior da execução do processo. No último caso, quando o processo é
composto de outros processos, ou seja, uma composição de serviços.
hasOutput especifica instâncias da classe Output. Um Output especifica a informação
que o processo gera após sua execução.
hasExistential Existential é uma variável usada para ser agregada na definição de preconditions e depois ser utilizado para especificar resultados condicionais, effects.
hasPrecondition define uma expressão que deve ser satisfeita para que o processo possa
ser executado.
hasResult a execução do processo pode ter algum effects e, provavelmente, outputs.
Result associa effects e outputs diretamente ao processo.
WSDL permite a especificação de operações como blocos básicos de construção do serviço Web. As operações provêm a estrutura organizacional onde os padrões e
a sintaxe das mensagens de input e output são especificadas. OWL-S provê uma construção análoga, porém mais abstrata conhecida por Atomic Process, que é caracterizada
principalmente em termos dos IOPEs [Martin et al., 2004]. OWL-S define três tipos de
processos:
Atomic Process é um processo que pode ser visto como uma descrição de um serviço
que espera uma mensagem e retorna outra mensagem de resposta. É diretamente
invocável e não contém nenhum subprocesso. Um Atomic Process recebe um input,
faz algum processamento, e depois retornar o output. Para cada Atomic Process deve
existir um grounding (apresentado na seção 2.3.3) que permita a um solicitante do
serviço codificar as mensagens para o processo a partir de seus inputs e decodificar
os outputs.
Composite Process é um processo que define a descrição de uma composição de serviços. Esta composição mantém algum estado e cada mensagem que o cliente envia é
passada para os processos da composição. Corresponde a ações que exigem várias
interações com servidores. Um Composite Process é composto por outros processos, Atomic ou Composite, que são especificados a partir de estruturas de controle
- Sequence, Split, Split + Join, Choice, Any-Order, If-Then-Else, Iterate e RepeatWhile.
Simple Process é um processo que fornece um mecanismo de abstração para prover
múltiplas visões do mesmo processo. Ele não é invocável e não está associado a
nenhum elemento Grounding.
2.3 OWL-S
2.3.3
36
Service Grounding
As subontologias ServiceProfile e ServiceModel descrevem o que o serviço
faz, ou seja, suas capacidades. Porém, para tornar possível que clientes comuniquem-se
com serviços Web, é necessário descrever a interface do serviço Web. A interface de um
serviço Web é especificada em um arquivo WSDL que descreve as mensagens e algumas
especificidades do protocolo da camada de aplicação usado para comunicação. WSDL
modela a interface do serviço como um conjunto de operações e suas mensagens associadas. O conteúdo das mensagens são especificadas de forma abstrata, como declarações
de elementos de um Schema XML.
Um serviço Web Semântico modela suas operações como entidades que trocam dados semânticos. Estes dados semânticos são serializados em mensagens XML
e transportados pela rede encapsulados em protocolo de aplicação. A subontologia
ServiceGrounding fornece os meios para representar os dados semânticos como mensagens XML que são enviadas pela rede e também especifica como o receptor pode interpretar essas mensagem XML e transformá-las novamente para os dados semânticos.
Grounding é um termo em inglês, amplamente utilizado e que não há uma tradução para o português fidedigna e, portanto, optamos por manter o termo em inglês. O
grounding de um serviço Web especifica os detalhes de como acessá-lo, isto é, os detalhes do protocolo e formatos de mensagens, serialização, transporte e endereçamento.
O grounding pode ser visto como um mapeamento da especificação abstrata para uma
concreta dos elementos que compões a descrição do serviço que são necessários para interagir com o serviço - em particular, os inputs e outputs de processos do tipo Atomic
Process. Isto porque as subontologias ServiceProfile e ServiceModel são representações abstratas, somente ServiceGrounding lida com o nível concreto da especificação
[Burstein et al., 2004].
O conceito de grounding em OWL-S assemelha-se ao conceito de binding
em WSDL [Burstein et al., 2004]. Juntos, estes conceitos fornecem a especificação do
grounding OWL-S/WSDL porque OWL-S e WSDL não fazem parte do mesmo espaço
conceptual, mas são complementares.
Os tipos abstratos (abstract types - ver apêndice B), são elementos do WSDL
especificados com uso de Schemas XML e usados para caracterizar os inputs e outputs
dos serviços Web. Em OWL-S a definição de abstract types é feita como classes OWL. No
entanto, WSDL é incapaz de expressar a semântica de uma classe OWL. Da mesma forma,
OWL-S não tem meios para expressar algumas informações do WSDL, por exemplo, as
informações referentes ao binding. Assim, o grounding OWL-S/WSDL usa classes OWL
como os abstract types de partes das mensagens declaradas no arquivo WSDL e se baseia
nas construções de binding do WSDL para especificar a formatação das mensagens.
2.3 OWL-S
37
Conforme a Figura 2.9 ilustra, o grounding OWL-S/WSDL é baseado em três
correspondências entre OWL-S e WSDL:
Figura 2.9: Grounding
OWL-S/WSDL
[Burstein et al., 2004]
-
extraído
de
1. Um processo do tipo Atomic Process pode corresponder aos seguintes tipos de
operações (operation) descritas no arquivo WSDL:
• Um processo do tipo Atomic Process com inputs e outputs corresponde a uma
operação do tipo request-response.
• Um processo do tipo Atomic Process com inputs, mas sem outputs corresponde a uma operação do tipo one-way.
• Um processo do tipo Atomic Process com outputs, mas sem inputs corresponde a uma operação do tipo notifi cation.
• Um processo do tipo Composite Process com inputs e outputs sendo que
os outputs são enviados antes da recepção dos inputs, corresponde a uma
operação do tipo solicit-response
2. Os inputs e outputs de um processo do tipo Atomic Process correspondem as
mensagens especificadas no arquivo WSDL. Os inputs OWL-S correspondem às
partes de uma mensagem (message part) de entrada (input message) de uma
operação (operation) do WSDL e os outpust OWL-S correspondem às partes
de uma mensagem (message part) de saída (output message) de uma operação
(operation) do WSDL.
3. Os tipos, ou seja, as classes OWL dos inputs e outputs de um Atomic Process
correspondem a noção extensível WSDL de abstract types.
A Figura 2.10 apresenta as principais classes e propriedades da subontologia
ServiceGrounding.
2.3 OWL-S
38
Figura 2.10: Classes e propriedades da subontologia OWL-S ServiceGrounding
A classe WsdlGrounding é uma subclasse de ServiceGrounding. Seu papel é fornece um mecanismo para que as principais construções do arquivo WSDL possam ser referenciadas em OWL-S. Cada instância da classe WsdlGrounding contém uma lista de instâncias de WsdlAtomicProcessGrounding. Essa relação é representada pela propriedade
hasAtomicProcessGrounding. A propriedade owlsProcess garante que para cada processo
do tipo AtomicProcess exista somente um WsdlAtomicProcessGrounding. Por outro lado
a propriedade wsdlOperation assegura uma relação um-para-um entre o Atomic Process
e a especificação WSDL. WsdlMessageMap é uma superclasse para WsdlInputMessageMap e WsdlOutputMessageMap. WsdlAtomicProcessGrounding utiliza, basicamente, as
seguintes propriedades para referenciar elementos de Atomic Process com a especifi cação
WSDL:
wsdlVersion um URI que indica a versão do WSDL utilizado. A versão 1.1 da OWL-S é
compatível com a versão 1.1 da WSDL enquanto que OWL-S, a versão mais atual,
é compatível com WSDL 1.2. Esta propriedade não aparece na Figura 2.10, pois ela
não relaciona a nenhuma outra classe, ela relaciona com um tipo URI especificado
no XML Schema.
wsdlDocument um URI que indica o documento WSDL ao qual o grounding se refere.
Esta propriedade não é essencial e seu uso é basicamente para documentação. É um
tipo URI especificado no Schema XML.
wsdlOperation é o URI para a operação (operation) especificada no arquivo WSDL ao
qual o Atomic Process corresponde. O valor de wsdlOperation pode ou não identi-
2.3 OWL-S
39
ficar um Port3 específico, definido no WSDL. Se houver vários Ports para a mesma
operação (operation), o engine OWL-S pode escolher qualquer um Port. Para restringir os Ports que podem ser utilizadas para um WsdlAtomicProcessGrounding é
necessário especificá-los utilizando as propriedades wsdlService e/ou wsdlPort.
wsdlService é um URI para o elemento Service do WSDL que provê a operação
(operation) com o qual o Atomic Process está associado. Vale ressaltar que um
elemento Service do WSDL é uma coleção de EndPoints.
wsdlPort um URI para o elemento Port do WSDL que provê a operação (operation)
com o qual o Atomic Process está associado. Um Port é endpoint definido como
uma combinação de um binding e um endereço.
wsdlInputMessage um URI para o elemento input message da especificação WSDL que
corresponde aos inputs do Atomic Process.
wsdlInput esta propriedade é utilizada para definir a correspondência entre os inputs
OWL-S e Message Parts do WSDL. Para cada Message Parts de um input
message declarado no WSDL, deve existir uma propriedade wsdlInput. Conforme a Figura 2.10 ilustra, a propriedade wsdlInput associa uma instância de
wsdlAtomicProcessGrounding a uma instância da classe wsdlInputMessageMap
que contém o mapeamento. A instância de wsdlInputMessageMap contém a propriedade wsdlMessagePart que, com um URI identifica a Message Part do WSDL
associado e, também a propriedade owlsParameter ou xsltTransformation. Ambas
representam como derivar a Message Part de um ou mais inputs do Atomic Process.
owlsParameter é utilizado para o caso mais simples, quando existe uma correspondência direta entre o input do Atomic Process e o wsdlMessagePart. Isto
significa que o Message Part WSDL corresponde diretamente ao input e o tipo
do input é usado na especificação do WSDL. Basta colocar o URI do input na
propriedade.
xsltTransformation é utilizado para os outros casos em que a propriedade
owlsParameter não se aplica. A propriedade xsltTransformation adiciona um
script XSLT que gera o Message Part de uma instância de um Atomic Process.
O script pode ser diretamente representado como uma string ou pode ser referenciado por um URI.
wsdlOutputMessage similar à propriedade wsdlInputMessage porém, aplicada aos
outputs.
wsdlOutput Para cada output do Atomic Process deve existir um valor da propriedade
wsdlOutput. É similar à propriedade wsdlInput porém, aplicados a outputs. Ela
3 Port
define o ponto de conexão (EndPoint) com um serviço Web.
2.4 Desenvolvimento de Software Dirigido por Modelos
40
especifica um mapeamento entre um output de Atomic Process, que é representado
pela instância de WsdlOutputMessageMap.
2.4
Desenvolvimento de Software Dirigido por Modelos
O Desenvolvimento de Software Dirigido por Modelos (Model Driven
Development - MDD) [Stahl and Völter, 2006] é uma abordagem top-down de desenvolvimento de software que tem como essência a especificação de modelos e transformações
desses modelos em outros modelos ou artefatos de software, de forma a permitir a comunicação de diferentes fases do desenvolvimento de software. Os modelos são utilizados
como veículos para descrição de sistemas de software, facilitando a comunicação entre
as partes do sistema e, também, associando as diferentes fases do processo de desenvolvimento de software. Segundo Stahl e Voelter [Stahl and Völter, 2006], as principais
características do MDD são: alta produtividade, portabilidade, interoperabilidade e reusabilidade. Além disso, o MDD permite que as transformações entre modelos possam ser
realizadas por ferramentas automatizadas, as quais reduzem os erros de programação e
os custos de desenvolvimento.
As transformações entre os modelos MDD são especificadas em linguagens
que possuem uma sintaxe textual concreta e utilizam metamodelos para criar regras de transformações entre os modelos. Os modelos são descritos por metamodelos e representados normalmente com o padrão XMI (XML Metadata Interchange)
[Object Management Group, 2007]. A Figura 2.11 ilustra o contexto em que essas linguagens estão inseridas.
Figura 2.11: Transformações entre modelos
2.4 Desenvolvimento de Software Dirigido por Modelos
41
O metamodelo representa a sintaxe abstrata da linguagem e descreve todos
os conceitos que podem ser utilizados em um modelo. O metamodelo deve estar
em conformidade com o seu metametamodelo. O MOF (OMG’s MetaObject Facility)
[Object Management Group, 2006], é uma especificação definida como um padrão da
OMG. O Ecore [Steinberg et al., 2008], introduzido com o Eclipse Modelling Framework
(EMF) [Steinberg et al., 2008], é uma implementação da especificação MOF.
QVT (Query/View/Transformation) [Object Management Group, 2008] é uma
linguagem padronizada pela OMG e tem como principal objetivo transformar um modelo
de entrada, que está em conformidade com um metamodelo, em outro modelo de saída,
em conformidade com outro metamodelo.
O trecho de Código 2.5 apresenta o código em QVT de uma transformação
chamada de MMaToMMb entre dois modelos, Ma e Mb. O modelo Ma tem como
metamodelo MMa enquanto que o metamodelo do modelo Mb é MMb. Na transformação
MMaToMMb a instrução Ma.rootObjects![A] (linha 3) associa o conjunto de todos os
elementos A do modelo Ma a variável a. A linha 6 declara um função de mapeamento
chamada AtoB que recebe como entrada um elemento A e cria um elemento B. Na função
de mapeamento é possível acessar as propriedades e relações do elemento de entrada
A. Desta forma, possibilitando a criação do elemento B utilizando-se os valores das
propriedades ou relações de A. Assim, na linha 4, a instrução a.map AtoB() especifica que
o elemento A, referenciado pela variável a, será entrada para a função de mapeamento
AtoB.
Código 2.5 Exemplo de uma transformação QVT
1
transformation MMaToMMb(in Ma : MMa, out Mb : MMb);
2
main() {
3
var a := Ma.rootObjects![A];
4
a.map AtoB();
5
}
6
mapping A::AtoB() : B {
...
7
8
}
O objetivo do MDD, muitas vezes, é a criação de código fonte em uma linguagem
alvo como, por exemplo, Java, C++ ou XML. A especificação Model-to-text, padronizada
pela OMG, determina um padrão para linguagens de transformação de modelo para
texto. O Acceleo [Obeo Network, 2007] é um gerador de código livre que implementa a
especificação Model-to-text e utiliza uma abordagem baseada em templates para criação
de código fonte em uma determinada linguagem a partir de modelos.
2.4 Desenvolvimento de Software Dirigido por Modelos
42
O Eclipse Modeling Framework (EMF) é um framework de modelagem e geração de código que compõe o projeto Eclipse Modeling. O EMF consiste de três pedaços
fundamentais: O framework Core EMF Ecore que tem como propósito a criação de metamodelos; o framework EMF.Edit que inclui classes genéricas reusáveis para construção
de editores para modelos EMF; e o EMF.Codegen que é um gerador de código capaz de
gerar os artefatos necessários para construção de um editor completo para um modelo
EMF.
CAPÍTULO 3
Mapeamento entre OWL e UML
Este capítulo apresenta a similaridade entre as linguagens de especificação de
ontologias e a linguagem de modelagem UML. A linguagem de modelagem UML é
amplamente usada para modelagem de sistemas de software e também para criação de
modelos em abordagens MDD. A linguagem UML e as linguagens de especificação de
ontologias têm algumas sobreposições e semelhanças, especialmente para representação
estrutural de um software. Alguns elementos das duas linguagens são semelhantes como,
por exemplo, classes, associações entre classes, propriedades de classes, generalizações
e tipos de dados. Estas semelhanças tornam possível o mapeamento de alguns elementos
das linguagens de especificação de ontologias em elementos da linguagem UML. Outros
elementos das linguagens de especificação de ontologias que não correspondem diretamente aos elementos primários da linguagem UML podem ser representados com o uso
de perfis UML. As similaridades entre essas linguagens são fundamentais para a especificação do perfil UML que a ferramenta AutoWebS usa. O restante deste capítulo está
organizado como se segue. A seção 3.1 apresenta o mapeamento entre as linguagens de
especificação de ontologias e a UML. A seção 3.2 mostra os elementos da linguagem
OWL que são diretamente usados e, portanto, necessários para criação de serviços Web
semânticos, apresentando como esses elementos podem ser representados com elementos
da UML.
3.1
Mapeamento entre as linguagens de especificação de
ontologias e a UML
As linguagens de especificação de ontologias como, por exemplo, a linguagem
OWL, e a linguagem UML têm propósitos diferentes, que refletem nos seus elementos
e nas suas expressividades. Modelos UML e ontologias constituem abordagens de modelagem com diferentes propósitos, que os tornam adequados para especificar aspectos diferentes de sistemas de software. Em particular, ontologias são adequadas para
especificar classes usando uma linguagem lógica expressiva, com associação de clas-
3.1 Mapeamento entre as linguagens de especificação de ontologias e a UML
44
ses e definição de propriedades altamente flexíveis e polimórficas, enquanto diagramas
UML são mais adequados para especificar não apenas modelos estáticos, incluindo classes e associações, mas também o comportamento dinâmico de sistemas de software
[Silva Parreiras et al., 2007].
A linguagem UML define uma notação para a modelagem dos artefatos de
software orientado a objetos, enquanto que as linguagens de especificação de ontologias definem uma notação para representação de conhecimento, mas ambas são linguagens de modelagem [Belghiat and Bourahla, 2012]. O mapeamento das construções
das linguagens UML e de especificação de ontologias é possível graças a essas similaridades entre as linguagens [Pondrelli, 2005, Hart et al., 2004, Atkinson et al., 2006,
Gasevic et al., 2006]. Pondrelli [Pondrelli, 2005], em seu trabalho, explana a respeito da
viabilidade de usar métodos baseados em perfis UML e editores UML para construção e
gerenciamento de ontologias, além de apresentar os mapeamentos entre a UML e as principais construções utilizadas por linguagens de especificação de ontologias, conforme
representado na Tabela 3.1.
UML
Packages
Classes
Attributes, associations and classes
Navigable
Note
Multiplicity
Data types
Objects
Construções ontológicas
Ontologies
Classes
Properties
Domain, Range
Comment
Cardinality
Data types
Instances
Tabela 3.1: Mapeamento entre UML e os principais conceitos das
linguagens para especificação de ontologias
No mapeamento entre a UML e uma linguagem de especificação de ontologias, a
definição de ontologias assemelha-se a definição de um package em UML. Uma ontologia
cria um modelo de dados que representa um conjunto de conceitos e seus relacionamentos
dentro de um domínio. Os conceitos podem ser representados por classes UML e as
propriedades que uma classe pode ter especificam suas características e criam relações
entre os conceitos do domínio de interesse. Conforme a Tabela 3.1, as construções das
linguagens de especificação de ontologias Domain e Range, Comment, Cardinality, Data
Type e Instances são diretamente mapeadas para os elementos da UML.
As construções que especificam propriedades (Properties) em uma ontologia podem ter múltiplas representações em UML devido a grande expressividade das linguagens de especificação de ontologias. Por exemplo, na linguagem OWL as propriedades
que especificam restrições (Restriction) do tipo intersectionOf, unionOf e complementOf, são construções para formação de uma classe a partir de uma combinação boole-
3.1 Mapeamento entre as linguagens de especificação de ontologias e a UML
45
ana de classes OWL. Na UML, não existem notações correspondentes as restrições do
tipo intersectionOf, unionOf e complementOf. Uma alternativa para as representações em
UML de construtores de classe OWL é o emprego de estereótipos e dependências UML
para as classes que formam o complemento (complementOf ), parte da união (unionOf )
ou parte do cruzamento (intersectionOf ) de uma classe.
Seguindo a abordagem de perfis UML, a OMG criou a especificação Ontology
Definition MetaModel (ODM) [Object Management Group, 2009], uma especificação
para tornar os conceitos da Arquitetura Dirigida a Modelos (Model-Driven Architecture
- MDA) [Frankel, 2003] aplicáveis à engenharia de ontologias. A especificação
ODM define uma família de metamodelos independentes, perfis UML relacionados
e mapeamentos entre os metamodelos correspondentes a vários padrões para definição de ontologias. A especificação ODM é aplicável a representação do conhecimento, modelagem conceitual e a definição de ontologias. ODM é implementado
em MOF e contém uma especificação formal para perfis UML e para as linguagens
OWL e RDFS. A ODM é uma alternativa viável para se criar ontologias e várias
ferramentas [Silva Parreiras et al., 2007, Sparx Systems, 2000, Brockmans et al., 2006,
Belghiat and Bourahla, 2012, Gaševic et al., 2009] fazem uso da especificação a fim de
se prover abstração sobre as linguagens de especificação de ontologias.
Para especificar a interface de um serviço Web semântico, ou seja, definir os
inputs e outputs do serviço Web e associá-los a conceitos definidos em uma ontologia,
é necessário um subconjunto dos elementos da linguagem OWL. Outros elementos da
OWL, principalmente a parte axiomática, não são diretamente usados na especificação
da interface de um serviço Web semântico, porém esses elementos, normalmente, são
usados por máquinas de inferência1 (reasoners) que provêem mecanismos que permitem
verificar a consistência de ontologias e validar a classificação de seus conceitos assim,
permitindo que ferramentas que fazem matching, possam realizar buscas com base nos
inputs e outputs de um serviço Web semântico. Os elementos que não são diretamente
usados na especificação da interface de um serviço Web semântico podem fazer parte
de uma ontologia do serviço Web entretanto, estes elementos não podem ser associados
aos inputs e outputs de um serviço Web, mas eles podem fornecer restrições importantes
ao domínio do serviço Web como, por exemplo, definir relações entre propriedades e
conceitos que podem facilitar o processo de desambiguação semântica.
Este trabalho especifica e implementamos um perfil UML para representar os
elementos da linguagem OWL que são usados no processo de modelagem da interface
de um serviço Web semântico. O perfil UML define um conjunto de estereótipos e
1 São
sistemas de representação de conhecimento capazes de realizar consultas sobre as ontologias de
modo a deduzir novas informações, geralmente implícitas, a respeito de um domínio preexistente.
3.2 Mapeamento entre OWL e UML
46
propriedades que habilitam a associação dos inputs e outputs de um serviço Web com
conceitos definidos em uma ontologia. No perfil UML também são definidos estereótipos
e propriedades do domínio dos serviços Web, que não são endereçados pela especificação
ODM. O propósito da ferramenta AutoWebS não é propiciar a modelagem de ontologias
usando-se a UML, como se propõe a especificação ODM. O propósito da ferramenta
AutoWebS é proporcionar a modelagem da interface de um serviço Web semântico.
3.2
Mapeamento entre OWL e UML
Kim e Lee [Kim and Lee, 2007, Kim and Lee, 2009] e Falkovych et al.
[Falkovych et al., 2003] apresentam uma série de transformações entre as construções da
linguagem OWL e a UML que serviram como base para especificação dos mapeamentos
utilizados pela ferramenta AutoWebS. Não são todas as construções da linguagem OWL
que são necessárias para criação da descrição semântica do serviço Web. Somente as
construções da OWL que definem classes e subclasses, propriedades de objetos e tipos
de dados são necessárias. Vale ressaltar que, o mapeamento entre a OWL e UML apresentado neste trabalho, não tem como objetivo representar todos os elementos da OWL
em UML. São realizados os mapeamentos somente estre os elementos necessários para
especificação de um serviço Web semântico. Os elementos da OWL que são mapeados
para a UML são apresentados a seguir
O elemento da OWL owl:Ontology é mapeado para um package em UML. Os
mapeamentos possíveis para os elementos que são declarados dentro de owl:Ontology
estão representados na Tabela 3.2. O elemento owl:imports associa uma ontologia a outra
quando são usados conceitos definidos em outra ontologia. O mapeamento deste elemento
dá-se pelo elemento UML package imports.
Construções OWL
owl:Ontology
owl:Ontology owl:versionInfo
owl:Ontology rdfs:comment
owl:Ontology owl:imports
UML
package UML
note UML
note UML
package imports UML
Tabela 3.2: Mapeamento entre o elemento owl:Ontology e a UML
As construções usadas para criar classes ou que expressam relações hierárquicas
entre classes OWL podem ser representadas por generalização em UML conforme a
Tabela 3.3 monstra. A construção owl:oneOf pode ser mapeada para um tipo Enumeration
UML enquanto que a construção owl:unionOf pode ser mapeada em UML como relações
de dependências de uma classe sobre outras, usando-se o elemento Dependency da UML.
Os demais elementos não se aplicam.
3.2 Mapeamento entre OWL e UML
Construções OWL
owl:Class
owl:Class rdf:ID
owl:Class rdfs:subClassOf
owl:Class owl:oneOf
owl:Class owl:equivalentClass
owl:Class owl:disjointWith
owl:Class owl:intersectionOf
owl:Class owl:unionOf
owl:Class owl:complementOf
47
UML
classe UML
nome da classe
Generalização de uma classe
define um tipo Enumeration UML
não se aplica
não se aplica
não se aplica
Dependency UML
não se aplica
Tabela 3.3: Mapeamento entre as construções de classes OWL e a
UML
O elemento owl:Restriction define as restrições que são aplicadas sobre uma
classe OWL. As restrições podem estar associadas aos tipos de dados e as propriedades
que uma determinada classe pode ter. O elemento owl:Restriction também define qual
é a cardinalidade das restrições aplicadas sobre uma classe. A Tabela 3.4 ilustra o
mapeamento desta construção para os elementos da UML.
Construções OWL
owl:Restriction
owl:Restriction owl:allValuesFrom
owl:Restriction owl:someValuesFrom
owl:Restriction owl:hasValue
owl:Restriction owl:maxCardinality
owl:Restriction owl:minCardinality
owl:Restriction owl:cardinality
UML
restrições aplicadas em uma classe
não se aplica
não se aplica
não se aplica
multiplicidade
multiplicidade
cardinalidade
Tabela 3.4: Mapeamento entre o elemento owl:Restriction e a
UML
As propriedades que incidem sobre uma determinada classe OWL podem ser
mapeadas para UML como atributos de uma classe a partir de uma associação binária ou unidirecional com outras classes. As propriedades owl:ObjectProperty rdfs:range
e owl:DatatypeProperty rdfs:range definem o tipo do atributo que incide em uma
classe OWL. Os valores possíveis destes atributos são os tipos definidos no Schema
XML ou as classes OWL. A Tabela 3.5 apresenta os mapeamentos para os elementos
owl:ObjectProperty e owl:DatatypeProperty.
As demais construções da linguagem OWL, representadas na Tabela 3.6, não são
aplicadas para especificação da interface de um serviço Web semântico.
Na UML existem apenas quatro tipos primitivos predefinidos de dados: Integer,
Boolean, String e UnlimitedNatural. O tipo UnlimitedNatural representa um elemento
3.2 Mapeamento entre OWL e UML
48
Construções OWL
owl:ObjectProperty
owl:ObjectProperty rdf:ID
owl:ObjectProperty rdfs:range
owl:ObjectProperty rdfs:domain
owl:ObjectProperty rdfs:subPropertyOf
owl:ObjectProperty owl:equivalentProperty
owl:ObjectProperty owl:inverseOf
owl:DatatypeProperty
owl:DatatypeProperty rdf:ID
owl:DatatypeProperty rdfs:domain
owl:DatatypeProperty rdfs:range
construções para indivíduos OWL
UML
atributo de uma classe
nome do atributo
tipo do atributo.
classe que contém o atributo
não se aplica
não se aplica
não se aplica
atributo de uma classe
nome do atributo
classe que contém o atributo
o tipo do atributo
não se aplica
Tabela 3.5: Mapeamento entre os elementos owl:ObjectProperty e
owl:DatatypeProperty e a UML
Construções OWL
owl:FunctionalProperty
owl:InverseFunctionalProperty
owl:TransitiveProperty
owl:SymmetricProperty
owl:AnnotationProperty
owl:backwardCompatibleWith
owl:incompatibleWith
owl:DeprecatedClass
owl:DeprecatedProperty
UML
não se aplica
não se aplica
não se aplica
não se aplica
não se aplica
não se aplica
não se aplica
não se aplica
não se aplica
Tabela 3.6: Mapeamento entre alguns elementos da OWL e a UML
do conjunto dos números inteiros naturais (0, 1, 2, 3, ...). Entretanto, no Schema XML2
existem muito mais tipos de dados, de tal maneira que os quatro tipos primitivos da UML
não são suficientes para representá-los. A Tabela 3.7 mostra os possíveis mapeamentos
entre os tipos de dados (Data types) do Schema XML e os tipos primitivos da UML.
Para exemplificar os mapeamentos entre a OWL e a UML, considere o trecho de
Código 2.3 onde são declarados a classe Regime e propriedades do tipo ObjectProperty
e DatatypeProperty. O trecho de código define uma propriedade do tipo Object Property
que tem como domínio instâncias da classe Change e valores possíveis de instâncias da
classe Regime. Também define propriedades da classe Regime, stemSize, burdenValue,
cpmValue e idRegime, todas do tipo DatatypeProperty. A Figura 3.1 representa o mapeamento em UML para este trecho de código OWL. As classes OWL Regime e Change foram mapeadas para classes UML. As propriedades do tipo DatatypeProperty foram mape2 http://www.w3.org/2001/XMLSchema
3.2 Mapeamento entre OWL e UML
Schema XML
xsd:integer
xsd:int
xsd:unsignedShort
xsd:boolean
xsd:string
xsd:anySimpleType
xsd:nonNegativeInteger
xsd:positiveInteger
49
UML
Integer
Integer
Integer
Boolean
String
String
UnlimitedNatural
UnlimitedNatural
Tabela 3.7: Mapeamento dos tipos de dados do Schema XML e a
UML
adas para atributos da classe Regime, sendo que os seus tipos, defi nidos no Schema XML
como http://www.w3.org/2001/XMLSchema#string, foram mapeados para o tipo primitivo String da UML. A propriedade do tipo ObjectProperty hasRegime, foi mapeada para
um atributo da classe Change.
Figura 3.1: Exemplo de mapeamento entre OWL eUML
CAPÍTULO 4
Ambiente para Modelagem e Geração
Automática de Serviços Web Semânticos
Este capítulo apresenta os requisitos mínimos de uma ferramenta para criação
de serviços Web semânticos e também apresenta o AutoWebS (Automatic Generation of
Semantic Web Services), uma ferramenta que oferece um ambiente que integra várias
funcionalidades necessárias para modelar, implementar, compilar e fazer o deploy de
serviços Web semânticos.
O restante deste capítulo está organizado como se segue: a Seção 4.1 apresenta
os requisitos mínimos de uma ferramenta para criação de serviços Web semânticos; a
Seção 4.2 apresenta a ferramenta em função dos seus inputs, outputs e processo de utilização; a Seção 4.3 apresenta a arquitetura da ferramenta, explicitando seus componentes
e tecnologias relacionadas; a Seção 4.4 apresenta o perfil UML especificado e implementado por este trabalho, usado para representar elementos da OWL em UML; a Seção 4.5
traz o processo de importação de ontologias OWL, apresentando a transformação XSLT; a
Seção 4.6 apresenta o metamodelo para linguagem OWL-S que este trabalho especificou
e implementou; a Seção 4.7 apresenta as regras de mapeamento entre um modelo UML o
um modelo OWL-S; a Seção 4.8 ilustra o funcionamento da ferramenta.
4.1
Requisitos de uma ferramenta para criação de serviços Web semânticos
Antes do desenvolvimento da ferramenta AutoWebS um conjunto de requisitos
de uma ferramenta para criação de serviços Web semânticos foram estabelecidos. Os requisitos têm como objetivo principal abstrair detalhes específicos, relativos a cada linguagem de descrição semântica, de forma a propiciar o desenvolvimento de ferramentas que
ofereçam um maior nível de abstração sobre a sintaxe das linguagens usadas na criação
da descrição semântica dos serviços Web.
4.1 Requisitos de uma ferramenta para criação de serviços Web semânticos
51
[Chafle et al., 2007] e [Fonseca et al., 2009] propuseram alguns requisitos essenciais para o desenvolvimento de uma ferramenta para compor serviços Web. Alguns destes
requisitos foram adaptados para uma ferramenta de alto nível de abstração para a criação
de serviços Web semânticos. Os requisitos adaptados, juntamente com novos requisitos
formam o conjunto mínimo de requisitos para uma ferramenta para criação de serviços
Web semânticos acessível a um público maior do que um público formado somente por
especialistas da Web semântica. A seguir são apresentados os requisitos:
R0 Disponibilizar um mecanismo para que o usuário possa modelar a interface do serviço
Web semântico sem que ele precise de um profundo conhecimento das tecnologias
Web e Web semântica. Este mecanismo deve usar uma abordagem acessível e que
torne o desenvolvimento de um serviço Web semântico intuitivo e prático, evitandose assim uma curva de aprendizado acentuada;
R1 Realizar a criação automática do código fonte do serviço Web;
R2 Realizar a criação automática da descrição semântica do serviço Web na linguagem
alvo como, por exemplo, OWL-S;
R3 Permitir a utilização de ontologias preexistentes para a criação da descrição semântica
do serviço Web a partir da interligação dos conceitos definidos nestas ontologias
com os elementos do serviço Web;
R4 Oferecer um ambiente de desenvolvimento que integra todas as funcionalidades necessárias para a criação de um serviço Web semântico, sem que haja a necessidade
do uso de recursos ou ferramentas externas;
R5 Gerar artefatos de código (serviço Web e ontologia do serviço Web) sintaticamente
corretos. O código gerado deve ser legível, executável e corresponder às especificações da W3C para serviços Web e serviços Web semânticos;
R6 Permitir a inserção de novas funcionalidades como, por exemplo, o suporte a outra
linguagem para descrição semântica do serviço Web, sem que haja a necessidade
de realizar grandes modificações estruturais na ferramenta.
O requisito R0 diz respeito ao uso de modelos para especificar a interface de um
serviço Web, de forma a abstrair as tecnologias subjacentes usadas para implementação
do serviço Web e também da sua ontologia. Assim, poupa-se do usuário o conhecimento
destas tecnologias e permite-se que o mesmo direcione mais atenção as regras de negócio
do serviço Web. Os requisitos R1 e R2 relacionam-se à automatização da geração de
artefatos de código. Esses são requisitos importantes e complementares ao requisito R0,
pois deseja-se abstrair as linguagens envolvidas na criação de serviços Web semânticos.
O requisito R3 proporciona maior liberdade para criação do serviço Web semântico
e contribui para interoperabilidade, pois podem-se usar ontologias que são bastante
conceituadas e usadas na Internet.
4.2 Visão Geral da Ferramenta
52
O requisito R4 é fundamental para diminuir o tempo de desenvolvimento dos
serviços Web semânticos e, também, evitar erros e possíveis conflitos gerados quando
se usa diferentes ferramentas para construção de um serviço Web semânticos como,
por exemplo, quando se usa uma determinada ferramenta para criação da ontologia de
domínio que usa uma determinada versão da linguagem de especificação de ontologias
que não é compatível com outra ferramenta que dá suporte a criação da descrição
semântica do serviço Web. O requisito R5 tem como objetivo assegurar a corretude
dos artefatos de códigos gerados pela ferramenta, uma vez que, um trecho de código
quando gerado de forma errada, inevitavelmente necessita que o usuário tenha certo grau
de conhecimento da tecnologia para sua correção. Por fim, o requisito R6 proporciona
suporte a manutenção da ferramenta, seja para inserção de novas funcionalidades ou
então para evolução das funcionalidades atuais como, por exemplo, a atualização para
uma versão mais recente da linguagem de descrição semântica do serviço Web.
4.2
Visão Geral da Ferramenta
O AutoWebS é um plugin da IDE Eclipse e relaciona-se com outros plugins
de forma a prover um ambiente que integra as várias funcionalidades necessárias modelagem, implementação, compilação e deploy - para a criação automática de serviços
Web semânticos (requisitos R4 e R6)1 . Através do ambiente oferecido por AutoWebS é
possível i) modelar o serviço Web, isto é, modelar os inputs e outputs de cada operação
do serviço Web, ii) criar a descrição semântica do serviço Web, ou seja, associar os
inputs e outputs de cada operação com os elementos de uma ontologia de domínio, iii)
criar um arquivo OWL-S que contém a descrição semântica do serviço Web e, iv) gerar
automaticamente o código fonte do serviço Web modelado na linguagem Java.
O uso da ferramenta AutoWebS, conforme ilustrado na Figura 4.8, constitui-se
de três principais atividades: (a) importação, (b) design e (c) geração. A ferramenta requer
como entrada ontologias OWL (requisito R3) e fornece como saída um arquivo OWL-S
que contém a ontologia do serviço Web (requisito R2), além do código fonte do serviço
Web na linguagem Java (requisito R1).
A primeira atividade para criação de serviços Web semânticos usando-se a ferramenta AutoWebS é a atividade de importação de ontologias OWL (a). Nesta atividade a
ferramenta faz o mapeamento dos elementos da ontologia OWL para elementos da UML,
de forma que o resultado é um modelo UML (diagrama de classes) que representa a ontologia OWL de entrada. Neste modelo UML estereótipos e propriedades definidas em
um perfil UML asseguram informações suplementares inerentes à ontologia de entrada
1 Rx
indica que o requisito x é atendido por esta decisão de projeto
4.2 Visão Geral da Ferramenta
53
Figura 4.1: Visão geral da ferramenta AutoWebS
e também informações relevantes do contexto dos serviços Web semânticos como, por
exemplo, propriedades que definem a porta onde está o serviço Web, o endPoint e namesapaces.
No ambiente fornecido pelo AutoWebS é possível se definir a interface do
serviço Web semântico usando os elementos do diagrama de classes UML. Do ponto
de vista do projetista do serviço Web semântico a ferramenta assemelha-se a um editor
de diagrama de classes UML (requisito R0). Na atividade (b), modelagem, o projetista
trabalha no nível de modelagem, criando modelos que especificam a interface do serviço
Web semântico ao invés de manusear as linguagens para descrição semântica dos serviços
Web.
Na atividade (c), geração, o modelo UML que especifica a interface do serviço
Web semântico é a entrada para ferramenta AutoWebS usar um conjunto de regras
de transformações QVT e templates Acceleo para gerar automaticamente a descrição
semântica do serviço Web em um documento OWL-S (requisito R2) e um projeto para
IDE Eclipse do serviço Web (requisito R1). O projeto de um serviço Web contém
o documento WSDL, o descritor do serviço Web, o script de build que automatiza
a compilação e empacotamento do serviço Web, além das classes que compõem a
infraestrutura de comunicação SOAP.
Para assegurar que a descrição semântica do serviço Web é válida, alguns validadores disponíveis na Internet e uma API (requisito R5) são utilizados. O validador
RDF [Prod’hommeaux, 2007], disponibilizado pela W3C, é utilizado para validar as construções em RDF da ontologia do serviço Web. O validador OWL [Rager et al., 2004]
é utilizado para validar as construções OWL enquanto que para validar as construções e a sintaxe OWL-S é utilizado o validador OWL-S, disponível na API OWL-S
[Sirin and Parsia, 2004].
4.3 Arquitetura
54
A ferramenta AutoWebS implementa uma abordagem MDD para atender principalmente os requisitos R0, R1, R2 e R3, com a função de gerenciar a complexidade
inerente do emprego de ontologias para especificação de serviços Web semânticos, pois
MDD está centrado na criação de modelos, em vez de código de programa, permitindo
separação de interesses entre especificação e implementação, provendo ao usuário um
maior nível de abstração da linguagem OWL.
O AutoWebS implementa um mecanismo de importação de ontologias de domínio que usa um conjunto de transformações XSLT e um perfil UML (requisito R3). XSLT
é uma linguagem declarativa para transformações de documentos XML que usa um mecanismo de casamento de padrões capaz de selecionar pedaços de documentos XML para
criação de novos documentos com a sintaxe XML ou textual. No processo de importação de ontologias de domínio, alguns elementos da linguagem OWL são mapeados para
elementos da UML (ver Seção 3.2). Este processo não assegura a representação de todos
os elementos da ontologia no modelo UML, pois são mapeados somente os elementos
necessários para modelagem de um serviço Web semântico.
4.3
Arquitetura
O AutorWebS é um plugin para a plataforma Eclipse e fornece um ambiente
composto por um editor UML, um mecanismo de importação de ontologias e um mecanismo para criação automática da descrição semântica do serviço Web e do código fonte a
partir de um modelo UML (requisito R4). Conforme ilustrado na Figura 4.2, o AutoWebS
interage com outros plugins da plataforma Eclipse, com o middleware Axis2 e também
com Ant [Loughran and Hatcher, 2007]. Novas funcionalidades podem ser integradas à
ferramenta com a inserção de novos plugins (requisito R6), usufruindo-se da infraestrutura oferecida pelo Eclipse para o desenvolvimento de aplicações modulares. Ademais,
a abordagem MDD implementada pela ferramenta permiti a inserção de uma nova linguagem de descrição semântica com a criação de um metamodelo para tal linguagem e a
definição do mapeamento entre os elementos definidos no perfil UML com o metamodelo
além, é claro, das transformações model-to-text.
O AutoWebS utiliza o editor gráfico UML Papyrus [Gérard et al., 2007] que é
parte oficial do Eclipse Modeling Project. O Papyrus oferece suporte a perfis UML de
forma a permitir a criação de editores para DSLs (Domain Specific Language) baseados
no padrão UML. A principal característica do Papyrus em relação à criação de editores
para DLSs é um conjunto poderoso de mecanismos de personalização que podem ser
utilizados para criação de perspectivas customizáveis para os editores de DSLs. Assim,
usando o Papyrus e seus mecanismos de personalização, juntamente com o perfil UML,
foi concebido um editor de diagramas de classes UML customizado para o AutoWebS
4.3 Arquitetura
55
Figura 4.2: Arquitetura da ferramenta AutoWebS
(requisito R0). Este editor UML permite a criação de modelos UML que contêm a
interface do serviço Web semântico. Estes modelos UML são exportados pelo editor como
documentos XMI.
Para importação da ontologia é necessária a execução das regras de transformações descritas em XSLT. O componente ImporterModule realiza a execução das regras
XSLT usando o processador XSLT do componente XSL Tools, que faz parte do projeto
Web Tools Platform [Dai et al., 2007]. O plugin QVTo é usado para execução do conjunto
de regras de transformações QVT para geração automática de um modelo OWL-S a partir
de um modelo UML, codificado em um documento XMI. Além do modelo OWL-S, o código fonte em Java do modelo UML (requisito R1) é gerado utilizando o plugin UML to
Java Generator [Obeo Network, 2012]. O código fonte gerado a partir do modelo contém
todos os elementos do modelo UML, inclusive a interface que defi ne o serviço Web e os
elementos da ontologia que foram representados como classes UML.
O componente WebServiceModule é responsável por estender a funcionalidade
do Axis2 a fim de prover não somente a geração do código fonte, mas também a criação
de projetos de serviços Web para plataforma Eclipse (requisito R0) e algumas facilidades
para a compilação, empacotamento e deploy do serviço Web em um contêiner Web. O
projeto de um serviço Web contém o documento WSDL, o descritor do serviço Web,
utilizado para realizar o deploy, além das classes que compõem a infraestrutura de
comunicação SOAP. Todas as facilidades oferecidas por este componente são acessíveis
por botões ou menus na ferramenta.
4.4 Perfil UML
4.4
56
Perfil UML
A UML, por si só, sem o uso de perfis UML, não tem expressividade suficiente
para representar todos os elementos da linguagem OWL. Entretanto, um perfil UML
consiste em uma coleção de extensões que personalizam a UML para um domínio
específico. Desta forma, este trabalho especifica e implementa um perfil UML cuja
finalidade é permitir a representação de alguns elementos da linguagem OWL em UML
para a modelagem de serviços Web semânticos.
O perfil UML definido e implementado pelo AutoWebS contém um conjunto
de estereótipos e tagged-values2 que são aplicados nos elementos do modelo UML para
representar seu significado e adicionar informações relacionadas ao domínio da aplicação
que são necessárias para enriquecer o modelo UML e também para as transformações que
este modelo será submetido.
A Figura 4.3 ilustra o perfil UML implementado neste trabalho. Neste perfil o estereótipo «owl:Ontology» é aplicado sobre a definição de um elemento Package da UML
e corresponde ao elemento Ontology da OWL. Este estereótipo define o domínio da ontologia e contém informações a respeito da versão da ontologia, autor, comentários, além de
declarações de namespaces. Uma ontologia pode importar conceitos de outras ontologias.
Desta forma, o estereótipo «owl:imports», que tem como metaclasse o elemento da UML
PackageImport, habilita o relacionamento entre os elementos de várias ontologias.
2 São
propriedades que os estereótipos podem ter.
4.4 Perfil UML
57
Figura 4.3: Perfil UML usado pela ferramenta AutoWebS
O estereótipo «owl:Class» representa um conceito que foi modelado como uma
classe. As propriedades DatatypeProperty e ObjectProperty são mapeadas como atributos de uma classe UML estereotipada por «owl:Class». Nestes atributos são aplicados os estereótipos «owl:DatatypeProperty» e «owl:ObjectProperty». O estereótipo
«rdfs:subClassOf» é aplicado sobre a metaclasse UML Generalization e representa generalizações de classes OWL.
Os estereótipos «Text-description» e «Category» estendem a metaclasse UML
Comment e possibilitam a descrição textual do serviço Web semântico e a associação
a uma categoria (ver Seção 2.3.1). Os estereótipos «Pre-condition» e «Effect» estendem a metaclasse UML Constraint com o objetivo de especificar restrições as quais
4.5 Importação das Ontologias OWL
58
devem ser satisfeitas para que o serviço Web seja executado apropriadamente. Na linguagem OWL-S, os elementos preconditions e effects são representados como fórmulas
lógicas e podem ser expressos com o uso de linguagens cujo padrão de codificação é
XML, tais como SWRL (Semantic Web Rule Language) [Horrocks et al., 2004] e RDF
[Manola and Miller, 2004], ou literais strings, tal como PDDL (The Planning Domain
Definition Language) [Ghallab et al., 1998]. Na versão atual da ferramenta AutoWebS o
suporte a visualização e gerenciamento das expressões lógicas é básico. Atualmente as
expressões lógicas são inseridas em um campo de texto do elemento Constraint da UML
e nenhum processamento é realizado pela ferramenta para assegurar a expressividade da
linguagem. Como trabalho futuro pretende-se desenvolver um GUI para prover a gerência
e visualização das expressões lógicas, tal como [Hassanpour et al., 2010] propôs.
O estereótipo «SemanticWebService» é aplicado sobre a definição de um tipo
UML Interface. Na interface em que o estereótipo «SemanticWebService» é aplicado,
são definidas as operações do serviço Web. As operações do serviço Web são modeladas
como métodos. Este estereótipo contém alguns tagged-values que servem para adicionar
informações suplementares ao serviço Web. O tagged-value targetNamespace define
o namespace usado no documento WSDL. O tagged-value URI WSDL determina a
URI do serviço Web. O tagged-value WebService Documentation serve para fins de
documentação enquanto que o tagged-value servicePort especifica a porta em que o
serviço Web executará. O tagged-value endPoint determina o tipo de endPoint utilizado
para comunicação fim-a-fim com serviço Web. No perfil UML é definido um tipo
Enumeration com os valores possíveis para o endPoint. Os valores possíveis para versão
atual da ferramenta são: HttpSoap11; HttpSoap12; e Http.
Os métodos definidos na interface estereotipada por «SemanticWebService» que
representam operações dos serviço Web, são estereotipados por «SWSOperation». O
estereótipo «SWSOperation» define um nome para uma operação e especifica os inputs
e output desta operação, que podem ser definidos como classes, tipos primitivos da
linguagem Java ou então como classes da ontologia de domínio, que estão representadas
no modelo UML pelo estereótipo «owl:Class».
4.5
Importação das Ontologias OWL
No processo de importação da ontologia de domínio, um conjunto de transformações XSLT é usado. Esse conjunto de transformações transforma um documento OWL
em um documento XMI que representa um modelo UML. As transformações XSLT são
aplicadas em alguns elementos da linguagem OWL a fim de se criar um modelo UML correspondente (requisito R3). O Apêndice C traz este conjunto de transformações XSLT.
4.5 Importação das Ontologias OWL
59
Para efeito de exemplificação do funcionamento da importação das ontologias
OWL e sua representação em UML, considere a ontologia Bibtex3 que representa os
conceitos e relacionamentos destes conceitos no domínio da linguagem BibTex para o
gerenciamento e formatação de referências bibliográficas.
A ontologia BibTex define 15 classes OWL: Entry, Booklet, Book, Inproceedings,
Proceedings, Manual, Inbook, Article, Incollection, Misc, Unpublished, Masterthesis,
PhdThesis, Techreport e Conference. Todas as classes são definidas como subclasses
de Entry. A classe Entry possui a propriedade do tipo DatatypeProperty hasISBN que
é herdada por todas as outras classes. As demais classes diferenciam-se pelo nome e
quantidade de propriedades. Por exemplo, a classe Book possui as propriedades do tipo
DatatypeProperty hasPublisher, hasTitle, hasYear e humanCreator enquanto que a classe
Article possui as propriedades do tipo DatatypeProperty hasAuthor, hasJournal, hasTitle
e hasYear.
O resultado do processo de importação da ontologia BibTex está ilustrado na
Figura 4.4. As transformações XSLT criam um diagrama de classes UML com os
elementos da ontologia BibTex. Na importação, as classes OWL são transformadas em
classes UML e as propriedades OWL do tipo DatatypeProperty são mapeadas para
atributos de classes UML.
Figura 4.4: Ontologia BibTex representada como UML
A Figura 4.5 demonstra como a classe OWL Booklet é convertida para uma
classe UML. O lado direiro da Figura 4.5 ilustra o trecho de código que especifica a classe
OWL enquanto que o lado direito ilustra a classe UML correspondente. A classe OWL
3 http://purl.org/net/nknouf/ns/bibtex
4.6 Metamodelo da Linguagem OWL-S
60
Booklet é uma subclasse de Entry e contém uma propriedade do tipo DatatypeProperty
chamada de hasTitle. A classe OWL Booklet é mapeada para a UML como um elemento packageElement do tipo uml:Class com o nome Booklet e identificador “_srVUwK60EeGyaLpUewWoVw“. A classe UML Booklet é uma generalização da classe
identificada por “_PSOQQK61EeGyaLpUewWoVw“, a classe Entry. A propriedade OWL
foi mapeada para o documento XMI como um elemento ownedAttribute com o nome
hasTitle e com valores possíveis definido como o tipo String dos tipos primitivos da UML.
Figura 4.5: Mapeamento da classe OWL em UML
4.6
Metamodelo da Linguagem OWL-S
A descrição semântica de um serviço Web associa os parâmetros de entrada
(input) e o retorno (output) das operações de um serviço Web, que estão descritos no
documento WSDL na forma de elementos message, com conceitos definidos em uma
ontologia. O modelo UML criado por intermédio da ferramenta AutoWebS para a especificação da interface do serviço Web contém informações importantes que são utilizadas
para associar os conceitos definidos em ontologias de domínio com os elementos do serviço Web.
Entretanto, apesar do modelo UML conter tais informações, a MDD propõe
a separação de conceitos arquiteturais através de níveis de abstração da arquitetura
de um sistema. Neste sentido, AutoWebS implementa um processo MDD, de forma
que a transformação do modelo UML para um arquivo OWL-S requer um modelo
intermediário, que esteja de acordo com um metamodelo para a linguagem OWL-S.
O metamodelo OWL-S implementado por este trabalho foi descrito em Ecore e
contempla a versão 1.1 da especificação OWL-S. Esta versão da especificação OWL-S
é compatível com o WSDL 1.1 (requisitos R2 e R5). A Figura 4.6 apresenta uma visão
simplificada do metamodelo para linguagem OWL-S.
4.6 Metamodelo da Linguagem OWL-S
61
Figura 4.6: Metamodelo OWL-S
No metamodelo, a classe ServiceProfi leé uma superclasse para todos os tipos de
descrições em alto nível a respeito do serviço Web. Ela contém as informações básicas
necessárias para vincular qualquer instância de Profi le, uma subclasse de ServiceProfi le,
com uma instância de Service. O serviço Web, definido através da classe Profi le, é
4.6 Metamodelo da Linguagem OWL-S
62
modelado em termos de dois tipos de informações: (i) informações da organização que
provê o serviço, que são informações de contato da entidade fornecedora do serviço e
a (ii) descrição funcional, que inclui os inputs e outputs do serviço, as pré-condições
(precondition) requisitadas e os efeitos (effects) esperados da execução do serviço.
O elemento ServiceProfile descreve apenas o funcionamento global do serviço
Web. Uma perspectiva detalhada sobre como interagir com o serviço Web é provida pela
classe Process, uma subclasse de ServiceModel. Uma instância de Process é um processo
que define a interação com o serviço Web. Em OWL-S processos não são necessariamente
programas a serem executados, mas sim uma especificação das formas com que um
cliente pode interagir com um serviço. Qualquer processo pode ter qualquer quantidade
de inputs, representando as informações que estão sob certas condições (preconditions),
necessárias para iniciar o processo. Processos podem ter qualquer número de outputs, as
quais representam as informações que o processo fornece ao solicitante. Inputs e Outputs
são representados como subclasses da classe Parameter e cada Parameter tem um tipo,
especificado usando um URI. Pode existir qualquer número de preconditions, que devem
ser satisfeitas para que um processo possa ser iniciado com êxito.
Em um documento WSDL as operações do serviço Web são especificadas como
blocos básicos de construção do serviço Web. As operações fornecem a estrutura e
a sintaxe das mensagens de input e output. OWL-S provê uma construção para cada
operação do serviço Web. Esta construção chama-se AtomicProcess e é caracterizada
principalmente em termos dos inputs, outputs, preconditions e effects (IOPE). OWLS define três tipos de processos: (i) AtomicProcess é um processo que pode ser visto
como uma descrição de um serviço que espera uma mensagem e retorna uma resposta,
ou seja, recebe um input, faz algum processamento, e depois retorna o output. Para
cada AtomicProcess, existe um elemento WsdlAtomicProcessGrounding que permite
a um solicitante do serviço codificar as mensagens para o processo a partir de seus
inputs e decodificar os outputs; (ii) CompositeProcess é um processo que define a
descrição de uma composição de serviços e corresponde as ações que exigem várias
interações com servidores. Um CompositeProcess é composto por outros processos do
tipo AtomicProcess ou CompositeProcess. Os processos que fazem parte da composição
são especificados a partir de estruturas de controle, tais como Sequence, Split, Choice,
If-Then-Else, Iterate e Repeat-While (ver Seção 2.3.2); (iii) SimpleProcess é um processo
que fornece um mecanismo de abstração para prover múltiplas visões de um mesmo
processo. Ele não é invocável e não está associado a nenhum elemento Grounding.
O elemento ServiceGrounding permite se representar os dados semânticos como
mensagens XML que são enviadas pela rede e também especifica como o receptor pode
interpretar essas mensagens XML e transformá-las novamente para os dados semânticos.
A classe WsdlGrounding é uma subclasse de ServiceGrounding e seu papel é fornecer
4.7 Implementação das Regras de Mapeamento entre UML e OWL-S
63
mecanismos para que as principais construções do arquivo WSDL possam ser referenciadas em OWL-S. Cada instância da classe WsdlGrounding contém uma lista de instâncias de WsdlAtomicProcessGrounding. Essa relação é representada pela propriedade
hasAtomicProcessGrounding. A propriedade owlsProcess garante que para cada processo
do tipo AtomicProcess exista somente um WsdlAtomicProcessGrounding. Por outro lado
a propriedade wsdlOperation assegura uma relação um-para-um entre o AtomicProcess e
a especificação WSDL.
4.7
Implementação das Regras de Mapeamento entre
UML e OWL-S
No metamodelo OWL-S são definidos todos os elementos e relacionamentos
que podem ser encontrados nos modelos OWL-S. Na abordagem MDD implementada
pela ferramenta AutoWebS, um modelo UML, que representa a interface de um serviço
Web semântico, é a entrada para um mecanismo que produz um modelo de saída em
conformidade com o metamodelo OWL-S.
A Figura 4.7 ilustra um trecho da transformação em QVT que implementa o mapeamento entre os modelos UML e OWL-S. Esta transformação, chamada de UMLProfile2OWLS, recebe como entra um modelo da UML 2 na versão 3.0.0 e cria um modelo
OWL-S de acordo com o metamodelo OWL-S. No método main (linha 9), a instrução
inUML.objectsOfType(UML::Interface) (linha 11) recupera uma lista de todos os elementos UML Interface do modelo de entrada. O operador QVT forEach (linha 11) faz uma
iteração sobre estes elementos e o operador QVT if (linha 12) faz uma seleção sobre os
elementos que tem o estereótipo SemanticWebService. A instrução seguinte, na linha 13,
recupera todos os elementos UML Operation - as operações do serviço Web - definidos
no elemento Interface. Ainda na mesma linha, com o operador forEach, é realizado uma
iteração sobre os elementos Operation na busca por aqueles com o estereótipo textitSWSOperation. Para cada operação do serviço Web, um modelo OWL-S é criado. A instrução
map (linha 16) faz uma chamada ao mapeamento createOWLS. No mapeamento createOWLS são construídos os elementos do modelo OWL-S. O Apêndice D traz na íntegra a
implementação da transformação em QVT.
O elemento Profile do modelo OWL-S é criado a partir do valor do taggedvalue WSDL Documentation, aplicado ao elemento UML Interface e dos tagged-values do
estereótipo Category. O id do elemento Profile é formado pela concatenação do nome da
operação com a palavra Profile. Desta forma, uma operação com nome subscribe, formará
o id subscribeProfile para o elemento Profile.
Os elementos WsdlGrounding, AtomicProcess e Service do modelo OWL-S são
4.7 Implementação das Regras de Mapeamento entre UML e OWL-S
64
Figura 4.7: Transformação de UML para OWL-S
criados de forma semelhante ao elemento Profile e os valores das suas propriedades são
especificados a medida em que o elemento WsdlAtomicProcessGrounding e os parâmetros
WsdlInputMessage e WsdlOutputMessage são criados.
No elemento WsdlAtomicProcessGrounding do modelo OWL-S, o valor do seu id é formado pela concatenação do nome da operação com a palavra
AtomicProcessGrounding. O valor do atributo wsdlDocument é o valor do taggedvalue URI WSDL Document aplicado no elemento UML Interface. O valor do
atributo wsdlInputMessage é formado pela concatenação do valor do tagged-value
targetNamespace com a caractere #, com nome do serviço e com a palavra Request.
O valor do atributo wsdlOutputMessage é formado pela concatenação do valor do
tagged-value targetNamespace com o caractere #, com nome do serviço e com a palavra Response. O atributo wsdlOperation recebe uma instância de WsdlOperationRef.
No objeto WsdlOperationRef a propriedade portType é formada pela concatenação do
tagged-value URI WSDL Document, com o caractere # e com o valor do tagged-value
textitendPoint. A propriedade operation é formada pela concatenação do tagged-value
URI WSDL Document, com o caractere # e com o nome do serviço.
No elemento OWL-S wsdlAtomicGrounding são especificados os inputs e
outputs do serviço Web semântico através da associação do elemento Message Part do
documento WSDL com um conceito definido como uma classe no documento OWL. Para
os casos em que os inputs e outputs de uma operação do serviço Web não têm uma correspondência direta com os elementos da ontologia de domínio, são necessários representar
como derivar a Message Part de um ou mais inputs ou outputs do Atomic Process.
A propriedade xsltTransformation contém um script XSLT que gera o Message
Part de uma instância de um Atomic Process. O script pode ser diretamente representado
como uma string ou pode ser referenciado por um URI. A transformação QVT, que faz
o mapeamento entre o modelo UML e o modelo OWL-S, cria automaticamente o script
4.8 Funcionamento da Ferramenta
65
XSLT para os casos em que são usados elementos da ontologia de domínio importada
como input ou output para especifi cação de uma operação do serviço Web semântico.
4.8
Funcionamento da Ferramenta
O funcionamento do AutoWebS, ilustrado na Figura 4.8, compreende basicamente três principais atividades que devem realizadas sequencialmente, (i) importação da
ontologia de domínio, (ii) criação do modelo UML e (iii) geração automática do serviço
Web e sua ontologia. A primeira e a última atividade são automatizadas pela ferramenta.
O usuário precisa realizar somente a segunda atividade, a modelagem da interface do
serviço Web semântico.
Figura 4.8: Funcionamento do AutoWebS
A primeira atividade consiste na importação da ontologia de domínio (ver
Seção 4.5) para a criação de um modelo UML. Na primeira atividade a ferramenta usa
o componente ImporterModule para execução das transformações XSLT e criação do
modelo UML. Este modelo UML contém os elementos da ontologia de domínio que
podem ser usados para modelagem da interface de um serviço Web. A segunda atividade
consiste na edição do modelo UML. Na segunda atividade, o usuário pode inserir ou
remover elementos no modelo UML recém criado para modelagem da interface do serviço
Web.
A terceira atividade ocorre após a modelagem da interface do serviço Web.
Neste ponto, o AutoWebS exporta a representação gráfica do modelo UML para um
4.8 Funcionamento da Ferramenta
66
documento XMI. Então, no documento XMI é aplicado um conjunto de regras de
transformações QVT para geração automática de um modelo OWL-S. Também, sobre
o mesmo documento XMI, é aplicado um template Acceleo, chamado UML to Java, para
criação do código fonte na linguagem Java dos elementos contidos no modelo UML que
define a interface do serviço Web. Depois de criado o modelo OWL-S, outro template
Acceleo é utilizado para criar o documento OWL-S. Após esta atividade de geração
de artefatos, são produzidos o código fonte do serviço Web e o documento OWL-S
correspondente.
Para geração do código fonte do serviço Web a descrição das operações do
serviço Web, que são representadas através de métodos públicos em uma interface
Java, é submetida ao componente WebServiceModule. Este componente, por intermédio
do subcomponente Factory, faz chamadas à API do Engine do Axis2 para realizar as
seguintes tarefas:
1. Criar o documento WSDL associado ao serviço Web;
2. Gerar o código fonte para implementação do serviço Web, isto é, os artefatos de
código que compõem a infraestrutura do serviço Web;
3. Criar o script Ant build.xml para o projeto do serviço Web.
Os principais artefatos de código gerados são: i) o descritor de deploy services.xml,
que contém a configuração de execução do serviço Web, ii) o MessageReceiver, que é
responsável pelo comunicação fim-a-fim, iii) Skeletons e Stubs que implementam qual
protocolo utilizado para transmissão das mensagens no lado servidor e cliente, iv) o
arquivo build.xml, que descreve o processo de construção (build) e as dependências
do projeto do serviço Web com APIs de terceiros. O arquivo build.xml é utilizado
pelo Apache Ant [Loughran and Hatcher, 2007] para automatizar a construção do serviço
Web a medida que automatiza o processo de build das classes e o empacotamento para o
formato aar que é o formato usado para deploy em contêineres Web.
O componente WebServiceModule agrega o documento WSDL e os artefatos
de código do serviço Web em um projeto para plataforma Eclipse para que o usuário
possa programar as regras de negócio do serviço Web, ou seja, implementar as chamadas
aos métodos de APIs, incluir bibliotecas de terceiros, etc. Após ter implementado as
regras de negócio do serviço Web, o usuário pode usar as funcionalidades de compilação
e deploy oferecidas pelos subcomponentes Deployer e Compiler. O subcomponente
Compiler compila o projeto utilizando o script build.xml do Apache Ant. O resultado da
compilação é um arquivo com a extensão aar que contém o código fonte do serviço Web
e a implementação do protocolo SOAP, no lado servidor, fornecida pelo Axis2. Através
de alguns parâmetros, que podem estar pré-definidos em um arquivo de configuração, o
subcomponente Deployer pode fazer o deploy do serviço Web em um contêiner Web que
tenha instalado o Axis2 Runtime.
CAPÍTULO 5
Estudo de Caso
Este capítulo apresenta um estudo de caso onde o AutoWebS é usado na criação
de serviços Web semânticos para os serviços providos por sistemas de middleware de
provisão de contexto [Kjaer, 2007] que não utilizem a tecnologia de serviços Web para
oferecer seus serviços e/ou ontologias para representar os elementos de contexto. Este
estudo de caso tem dois principais objetivos: mostrar o uso da ferramenta na criação
de serviços Web semânticos e descobrir/identificar possíveis limitações da ferramenta e
pontos de melhorias.
Este capítulo está organizado como se segue. A Seção 5.1 faz uma breve apresentação de sistemas de middleware de provisão de contexto, apresentando o middleware
usado no estudo de caso; a Seção 5.2 apresenta a ontologia de domínio; a Seção 5.3 apresenta o processo de modelagem do serviço Web semântico utilizando-se a ferramenta
AutoWebS; a Seção 5.4 discute os resultados e faz uma análise da execução do estudo de
caso.
5.1
Sistemas de middleware de provisão de contexto
Sistemas de middleware de provisão de contexto são soluções que oferecem uma
infraestrutura que facilita o desenvolvimento de aplicações sensíveis ao contexto em domínios diversos, através da disponibilização de mecanismos de gerenciamento dos dispositivos; modelagem, interpretação e refinamento dos dados de contexto; mecanismos de
distribuição das informações de contexto, etc. Cada plataforma de middleware de provisão de contexto utiliza um modelo para representar os dados de contexto e outro modelo
para comunicação. Existem várias abordagens para modelagem dos dados de contexto
[Strang and Popien, 2004], as mais utilizadas são: Chave-Valor; Markup Schema; Gráfico; Orientado a Objeto; Lógico; e Ontologias. Os modelos de comunicação definem a
arquitetura, como por exemplo, cliente-servidor e P2P (par-to-par), e o estilo, como por
exemplo, RCP (Remote procedure calls), SOA (Service-oriented architecture) e REST
(Representational state transfer), utilizados para oferecer os serviços do middleware sobre uma infraestrutura de rede disponível.
5.1 Sistemas de middleware de provisão de contexto
68
Entretanto, apesar de um middleware de provisão de contexto oferecer soluções que facilitam o desenvolvimento de aplicações sensíveis ao contexto, normalmente,
apenas o uso de um único middleware não é suficiente para atender os requisitos de
uma aplicação. Desta forma, devem-se utilizar serviços de várias plataformas de middleware, tornando o desenvolvimento da aplicação uma tarefa nada trivial para os engenheiros de software e programadores, pois entender os modelos utilizados para representação dos dados de contexto, bem como os modelos de comunicação adotados
por cada middleware e fazer a conversão deles para a representação adotada pela aplicação, são complexidades adicionais que devem ser evitadas. Para endereçar estes problemas, surgiram algumas iniciativas, tais como ReMMoC [Grace et al., 2003], Home
soa [Bottaro and Gérodolle, 2008] e OpenCOPI (OpenCOntext Platform Integration)
[Lopes et al., 2008, Lopes et al., 2009a, Lopes et al., 2009b], com a proposta de assegurar
a interoperabilidade e fazer a integração de sistemas de middleware.
O OpenCOPI (OpenCOntext Platform Integration) é uma plataforma que integra
diferentes sistemas de middleware de provisão de contexto e provê um serviço de contexto
unificado. O OpenCOPI fornece um mecanismo de composição semântica de serviços de
contexto, onde aplicações são clientes de serviços e sistemas de middleware de contexto
são provedores de serviços de contexto e, para prover independência de plataforma e
simplificar a integração com diferentes sistemas de middleware, o OpenCOPI é baseado
em tecnologias SOA e Web semântica. O OpenCOPI utiliza uma ontologia de domínio,
especificada em OWL e organizada em duas camadas, para representar os elementos de
contexto.
No OpenCOPI, a integração de plataformas de middleware de provisão de
contexto que não utilizam a tecnologia dos serviços Web, para prover seus serviços, ou
ontologias para representar os elementos de contexto, é feita por intermédio de drivers.
Os drivers implementam as funcionalidades relacionadas a abstração dos modelos de
comunicação e a conversão dos modelos de contexto, adotados pelos sistemas de
middleware, para os modelos utilizados pelo OpenCOPI. A Figura 5.1 ilustra a arquitetura
do OpenCOPI. Nesta arquitetura, os drivers podem ser vistos sob dois diferentes pontos
de vista: (i) sob o ponto de vista do OpenCOPI e de seu mecanismo de composição e
execução de serviços, os drivers representam um proxy para os sistemas de middleware
subjacentes, sendo responsáveis por repassar as requisições das aplicações aos serviços;
(ii) sob o ponto de vista do middleware subjacente, um driver nada mais é do que um
cliente do middleware.
Os componentes da camada UnderlayIntegrationLayer são responsáveis pela
integração dos sistemas de middleware subjacentes. O driver é responsável por realizar
as consultas e subscrições realizadas pelo OpenCOPI aos middleware de provisão de
contexto subjacentes. Cada driver precisa estender o componente GenericDriver. Esse
5.2 Ontologia de Domínio
Figura 5.1: Arquitetura do OpenCOPI
[Lopes et al., 2009b]
69
-
extraído
de
componente implementa a interface do lado do OpenCOPI e define as operações para a
transformação do modelo de contexto e a comunicação entre OpenCOPI e um middleware
específico [Lopes et al., 2009b].
Entretanto, a criação de um driver é um processo que requer um profundo
conhecimento da API do middleware de provisão de contexto e necessita da recompilação
do OpenCOPI, pois o driver é um componente de software embutido. Além disso,
não existe um padrão ou metodologia bem definida para sua criação. Ademais, as
transformações implementadas em um driver para adequação dos elementos de contexto
entre middleware-OpenCOPI, normalmente não podem ser reaproveitadas para criação de
outros drivers.
Neste estudo de caso usamos a ferramenta AutoWebS para a modelagem e geração automática de serviços Web semânticos para os serviços de sistemas de middleware de
provisão de contexto não baseados em serviços Web e/ou que não utilizam ontologias para
representação dos elementos de contexto. Desta forma, conforme ilustrado na Figura 5.1,
os serviços Web semânticos gerados para os serviços fornecidos por cada middleware de
contexto substituem os drivers e toda complexidade envolvida na sua construção.
5.2
Ontologia de Domínio
O estudo de caso utiliza uma ontologia, chamada de OilExploration, que descreve os conceitos do domínio da indústria de Petróleo. Esses conceitos, ilustrados na
Figura 5.2, são usados como inputs e outputs para os vários serviços que possam estar
relacionados a este domínio. Todos os conceitos desta ontologia foram especificados em
um arquivo OWL.
5.2 Ontologia de Domínio
70
Figura 5.2: Ontologia de domínio OilExploration
Na Figura 5.2, as elipses mais escuras representam tarefas (tasks). Para
cada uma das tarefas deve existir, pelo menos, um serviço Web correspondente.
A Figura 5.3 ilustra um trecho da ontologia OilExploration que define o conceito
PumpUnit que representa uma unidade de bombeio mecânico (UB) e foi definido
como uma classe OWL. A classe PumpUnit possui como superclasse Equipment e tem
três propriedades: minBurdenValue e maxBurdenValue, propriedades DatatypeProperty,
definidas como tipo String do Schema XML; e actualRegime, uma propriedade
ObjecProperty, uma referência à classe Regime que indica o regime atual de operação da UB. Maiores detalhes da ontologia OilExploration podem ser encontrado no site
http://www.ppgsc.ufrn.br/∼fred/opencopi/case_studies.html.
Na ontologia de domínio, a tarefa subscribe, existe um serviço chamado
WellDatabase. Este serviço provê informações sobre os poços de petróleo e, assincronamente, fornece o valor atual da carga de petróleo (burden) em cada UB. O serviço
WellDatabase abstrai um widget do framework Context Toolkit (CT) [Dey et al., 2001]. O
framework CT é um middleware de provisão de contexto que utiliza um modelo de comunicação não baseado nas tecnologias dos serviços Web, porém baseado em um protocolo
XML transportado por HTTP. Esse widget monitora o funcionamento da UB e representa
os elementos de contexto no formato chave-valor.
Desta forma, para o serviço WellDataBase, faz-se necessário a conversão do
modelo de contexto de chave-valor para ontologia e do modelo de comunicação HTTP
para serviços Web. A próxima seção apresenta como procedemos a modelagem e geração
do serviço Web semântico para o serviço WellDataBase.
5.3 Modelagem do Serviço Web Semântico
71
Figura 5.3: Trecho da ontologia de domínio OilExploration
5.3
Modelagem do Serviço Web Semântico
Para criar o serviço Web semântico para o serviço WellDatabase usamos a
ferramenta AutoWebS e realizamos cinco atividades, conforme demonstra a Figura 5.4.
Figura 5.4: Atividades realizadas para o estudo e caso
1. Importação da ontologia de domínio;
2. Modelagem da interface do serviço Web;
3. Acionamento do mecanismo de geração automática do arquivo OWL-S e esqueleto
de código fonte do serviço Web;
4. Implementação da regra de negócio do serviço Web;
5. Deploy do serviço Web.
A primeira atividade consiste em selecionar o arquivo OWL que contém a ontologia
de domínio e repassá-la para o AutoWebS. Desta forma, a ferramenta cria um modelo
UML (diagrama de classes) representando alguns elementos desta ontologia. Conforme
ilustrado na Figura 5.5, o AutoWebS cria uma representação dos conceitos da ontologia
especificados como classes OWL em classes UML.
5.3 Modelagem do Serviço Web Semântico
72
Figura 5.5: Trecho da ontologia de domínio OilExploration
Os elementos do modelo UML, criados a partir da ontologia de domínio,
foram usados para especificação da interface do serviço Web, ou seja, para realizar a segunda atividade. Neste estudo de caso, criamos a interface WellDatabase e
aplicamos o estereótipo «semanticWebService». Nesta interface definimos o método
subscribeBurdenAssyncService e aplicamos o estereótipo «SWSOperation». Este método
recebe como parâmetros de entrada (input) os tipos OilWell e PumpUnit, ambos classes
do modelo UML estereotipados por «owl:Class». O retorno do método (output) é uma
classe do tipo Regime, que também foi importada da ontologia de domínio.
Na terceira atividade, após modelado a interface do serviço Web, acionamos na
ferramenta AutoWebS o mecanismo de geração automática do arquivo OWL-S e esqueleto de código fonte do serviço Web. A Figura 5.6 ilustra os artefatos de código gerados
automaticamente pela ferramenta. O arquivo WellDatabase.wsdl contém o documento
WSDL do serviço Web. O descritor de deploy, services.xml, contém a configuração de
execução do serviço Web. A classe Java WellDatabaseMessageReceiverInOut.java
é responsável pela comunicação fim-a-fim do serviço Web com os clientes, enquanto que
as classes Java WellDatabaseSkeleton.java e WellDatabaseStub.java são, respec-
5.3 Modelagem do Serviço Web Semântico
73
tivamente, o skeleton e stub e implementam o protocolo SOAP utilizado para transmissão
das mensagens entre servidor e cliente. O arquivo build.xml descreve o processo de
construção (build) e as dependências do serviço Web. Todos os artefatos foram incluídos
em um projeto Java para plataforma Eclipse.
Figura 5.6: Artefatos de códigos gerados
A quarta atividade consistiu da implementação das regras de negócio do
serviço Web. Nesta atividade foram implementadas as chamadas à API do serviço
WellDatabase, implementado com o framework CT. A Figura 5.7 ilustra o trecho de
código da operação subscribeBurdenAssyncService do serviço Web. No método Java
subscribeBurdenAssyncService são realizadas a conexão ao serviço WellDataBase implementado com CT, a subscrição ao serviço de notificação e o tratamento dos dados
recebidos pelo serviço WellDataBase implementado com o CT. Conforme a Figura 5.7,
os tratamentos dos dados são realizados pelo método getRegime. Neste método, o retorno
que está no formato chave-valor, é convertido para um objeto Regime.
Após ter implementado as regras de negócio do serviço Web, usamos as funcionalidades de compilação e deploy. O projeto Java Eclipse foi compilado utilizando o
script build.xml do Apache Ant. O resultado da compilação é um arquivo com a extensão aar que contém o código fonte do serviço Web e a implementação do protocolo
SOAP, no lado servidor, fornecida pelo Axis2. O processo de deploy é bastante simples.
No deploy, a ferramenta faz uma cópia do arquivo com a extensão aar para no contêiner
Web que tenha instalado o Axis2 Runtime.
5.4 Resultados
74
Figura 5.7: Implementação da regra de negócio do serviço Web
5.4
Resultados
A ferramenta AutoWebS proporcionou a criação do serviço Web semântico
para o serviço WellDataBase usando os conceitos definidos em uma ontologia OWL.
Os conceitos definidos como classes na ontologia foram mapeados para classes em um
modelo UML. Tais classes UML foram usadas para criar a interface do serviço Web
semântico. Durante o processo de modelagem da interface do serviço Web semântico
a ferramenta abstraiu a sintaxe da linguagem OWL e o uso da UML tornou mais claro e
intuitivo a criação do serviço Web semântico.
Com a ferramenta AutoWebS foi possível criar os serviços Web semânticos que
abstraem o modelo de comunicação usado pelo CT e também realizam a conversão da
representação dos elementos de contexto de chave-valor para ontologia. O serviço Web
semântico foi implantado em um contêiner Web e testado a partir de uma aplicação cliente
desenvolvida com a API OWL-S.
Com o estudo de caso podemos demonstrar o uso da ferramenta e descobrir
alguns erros/inconsistências que foram corrigidos. Os principais erros apresentados pela
ferramenta estavam presentes nas transformações entre os modelos UML e OWL-S. Os
erros foram corrigidos e os artefatos de código gerados pela ferramenta foram analisados
sintaticamente com validadores disponíveis na Internet.
O estudo de caso em questão apresenta algumas limitações. Dentre as limitações
do estudo de caso está o fato de não existirem expressões lógicas que especificam
condições que determinam a funcionalidade do serviço Web como, por exemplo, as précondições (precondition) requisitadas pelo serviço e os efeitos (effects) esperados da
execução do serviço. As condições precondition e effects são representadas no modelo
UML como elementos Constraints.
5.4 Resultados
75
Após o estudo de caso constatou-se a necessidade de uma avaliação mais
elaborada sobre a ferramenta. Desta forma, conduzimos um experimento controlado
que avalia a ferramenta AutoWebS no processo de criação de um conjunto de serviços
Web semânticos, confrontando-a com uma suíte de aplicativos que se propõe a realizar
as mesmas atividades que o AutoWebS. O experimento controlado é apresentado no
Capítulo 6.
CAPÍTULO 6
Experimento Controlado
Este capítulo apresenta um experimento controlado que avalia o AutoWebS em
relação a uma suíte de aplicativos composta pelo OWL-S Editor [Elenius et al., 2005], um
plugin do software Protégé [Noy et al., 2000] que é amplamente utilizado para criação de
ontologias OWL-S, e o plugin Axis2 da IDE Eclipse, usado para criar serviços Web.
Os objetivos deste experimento controlado são: (i) obter um indicativo da qualidade
dos artefatos de códigos gerados pela ferramenta AutoWebS; (ii) comparar os tempos
de desenvolvimento de serviços Web semânticos obtidos pela ferramenta AutoWebS e
pela suíte de aplicativos; (iii) mensurar o esforço despendido e a dificuldade no uso da
ferramenta AutoWebS e na suíte de aplicativos OWL-S Editor e Axis2; (iv) verificar se
abordagem de integração de ferramentas para criação de serviços Web semânticos é mais
eficiente do que a abordagem tradicional.
O experimento contou com a participação de dois participantes com perfis
semelhantes, ou seja, os participantes apresentam o mesmo conhecimento a respeito das
tecnologias de serviços Web semânticos. Os participantes conhecem bem a linguagem
UML e já tiveram algum contato com a linguagem OWL e OWL-S. O experimento foi
aplicado separadamente em cada indivíduo e utilizou o plano experimental quadrados
latinos [Fang et al., 2006], pois existem dois fatores de ruído com influência significante
na variável de saída: (i) experiência do usuário com as tecnologias dos serviços Web
semânticos e (ii) a complexidade das tarefas envolvidas na execução do experimento.
Para execução do experimento foram usados oito projetos de serviços Web semânticos
que foram implementados usando-se o AutoWebS e a suíte de aplicativos, totalizando 16
execuções do experimento. Para análise dos resultados foi usado o teste estatístico nãoparamétrico de Wilcoxon [Corder and Foreman, 2009].
O restante deste capítulo está estruturado com se segue: A Seção 6.1 apresenta
as ferramentas escolhidas para realização do experimento controlado; a Seção 6.2 apresenta os projetos dos serviços Web semânticos usados na condução do experimento; a
Seção 6.3 descreve o planejamento do experimento; a Seção 6.4 apresenta a execução do
experimento; a Seção 6.5 relata as análises e interpretações dos dados obtidos da execução
do experimento.
6.1 Ferramentas Avaliadas
6.1
77
Ferramentas Avaliadas
O experimento avaliou a ferramenta AutoWebS (ver Seção 4) e uma suíte de
ferramentas composta pelos plugins Axis2 para IDE Eclipse1 e OWL-S Editor do software
Protégé. Juntos, os plugins Axis2 e OWL-S Editor, tradicionalmente são usados para
o desenvolvimento de um serviço Web semântico da seguinte forma: (i) primeiramente
cria-se o serviço Web com o uso do plugin Axis2 para IDE Eclipse e (ii) depois cria-se a
ontologia ou descrição semântica do serviço Web através do OWL-S Editor do Protégé.
Desta forma, para este experimento controlado, consideramos a suíte de aplicativos
formada pelos plugins OWL-S Editor do Protégé e Axis2 da IDE Eclipse.
6.2
Projetos de Serviços Web Semânticos
Para execução do experimento foram usados oito projetos de serviços Web semânticos que foram implementados usando-se o AutoWebS e a suíte de aplicativos. O
projeto de um serviço Web semântico (ou especificação) forne uma descrição textual da
interface do serviço Web e dos conceitos usados nas ontologias OWL para descreve-lo
semanticamente. Para cada projeto são apresentadas as ontologias e a especificação da
interface do serviço Web, detalhando seus inputs, outputs e preconditions, quando existirem. Dentre os projetos usados no experimento controlado, apresentados em seguida, os
dois primeiros projetos usam a ontologia de domínio OilExploration, desenvolvida para
estudos de caso da plataforma OpenCOPI (ver Seção 5). Os demais projetos usam ontologias públicas e de livre acesso, contidas nos exemplos da API OWL-S2 . Nas próximas
seções são apresentados os projetos de serviço Web semânticos.estão representadas em
documentos OWL.
6.2.1
Serviço Web semântico OilMonitor 1
Ontologia de Domínio A ontologia de domínio é a OilExploration (ver Seção 5) que
representa os conceitos do domínio de Petróleo e Gás.
Serviço Web O serviço Web chamado de WellDatabase fornece informações sobre os
poços de petróleo. Esta serviço é responsável por fornecer o valor atual da carga
de petróleo em cada unidade de bombeio mecânico (UB) através da operação
subscribeBurdenAssyncService. Esta operação tem como parâmetros de entrada
OilWell e PumpUnit da ontologia OilExploration. O retorno da operação é um tipo
Regime da ontologia OilExploration.
1 http://axis.apache.org/axis2/java/core/
2 http://www.mindswap.org/2004/owl-s/services.shtml
6.2 Projetos de Serviços Web Semânticos
6.2.2
78
Serviço Web semântico OilMonitor 2
Ontologia de Domínio A ontologia de domínio é a OilExploration (ver Seção 5) que
representa os conceitos do domínio de Petróleo e Gás.
Serviço Web O serviço Web HRDabase fornece informações sobre os funcionários
como, por exemplo, quais funcionários estão em serviço em um determinado
momento. Esse serviço tem duas operações: searchResponsibleEngineerService
com o parâmetro de entrada Field da ontologia OilExploration e o retorno Engineer
da ontologia OilExploration; e a operação searchAvailableEmployeeService, com
o parâmetro de entrada Field da ontologia OilExploration e retorno Employee da
ontologia OilExploration.
6.2.3
Serviço Web semântico Book Finder
Ontologia de Domínio Este projeto utiliza a ontologia de domínio BibTex que representa
os conceitos e relacionamentos destes conceitos no domínio da linguagem BibTex
para o gerenciamento e formatação de referencias bibliográficas.
Serviço Web O serviço Web LookyBookService retorna as informações de um livro a
partir de um título. O serviço contém uma operação chamada de DoKeywordSearch
que usa uma busca baseada em palavra chave a partir da sequência de entrada,
codificado como um String, e retorna um tipo Book da ontologia BibTex. Nas classes
OWL Book estão definidas as informações do livro contendo o número ISBN, nome
do autor e informações do editor.
6.2.4
Serviço Web semântico Zip Code Finder
Ontologia de Domínio Este projeto utiliza a ontologia de domínio Zip Code que define
os conceitos relacionados ao domínio de código de endereçamento postal.
Serviço Web O serviço Web ZipCode retorna o código postal para uma cidade/estado.
Se houver mais de um código postal associado a uma determinada cidade, apenas o
primeiro é retornado. O serviço contém uma operação chamada de ListByCity que
recebe como entrada o nome da cidade e do estado, codificados como duas Strings.
O retorno da operação é um elemento ZipCode da ontologia Zip Code.
6.2.5
Serviço Web semântico Latitude Longitude Finder
Ontologias de Domínio Este projeto usa as ontologias Zip Code e FactBook. A ontologia
Zip Code define os conceitos relacionados ao domínio de códigos de endereçamento
postal. A ontologia FactBook define os conceitos do domínio de localização e
posicionamento geográfico.
6.2 Projetos de Serviços Web Semânticos
79
Serviço Web O serviço Web ZipcodeLookupService retorna a latitude e longitude de
um determinado código postal. A operação ZipToLatLong recebe como parâmetro
de entrada um elemento ZipCode da ontologia Zip Code e retorna um elemento
LatLong da ontologia FactBook.
6.2.6
Serviço Web semântico Barnes and Nobles Price Finder
Ontologias de Domínio Este projeto usa as ontologias BibTex e Concepts. A ontologia
BibTex representa os conceitos e relacionamentos destes conceitos no domínio da
linguagem BibTex para o gerenciamento e formatação de referencias bibliográficas.
A ontologia Concepts define os conceitos monetários e de transações financeiras.
Serviço Web O serviço Web BNPrice retorna o preço de um livro. A operação
GetBNQuote recebe como entrada um elemento Book da ontologia BibTex e retorna
o seu preço como um elemento Price da ontologia Concepts. O preço é devolvido
em dólares e se o ISBN dado não é encontrado em estoque, então o valor de -1 é
retornado.
6.2.7
Serviço Web semântico BabelFish Translator
Ontologia de Domínio Este projeto usa a ontologia BabelFishTranslator. Esta ontologia
define os conceitos relacionados às diferentes línguas e traduções entre línguas.
Serviço Web O serviço Web TranslatorService converte textos de uma língua para outra língua. Neste serviço, a operação getTranslation recebe como entrada dois
parâmetros, o texto a ser traduzido, codificado como um String, e um elemento
SupportedLanguage da ontologia BabelFishTranslator, que representa a língua
do texto de entrada e a língua saída desejada. O retorna desta operação é a
palavra traduzida codificada como String e um elemento SupportedLanguage
da ontologia BabelFishTranslator. Neste serviço há um total de nove idiomas
suportados pelo tradutor. A precondição do serviço, o elemento precondition
SupportedLanguagePair definido na ontologia BabelFishTranslator, requer que o
idioma de entrada e o idioma de saída sejam diferentes.
6.2.8
Serviço Web semântico Currency Converter
Ontologias de Domínio Este projeto usa as ontologias Concepts e Currency. A ontologia
Concepts define os conceitos monetários e de transações financeiras. A ontologia
Currency define os conceitos monetários e moedas.
Serviço Web O serviço Web CurrencyConverterService converte um determinado preço
para outra moeda. A operação convertPrice recebe como entrada os elementos
6.3 Planejamento do Experimento
80
Price da ontologia Concepts e Currency da ontologia Currency. O retorno desta
operação é um elemento Price da ontologia Concepts.
6.3
Planejamento do Experimento
O planejamento do experimento controlado seguiu a abordagem GQM
(Goal/Question/Metric) [Basili et al., 1994]. Nesta abordagem, primeiramente são definidos os objetivos ou metas (Goals) a serem alcançados com o experimento. Em uma
segunda etapa, são formuladas questões (Questions) que devem ser respondidas para
alcançar os objetivos traçados. Por fim, as métricas (Metrics) são estabelecidas para
tornar possível mensurar as questões levantadas.
6.3.1
Objetivos
Os objetivos deste experimento controlado são:
1. Obter um indicativo da qualidade dos artefatos de códigos gerados pela ferramenta
AutoWebS;
2. Comparar os tempos de desenvolvimento de serviços Web semânticos obtidos pela
ferramenta AutoWebS e pela suíte de aplicativos;
3. Mensurar o esforço despendido e a dificuldade no uso da ferramenta AutoWebS e
na suíte de aplicativos OWL-S Editor e Axis2;
4. Verificar se abordagem de integração de ferramentas para criação de serviços Web
semânticos é mais eficiente do que a abordagem tradicional (desenvolvimento a
partir de duas etapas, (i) criação do serviço Web e (ii) criação da ontologia do
serviço Web).
6.3.2
Questões a serem respondidas e métricas correspondentes
Sobre a ferramenta
Q1 Qual ferramenta é mais eficiente sob o ponto de vista da criação da ontologia do
serviço Web?
M1.1 Quantidade de problemas reportados durante a execução do experimento.
M1.2 Correture da ontologia do serviço Web gerada pelas ferramentas. Sobre corretude
entende-se a quantidade de elementos na ontologia do serviço Web que estão
errados ou inconsistentes.
Q2 Qual ferramenta gera a descrição semântica do serviço Web (ontologia do serviço
Web) com a menor quantidade de erros?
6.3 Planejamento do Experimento
81
M2.1 Comparação da ontologia do serviço Web com um gabarito (ontologia previamente
criada e validada para o serviço Web). Diferença entre o valor encontrado e o valor
de referência (gabarito).
Sobre o grau de dificuldade, tempo e esforço despendido na criação das diferentes
ontologias dos serviços Web
Q3 As ferramentas apresentaram variação expressiva quanto ao grau de dificuldade para
criação das diferentes ontologias dos serviços Web? Qual ferramenta apresenta
maior grau de dificuldade para criação das diferentes ontologias dos serviços Web?
M3.1 Avaliação subjetiva realizada a partir de questionários.
Q4 O uso da abordagem empregada pelo AutoWebS torna a criação de serviços Web
semânticos mais rápida ao se comparar com a abordagem tradicional? Qual ferramenta proporciona a menor quantidade de tempo para criação da descrição semântica de um serviço Web?
M4.1 Cronometrar o tempo total para a criação dos serviços Web semânticos.
Q5 Qual das duas ferramentas necessita de um menor esforço despendido para criação
da ontologia de serviços Web?
M5.1 Avaliação subjetiva.
M5.2 Quantidade de problemas reportados.
Sobre o uso da ferramenta
Q6 A abordagem proposta pelo AutoWebS na utilização de UML para a modelagem
de serviços Web semânticos é mais intuitiva do que a abordagem tradicional,
empregada pela ferramenta OWL-S Editor?
M6.1 Avaliação subjetiva.
Q7 A abordagem MDD empregada pela ferramenta AutoWebS é satisfatória do ponto de
vista do usuário?
M7.1 Avaliação subjetiva do usuário.
Q8 A integração das funcionalidades para o desenvolvimento de um serviço Web semântico em uma ferramenta contribui positivamente?
M8.1 Avaliação subjetiva do usuário.
6.3 Planejamento do Experimento
6.3.3
82
Hipóteses
As seguintes hipóteses deverão ser verificadas com os resultados do experimento:
Alternativas
H1 A ontologia do serviço Web criada com o auxílio do plugin OWL-S do Protégé
apresenta menor quantidade de elementos errados ou inconsistentes do que a
ontologia do serviço Web criada com o AutoWebS.
H2 O tempo total necessário para criação de serviços Web semânticos utilizando a
ferramenta AutoWebS é menor do que quando utilizado a suíte de aplicativos
(Eclipse com Axis2 e plugin OWL-S do Protégé).
H3 A integração das várias funcionalidades necessárias para criação de serviços Web
semânticos contribui significativamente para o seu desenvolvimento.
H4 A representação de ontologias como classes de um diagrama de classes da UML e,
também, a representação da interface de um serviço Web e suas operações como
um tipo interface da UML, torna sua compreensão mais fácil para usuários com
conhecimento técnico não muito elevado sobre as tecnologias da Web semântica.
Nulas
H10 A ontologia do serviço Web criada com o auxílio do plugin OWL-S do Protégé não
contribui para um número menor de elementos errados ou inconsistentes no arquivo
OWL-S.
H20 Não existe diferenças perceptíveis no tempo necessário para criação de serviços Web
semânticos quando utilizado o AutoWebS.
H30 A integração das várias funcionalidades necessárias para criação de serviços Web
semânticos não contribui significativamente para o seu desenvolvimento.
H40 O uso do perfil UML não torna a compreensão da ontologia de domínio e tão pouco
da interface de um serviço Web, mais fáceis.
6.3.4
Variáveis
Variáveis Independentes
Existem duas variáveis independentes para este experimento:
1. Ferramenta 1 - AutoWebS
2. Ferramenta 2 - Eclipse com Axis2 + plugin OWL-S Protégé
6.3 Planejamento do Experimento
83
Não é interesse deste experimento a investigação do efeito das diferentes complexidades
dos projetos de serviços Web semânticos, nem mesmo a investigação dos níveis de
conhecimentos dos usuários. Desta forma, parte-se do pressuposto que os oito projetos
utilizados na condução do experimento apresentam a mesma complexidade e que os
usuários possuem o mesmo nível de conhecimento das tecnologias dos serviços Web
semânticos.
Variáveis Dependentes
As variáveis dependentes foram estabelecidas para mensurar as questões levantadas. Neste estudo foram definidas as seguintes variáveis dependentes:
1. Quantidade total de erros ou inconsistências no arquivo OWL-S
2. Tempo total para criação dos serviços Web semântico.
3. Satisfação subjetiva do usuário.
A quantidade total de erros ou inconsistências no arquivo OWL-S diz respeito à completude da ontologia OWL-S criada pela ferramenta. Em alguns casos como, por exemplo, quando se necessita de transformações XSLT, algumas ferramentas não criam esses
scripts automaticamente. A variável satisfação subjetiva é medida através de um questionário aplicado após a execução do experimento.
Variáveis Controladas
Dois principais fatores podem afetar a condução do experimento. Duas variáveis
controladas minimizam os efeitos destes fatores no experimento controlado.
1. Complexidade do projeto do serviço Web
2. Nível de conhecimento do participante sobre as tecnologias dos serviços Web
semânticos
6.3.5
Seleção dos Participantes e Treinamento
O experimento controlado teve a participação de dois indivíduos. Os indivíduos,
na época do experimento, possuíam conhecimentos básicos a respeito das tecnologias de
serviços Web semânticos, conheciam as principais construções das linguagens OWL e
OWL-S e dominavam a linguagem para modelagem UML. Foi oferecido um treinamento
aos participantes do experimento sobre as ferramentas e linguagens utilizadas. O treinamento teve como objetivo apresentar noções básicas a respeito de cada ferramenta e as
linguagens a fim de nivelar o conhecimento dos indivíduos.
6.4 Operação do Experimento
6.3.6
84
Local do Experimento e Recursos
Os experimentos foram realizados em dois computadores, durante dois dias. Os
recursos necessários também estavam disponíveis a todos os participantes. O mecanismo
utilizado para cronometragem do tempo foi um timer instalado nos computadores. Este
timer era acionado no início de cada execução do experimento e parado no seu término.
Para verificar a quantidade de erros e inconsistências no arquivo OWL-S foi usado um
gabarito, um arquivo OWL-S previamente criado e validado para cada projeto do serviço
Web semântico.
6.3.7
Validade
Validade Interna: como mencionado na Seção 6.3.5, para o experimento controlado se
propõe a utilização de dois alunos da área de Computação que possuem conhecimentos básicos a respeito das tecnologias de serviços Web semânticos e conhecem
as principais construções das linguagens OWL e OWL-S, além de dominar a linguagem para modelagem UML. Assim, assume-se que eles são representativos para
a população dos desenvolvedores de serviços Web. Para redução da influência dos
fatores que não são interesse do nosso estudo e, portanto, para aumento da validade
interna do estudo usou-se os dados do questionário do perfil do participante (ver
Seção 6.4.2) para escolha dos participantes que compartilham as mesmas características.
Validade de Conclusão: são aplicados questionários de análise subjetiva sobre as ferramentas. Também, será realizado um teste estatístico dos resultados.
Validade de Construção: o plano experimental e quantidade de participantes e réplicas
são fatores importantes que podem ameaçar a validade deste experimento. Entretanto, adequamos este experimento a nossa realidade e não generalizaremos os resultados.
Validade Externa: os projetos usados no experimento são representativos e amplamente
usados na literatura. A suíte de aplicativos também é amplamente usada pela
comunidade de desenvolvedores de serviços Web semânticos.
6.4
6.4.1
Operação do Experimento
Plano Experimental
Utilizamos o plano experimental Quadrados Latinos (ver Apêndice F), pois existem dois fatores de ruído com influência significante na variável de saída: (i) experiência
do usuário com uso das tecnologias dos serviços Web e a (ii) complexidade dos projetos
6.4 Operação do Experimento
85
dos serviços Web. Este plano experimental ameniza a influências destes ruídos de forma
a não comprometer os resultados do experimento. Neste plano experimental, os blocos
possíveis são a combinação dos dois fatores de ruído do experimento, representados na
Tabela 6.1.
Projeto k
Projeto l
Pessoa m
Ferramenta a
Ferramenta b
Pessoa n
Ferramenta b
Ferramenta a
Tabela 6.1: Distribuição dos Blocos
Na Tabela 6.1 m, n, a e b podem assumir os valores 1 ou 2 sendo que a é diferente
de b, m é diferente de n. Já k e l podem assumir os valores entre 1 e 8 e k é diferente de l.
O experimento tem quatro réplicas do quadrado, alternando-se as linhas (Projetos), totalizando oito observações ou repetições. Para definição das configurações de cada
réplica foram realizados sorteios que definiram a ordem dos projetos, pessoas e ferramentas. Para o sorteio usamos a função sample3 do software R [Zuur et al., 2009]. Atribuímos
um valor numérico a cada projeto de acordo com sua apresentação neste documento. O
mesmo acorreu para as pessoas e ferramentas. Logo em seguida os resultados dos sorteios
para os projetos e pessoas:
sample(1:8, 8, replace=F) [1] 7 3 2 6 1 5 8 4
sample(1:2, 2, replace=F) [1] 1 2
Para cada réplica foram sorteadas as ferramentas e a ordem de execução. As
réplicas são apresentadas a seguir:
Serviço Web Semântico BabelFish Translator
Serviço Web Semântico Book Finder
Pessoa 1
Ferramenta 1 (2)
Ferramenta 2 (1)
Pessoa 2
Ferramenta 2 (1)
Ferramenta 1(2)
Tabela 6.2: Réplica l
Serviço Web Semântico OilMonitor 2
Serviço Web Semântico Barnes and Nobles Price
Pessoa 1
Ferramenta 1 (2)
Ferramenta 2 (1)
Pessoa 2
Ferramenta 2 (1)
Ferramenta 1(2)
Tabela 6.3: Réplica 2
6.4.2
Questionário do Perfil do Participante
Este questionário traça o perfil dos participantes do experimento e foi submetido
previamente a todos os pretendentes do experimento. As informações presentes em
3 http://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html
6.5 Análise e Interpretação dos Resultados
Serviço Web Semântico OilMonitor 1
Serviço Web Semântico Zip Code Finder
86
Pessoa 1
Ferramenta 2 (1)
Ferramenta 1 (2)
Pessoa 2
Ferramenta 1 (2)
Ferramenta 2(1)
Tabela 6.4: Réplica 3
Serviço Web Semântico Currency Converter
Serviço Web Semântico Zip Code Finder
Pessoa 1
Ferramenta 1 (1)
Ferramenta 2 (2)
Pessoa 2
Ferramenta 2 (2)
Ferramenta 1(1)
Tabela 6.5: Réplica 4
cada questionário serviram para escolha dos dois participantes. A escolha levou em
consideração a semelhança dos perfis dos candidatos e a suas disponibilidades de horário.
O questionário do perfil do participante encontra-se no Apêndice E.1.
Os dois participantes selecionados para o experimento controlado possuem grau
de conhecimento intermediário a respeito das tecnologias de serviços Web, UML e perfis
UML, linguagem Java e IDE Eclipse; conhecimento básico sobre Axis2, Web semântica,
serviços Web semânticos, Ontologias, linguagem OWL, linguagem OWL-S, software
Protege e linguagem XSLT; e nenhum conhecimento a respeito do plugin OWL-S Editor
do Protege.
6.4.3
Questionário para Análise Subjetiva da Ferramenta e do Projeto do Serviço Web
Este questionário tem como objetivo descobrir as opiniões dos participantes a
respeito das ferramentas usadas no desenvolvimento de cada projeto do experimento
controlado. Este questionário foi aplicado no término de cada desenvolvimento de projeto.
O questionário para análise subjetiva encontra-se no Apêndice E.2.
6.5
6.5.1
Análise e Interpretação dos Resultados
Apresentação dos Resultados
A Tabela 6.6 apresenta os tempos necessários para o desenvolvimento de cada
projeto de serviço Web semântico e a quantidade de erros ou inconsistências na ontologia
de cada serviço Web.
As ontologias dos serviços Web criadas pela ferramenta AutoWebS não apresentaram erros, exceto o serviço Web semântico BabelFish Translator que tem uma
única operação que retorna uma palavra traduzida codificada como String e um elemento
SupportedLanguage da ontologia BabelFishTranslator. Especificamente no serviço Web
6.5 Análise e Interpretação dos Resultados
Projeto
Serviço Web semântico OilMonitor 1
Serviço Web semântico OilMonitor 2
Serviço Web semântico Book Finder
Serviço Web semântico Zip Code Finder
Serviço Web semântico Latitude Longitude Finder
Serviço Web semântico Barnes and Nobles
Serviço Web semântico BabelFish Translator
Serviço Web semântico Currency Converter
87
AutoWebS
tempo erros
12
0
8
0
20
0
5
0
8
0
5
0
15
1
5
0
Suíte
tempo erros
35
1
55
1
35
1
21
1
25
1
20
1
45
1
14
1
Tabela 6.6: Resultados obtidos na execução do experimento controlado
semântico BabelFish Translator foi necessário realizar uma única adaptação na ontologia
do serviço Web, pois o AutoWebS não criou automaticamente o script XSLT para propriedade xsltTransformation. O participante do experimento modelou o retorno do serviço Web como um objeto de uma classe Retorno. Esta classe Retorno encapsula uma
String e o elemento SupportedLanguage da ontologia BabelFishTranslator. Entretanto,
o AutoWebS não cria scripts XSLT para elementos usados nos modelos UML que não
foram importados de uma ontologia de domínio, ou seja, o AutoWebS só cria os scripts
XLT para os elementos que tenham o estereótipo owl:Class.
Em todas as ontologias dos serviços Web criadas pela suíte de aplicativos Axis2
+ OWL-S Editor foram constatados erros ou inconsistências. Nas ontologias foram necessárias adaptações no script XSLT da propriedade xsltTransformation. O processo de
criação das transformações XSLT, mesmo para elementos simples, é suscetível a erros e
quando se usa o Axis2 para criar um serviço Web, sem se especificar configurações adicionais na execução de seus utilitários (wsdl2java e java2wsdl), são gerados namespaces
aleatórios no documento WSDL. Por exemplo, no serviço Web OilMonitor 1 foi gerado
o namespace ax22 enquanto que no serviço Web OilMonitor 2 foi gerado o namespace
ax210.
A Figura 6.1 ilustra o histograma do tempo consumido pelos participantes do
experimento para o desenvolvimento de cada serviço Web semântico. Podemos perceber
uma diferença entre os tempos quando foi usado o AutoWebS e a suíte de aplicativos
para o desenvolvimento dos serviços Web semânticos. Em todos os casos o tempo de
desenvolvimento usando-se o AutoWebS foi inferior ao tempo quando usada à suíte de
aplicativos.
O menor tempo obtido utilizando-se a ferramenta AutoWebS foi de 5 minutos
para o serviço Web semântico Zip Code Finder. O mesmo serviço com a suíte de
aplicativos demandou 21 minutos para ser desenvolvido, uma diferença de 16 minutas em
relação ao AutoWebS. O maior tempo obtido utilizando-se a ferramenta AutoWebS foi de
6.5 Análise e Interpretação dos Resultados
88
Figura 6.1: Tempo de desenvolvimento dos serviços Web semânticos
20 minutos para o serviço Web semântico Book Finder enquanto que este mesmo serviço,
quando desenvolvido com a suíte de aplicativos, demandou 35 minutos, uma diferença de
15 minutos.
A Amplitude máxima dos tempos quando usada a ferramenta AutoWebS foi de
15 minutos para os serviços Web semânticos ZipCode e BookFinder. A Mediana foi
de 8 minutos, a Média aritmética aproximadamente 10 minutos, o Desvio padrão foi
de 5.14174 minutos e a Variância de 26.43750 minutos. Com a suíte de aplicativos, a
Amplitude dos tempos foi de 41 minutos para os serviços Web semânticos Currency e
OilMonitor2. A Mediana foi de 30 minutos, a Média aritmética foi de 31.25 minutos, o
Desvio padrão foi de 12.98798 minutos e a Variância de 168.68750 minutos.
6.5.2
Teste Estatístico
Analisando-se para as médias dos tempos de desenvolvimento, têm-se à primeira
vista, a impressão de que os tempos obtidos pela ferramenta AutoWebS (10 minutos)
é menor do que quando usada a suíte de aplicativos (31,25 minutos). Contudo, pode
não existir evidência estatística suficiente para tirar tal conclusão. Neste caso, para
obtermos uma resposta com certo nível de confiança realizamos um teste estatístico nãoparamétrico chamado método de Wilcoxon [Corder and Foreman, 2009].
A Tabela 6.7 traz a distribuição dos tempos de desenvolvimento dos serviços
Web semânticos e os cálculos do teste estatístico de Wilcoxon. Designamos D1 e D2 as
distribuições dos tempos relativos às duas ferramentas, D1 para AutoWebS e D2 para suíte
de aplicativos. Logo, temos como passos do método Wilcoxon, os seguintes:
Hipótese nula H0 : D1 e D2 não são iguais. D1 encontra-se desviada para a esquerda de
D2 ou D1 encontra-se desviada para direita de D2 .
Hipótese alternativa Ha : D1 e D2 são idênticas. Isto é, as duas distribuições de tempos
são idênticas.
6.5 Análise e Interpretação dos Resultados
OilMonitor1
OilMonitor2
BookFinder
ZipCode
LatLong
BarnesAndNobles
BabelFish
Currency
AutoWebS
12
8
20
5
8
5
15
5
89
Suíte
35
55
35
21
25
20
45
14
Diff
23
47
15
16
17
15
30
9
Sinal
+
+
+
+
+
+
+
+
Posto
3
1
6.5
5
4
6.5
2
8
Posto*Diff
3
1
6.5
5
4
6.5
2
8
Tabela 6.7: Cálculo do teste estatístico de Wilcoxon
Na Tabela 6.7, Diff representa o valor absoluto da diferença entre as amostras,
Sinal denota o sinal desta diferença (+ ou -), Posto é o ranqueamento dos valores de
Diff. Para estas amostras, temos que a estatística T + = 36, onde T + é a soma dos postos
positivos, enquanto que T − = 0, a soma dos postos negativos. O teste estatístico W é igual
ao menor dos dois valores absolutos. Desta forma, o teste estatístico W, por conseguinte, é
igual a T − = 0. Utilizando a distribuição exata da estatística de Wilcoxon para uma única
amostra, ilustrada na Figura 6.2, temos que, para α = 5% (α = 0.05), o valor crítico para
W é 6 (seis) para uma amostra de tamanho 8 (8 pares de dados, n = 8).
Figura 6.2: Valores Críticos W para o teste de Wilcoxon para
amostras pequenas - extraído de [Lowry, 2012]
Como no teste estatístico W(0) é menor que o W Crítico(6), podemos aceitar a
Hipótese Nula H0 e afirmar com pelo menos 95% de certeza que D1 e D2 , as distribuições
de tempos, não são iguais. Desta forma D1 encontra-se desviada para a direita de D2 , ou
seja, os tempos obtidos com a ferramenta AutoWebS foram inferiores aos tempos obtidos
pela suíte de aplicativos OWL-S Editor e Axis2.
O mesmo teste estatístico aplicado às distribuições de erros ou inconsistências
nas ontologias OWL-S resultará em uma conclusão semelhante, ou seja, a quantidade
6.5 Análise e Interpretação dos Resultados
90
de erros ou inconsistências nas ontologias dos serviços Web geradas pela ferramenta
AutoWebS é menor do que as ontologias geradas pela suíte de aplicativos. Nas distribuições de tempo e erros os valores obtidos para suíte de aplicativos foram sempre maiores
ou iguais aos obtidos pelo AutoWebS.
6.5.3
Análise Qualitativa
Para verificar a satisfação subjetiva do usuário em relação à ferramenta
AutoWebS foi feita a análise qualitativa a partir do resultado dos questionários aplicados no término da execução de cada projeto de serviço Web semântico.
A Figura 6.3 ilustra o grau de cansaço dos participantes durante o desenvolvimento dos serviços Web semânticos. Percebe-se que, quando foi usado o AutoWebS, em
7 casos os usuários assinalaram Sem Cansaço e em apena um caso foi assinalado como
Normal o grau de cansaço. Quando usada a suíte de aplicativos, em quatro oportunidades os participantes avaliaram como Muito Cansativo, em três como Cansativo e em uma
oportunidade como Normal o grau de cansaço.
Figura 6.3: Grau de cansaço no desenvolvimento dos serviços Web
semânticos
Em relação ao grau de contribuição da ferramenta para o desenvolvimento do
serviço Web semântico, ilustrado na Figura 6.4, os participantes assinalaram em sete
oportunidades que a ferramenta AutoWebS Contribuiu Muito e em uma oportunidade que
a ferramenta AutoWebS teve uma contribuição Normal. Com a suíte de aplicativos em
quatro oportunidades os participantes julgaram que os aplicativos Contribuíram Pouco,
em duas oportunidades Não Contribuíram e em outras duas teve uma contribuição
Normal.
Quando perguntados sobre o grau de dificuldade na criação dos serviços Web,
os participantes responderam que quando foi usada a ferramenta AutoWebS em todos
os casos foi Muito Fácil criar o serviço Web. Entretanto, quando foi usada a suíte de
aplicativos os participantes responderam que em três ocasiões foi Difícil criar o serviço
Web, em outras três ocasiões foi Normal o grau de dificuldade enquanto que em outras
6.5 Análise e Interpretação dos Resultados
91
Figura 6.4: Grau de contribuição da ferramenta para o desenvolvimento dos serviços Web semânticos
duas ocasiões foi Fácil. A Figura 6.5 ilustra as respostas dos participantes sobre o grau de
dificuldade na criação dos serviços Web.
Figura 6.5: Grau de dificuldade em criar o serviço Web
Para a criação da ontologia do serviço Web os participantes assinalaram que com
a ferramenta AutoWebS em todos os casos foi Muito Fácil criar a ontologia, conforme
ilustra a Figura 6.6. Porém, com a suíte de aplicativos em quatro oportunidades os usuários
marcaram no questionário Muito Difícil, em três Difícil e em uma Fácil.
Quando perguntados se os recursos oferecidos pelas ferramentas foram suficientes para o desenvolvimento dos serviços Web semânticos, os participantes responderam
que em todos os projetos os recursos do AutoWebS foram suficientes. Enquanto que,
quando usada a suíte de aplicativos, em quatro projetos de serviços Web semânticos os
recursos não foram suficientes. A Figura 6.7 apresenta as respostas dos participantes a
respeitos dos recursos oferecidos pelas ferramentas avaliadas.
Em relação à opinião dos participantes se a abordagem implementada pela ferramenta contribuiu para o desenvolvimento dos projetos de serviços Web semânticos, os
participantes responderam que em todos os casos o AutoWebS contribuiu positivamente.
Entretanto, em apenas uma oportunidade os participantes afirmaram que a abordagem
6.5 Análise e Interpretação dos Resultados
92
Figura 6.6: Grau de dificuldade em criar a ontologia do serviço
Web
Figura 6.7: Recursos oferecidos pelas ferramentas avaliadas
usada pela suíte de aplicativos contribuiu positivamente para o desenvolvimento do projeto de serviço Web semântico. A Figura 6.8 apresenta as respostas dos participantes.
Pelos resultados das análises efetuadas constatou-se que estatisticamente existe
uma diferença significativa na utilização das ferramentas. Assim, existem indícios de que
o AutoWebS contribui positivamente para o desenvolvimento de serviços Web semânticos, uma vez que proporciona menos cansaço e torna a criação do serviço Web e da
ontologia do serviço Web menos difíceis, comparando-se com a suíte de aplicativos.
6.5.4
Verificação da Hipóteses
A partir das análises estatísticas e qualitativas dos resultados, podemos procurar
respostas as questões levantadas (Q1, Q2, Q3, Q4, Q5, Q6, Q7 e Q8) e sustentar ou não
as hipóteses.
Para verificar a hipótese H1 (“A ontologia do serviço Web criada com o auxílio
do plugin OWL-S do Protégé apresenta menor quantidade de elementos errados ou
inconsistentes do que quando a ontologia criada com o AutoWebS”) usamos as respostas
6.5 Análise e Interpretação dos Resultados
93
Figura 6.8: Contribuição para o desenvolvimento do serviço Web
semântico
das questões Q1 e Q2 através das métricas M1.1, M1.2 e M2.1. As métricas determinam a
quantidade de erros ou inconsistências nas ontologias dos serviços Web e as suas acurácias
- as diferenças entre os valores encontrados e os valores de referência. A partir dos dados
da Tabela 6.6 podemos concluir que para todos os projetos de serviços Web semânticos os
valores das métricas M2.1 para ferramenta AutoWebS foram menores ou iguais quando se
usada a suíte de aplicativos. Desta forma, rejeitamos a hipótese alternativa H1 e aceitamos
a hipótese nula H10 .
A hipótese H2 (“O tempo total necessário para criação de serviços Web semânticos utilizando a ferramenta AutoWebS é menor do que quando utilizado a suíte de
aplicativos”) pode ser verificada com a resposta da questão Q4 através da métrica M4.1
(tempo total para criação dos serviços Web semânticos). A partir dos dados da Tabela 6.6
podemos concluir que o tempo total para o desenvolvimento (métrica M4.1) dos projetos de serviços Web semânticos quando usada a ferramenta AutoWebS foi menor do que
quando usada a suíte de aplicativos. Portanto, não podemos rejeitar a hipótese alternativa
H2, mas podemos rejeitar a hipótese nula H20 , uma vez que existem dados estatísticos
que indicam a diferença de tempo.
Para verificar a hipótese H3 (“A integração das várias funcionalidades necessárias para criação de serviços Web semânticos contribui significativamente para o seu
desenvolvimento“) usamos as respostas das questões Q5 e Q8 através das métricas M5.1,
M5.2 e M8.1. Conforme análise do grau de contribuição da ferramenta para o desenvolvimento dos serviços Web semânticos, isto é, da criação do serviço Web e da sua ontologia,
além do cansaço e esforço despendido, nos gráficos das Figuras 6.5, 6.6 e 6.3, observamos
que a integração das funcionalidades necessárias para criação de serviços Web semânticos
contribui positivamente para o seu desenvolvimento. Assim, sustentamos a hipótese H3 e
rejeitamos a hipótese nula H30 .
A hipótese H4 (”A representação de ontologias como classes de um diagrama
de classes da UML e, também, a representação da interface de um serviço Web e suas
6.5 Análise e Interpretação dos Resultados
94
operações como um tipo interface da UML, torna sua compreensão mais fácil para
usuários com conhecimento técnico não muito elevado sobre as tecnologias da Web
semântica”) pode ser analisada a partir das respostas das questões Q3, Q6, Q5 e Q7.
A questão Q3 pode ser respondida através da métrica M3.1 e, conforme apresentado no
gráfico da Figura 6.3, o grau de esforço despendido para o desenvolvimento dos serviços
Web semânticos quando usada a suíte de aplicativos foi sempre maior do que quando
usado o AutoWebS. Para as questões Q6 e Q7 existem as métricas M6.1 e M7.1 que
avaliam a satisfação subjetiva do usuário quanto ao uso das ferramentas. A métrica M6.1
diz respeito a abordagem implementada pela ferramenta e, conforme mostra o gráfico da
Figura 6.8, em todos os projetos os participantes afirmaram que a abordagem usada pela
ferramenta AutoWebS foi suficiente, enquanto que em apenas um caso os participantes
afirmaram que a abordagem usada pela suíte de aplicativos é mais intuitiva. Sobre a
métrica M7.1 que mede a satisfação do participante em relação a abordagem empregada
pelas ferramentas, podemos inferir dos gráficos da Figura 6.8 e da Figura 6.7 que o
AutoWebS é mais satisfatório do ponto de vista do usuário do a suíte de aplicativos. A
partir dessas métricas podemos manter a hipótese H4 e rejeitar a hipótese nula H40 .
CAPÍTULO 7
Trabalhos Relacionados
Na literatura existem vários trabalhos que exploram diversos aspectos dos serviços Web semânticos. Entretanto, para se fazer uma comparação com a ferramenta
AutoWebS, selecionamos alguns principais trabalhos que apresentam abordagens para a
criação de serviços Web semânticos (serviços Web semânticos atômicos). Outros aspectos
dos serviços Web semânticos como, por exemplo, descoberta e composição de serviços
Web e similaridade semântica, fogem do escopo deste trabalho e, portanto, não são alvos
de estudo e comparação com a ferramenta proposta.
Este capítulo está estruturado como se segue. A Seção 7.1 apresenta a ferramenta
OWL-S Editor. A Seção 7.2 apresenta a ferramenta CODE. A Seção 7.3 apresenta
a ferramenta ASSAM. A Seção 7.4 apresenta a abordagem desenvolvida por Yang e
Chung. A Seção 7.5 apresenta a abordagem criada por Kim e Lee. Por fim, a Seção 7.6
apresenta uma comparação entre os trabalhos relacionados e o AutoWebS, levando-se em
consideração os requisitos para uma ferramenta de alto nível de abstração para a criação
de serviços Web semântico levantados na introdução deste trabalho.
7.1
OWL-S Editor
OWL-S Editor [Elenius et al., 2005] é uma ferramenta integrada ao software
Protégé - o principal software para criação de ontologias. OWL-S Editor foi desenvolvido
como um plugin do Protégé e sua principal característica é proporcionar em um mesmo
ambiente, utilitários para a criação de uma ontologia de domínio e, também, para o
desenvolvimento da descrição semântica do serviço Web.
A ferramenta OWL-S Editor proporciona somente a criação da ontologia do
serviço Web a partir de um conjunto de visões (views), cada visão para uma subontologia
OWL-S. Cada visão fornece um conjunto de campos para inserção de valores para os
elementos da subontologia associada, conforme a Figura 7.1 ilustra. As visões requerem
do usuário um profundo conhecimento a respeito da linguagem OWL-S.
A visão associada à subontologia Service Model utiliza um editor visual do
tipo drag-and-drop para criar processos Composite utilizando as estruturas de controle
7.1 OWL-S Editor
96
Figura 7.1: Ferramenta OWL-S Editor
da linguagem OWL-S. A ferramenta também oferece um mecanismo para importar
um documento WSDL e gerar um esqueleto da descrição semântica em OWL-S. Este
esqueleto pode então, ser incrementalmente associado a conceitos de ontologias de
domínio. O mecanismo de importação utiliza o transformador WSDL2OWLS1 da API
OWL-S da Mindswap.
A ferramenta OWL-S Editor não oferece um mecanismo eficiente para a criação
do mapeamento em XSLT entre os inputs e outputs do serviço Web, definidos como tipos
complexos no Schema XML do documento WSDL, e os conceitos definidos como classes
no documento OWL. Dessa forma, esses mapeamentos, que não são fáceis e intuitivos de
serem desenvolvidos, devem ser escritos manualmente.
A arquitetura da ferramenta Protégé provê um suporte básico à integração de
novas funcionalidades. O código fonte do plugin OWL-S Editor está disponível sobre a
licença Mozilla Public License 1.1 e seu último release, a versão build26, data de agosto
de 2006.
1 http://semwebcentral.org/projects/wsdl2owl-s/
7.2 CODE - CMU’s OWL-S Development Environment
7.2
97
CODE - CMU’s OWL-S Development Environment
CODE (CMU’s OWL-S Development Environment) [Srinivasan et al., 2005] é
uma IDE desenvolvida como um plugin da plataforma Eclipse. O principal objetivo desta
ferramenta é oferecer um ambiente de desenvolvimento unificado para a criação de serviços OWL-S. Com esta ferramenta, desenvolvedores podem escrever código fonte na linguagem Java, usando-se o editor Java da IDE Eclipse, e executar o utilitário Java2WSDL,
do framework Axis da Apache [Basha and Irani, 2002], para criar o documento WSDL.
CODE disponibiliza um conversor, chamado WSDL2OWL-S Converter, para gerar esqueletos da descrição semântica de serviços Web em OWL-S, além de publicar o serviço Web
em repositórios UDDI. A Figura 7.2 ilustra a arquitetura da ferramenta CODE.
Figura 7.2: Arquitetura da ferramenta CODE - extraído de
[Srinivasan et al., 2005]
A ferramenta CODE possui quatro editores que suportam a edição das quatro
subontologias OWL-S, Service Profile, Service Model, Service Grounding e Service.
Os editores são baseados em formulários, que devem ser preenchidos com os dados da
ontologia do serviço Web, assim, necessitando do usuário o conhecimento a respeito dos
elementos que formam a ontologia OWL-S.
A ferramenta não tem mecanismos para importar os conceitos definidos em uma
ontologia de domínio. Desta forma, o arquivo OWL-S gerado por esta ferramenta não é
relacionado a nenhum conceito de uma ontologia OWL. Além disso, a ontologia OWL-S
é gerada de forma incompleta, necessitando do processamento manual para completar as
subontologias ServiceProfile e ServiceModel, pois a especificação destas subontologias,
7.3 ASSAM - Automated Semantic Service Annotation with Machine Learning
98
que foram feitas pelo utilitário WSDL2OWLS, não apresenta as descrições semânticas dos
inputs e outputs do serviço Web, uma vez que o documento WSDL não fornece qualquer
descrição semântica.
A ferramenta é limitada na representação gráfica das composições de serviços, a
qual é feita utilizando árvores e formulários, o que torna difícil uma visualização mais
completa e intuitiva para o usuário. Outra limitação da ferramenta dá-se pelo uso do
Axis para criação do documento WSDL, pois o Axis usa somente o estilo RPC (JAXRPC) para as mensagens, enquanto que o Axis2 também usa o estilo Document (JAXWS). O Axis também dá suporte apenas a interações síncronas do tipo request-response,
onde o Endpoint da operação do serviço Web recebe uma mensagem de requisição e
sempre retorna uma mensagem de resposta. Outro aspecto limitante da ferramenta CODE
é a ausência de um mecanismo para criação automática das transformações em XSLT
(xsltTransformation).
7.3
ASSAM - Automated Semantic Service Annotation
with Machine Learning
ASSAM (Automated Semantic Service Annotation with Machine Learning)
[Heß et al., 2004] é uma ferramenta Open Source desenvolvida com a linguagem Java.
Esta ferramenta oferece uma interface gráfica baseada em visões e utiliza um processo
semi-automático onde o usuário define os mapeamentos entre conceitos de uma ontologia
de domínio, especificados em documentos OWL, e os elementos definidos no Schema
XML do documento WSDL de um serviço Web. A ferramenta ASSAM importa documentos WSDL e ontologias OWL e permite o usuário anotar os documentos WSDL com
os conceitos das ontologias a partir de uma interface do tipo point-and-click, conforme a
Figura 7.3 ilustra.
Tal ferramenta utiliza um algoritmo de aprendizado no qual, à medida que o
usuário realiza as anotações, o programa oferece algumas sugestões de quais classes de
ontologias podem ser associadas aos elementos do WSDL. O algoritmo de aprendizagem
usado pelo ASSAM [Heß and Kushmerick, 2004b, Heß and Kushmerick, 2004a] usa as
relações prévias que o usuário fez com os elementos para sugerir novos conceitos, assim
limitando os conceitos à algumas possibilidades ao invés de todos os conceitos de uma
ontologia. O processo semi-automático gera toda a ontologia OWL-S do serviço Web,
inclusive as transformações em XSLT (propriedade xsltTransformation da OWL-S) para
os casos em que os inputs e os outputs do serviço Web não têm uma correspondência
direta com os elementos da ontologia de domínio.
7.4 Yang e Chung
99
Figura 7.3: Ferramenta ASSAM - extraído de [Heß et al., 2004]
7.4
Yang e Chung
Yang e Chung [Yang and Chung, 2006b, Yang and Chung, 2006a] criaram uma
metodologia para geração automática de ontologias de serviços Web em OWL-S a
partir de informações extraídas de diagramas de classe e de estados da UML. Nesta
metodologia, o processo de geração da ontologia do serviço Web é dividido em dois
subprocessos: as informações relacionadas ao serviço Web e suas propriedades, tal como
IOPE (Input, Output, Precondition, e Effects), são extraídas de diagramas de classe para
criação de Atomic Process e os diagramas de estados da UML são usados para modelar o
comportamento e a composição de serviços Web. A Figura 7.4 apresenta um exemplo
da abordagem de Yang e Chung, onde o diagrama de classe da UML é usado para
modelar um serviço de viagem (travel service) composto de três serviços Web atômicos:
AirlineTicketing, CarRental e HotelReservation.
A abordagem desenvolvida por Yang e Chung usa um perfil UML que define as
transições estereotipadas do diagrama de estados da UML para representar as construções
de controle da OWL-S. Nesta abordagem, transformações pré-definidas em XSLT são
aplicadas sobre os arquivos XMI (cada arquivo XMI representa um dos modelos UML)
para gerar o arquivo OWL-S. As condições (preconditions e effects) são representadas
usando-se uma GUI, ao invés de construções OCL (Object Constraint Language) nos
modelos UML.
Yang e Chung não implementaram nenhuma ferramenta para auxiliar a construção dos modelos UML. Eles utilizaram uma ferramenta CASE UML para a criação dos
modelos UML e também para a geração dos arquivos XMI. A metodologia não contempla
7.5 Kim e Lee
100
Figura 7.4: Abordagem de Yang e Chung para construção de serviços Web semânticos - extraído de
[Yang and Chung, 2006b]
a criação automática de serviços Web e a importação de uma ontologia de domínio em
OWL. Entretanto a abordagem define um processo de validação da ontologia do serviço
a partir de validadores RDF, OWL e OWL-S.
7.5
Kim e Lee
Kim e Lee [Kim and Lee, 2007] definiram uma abordagem que usa uma combinação de diagramas da UML - diagrama de classe, atividade e sequência - para capturar
propriedades semânticas para modelar serviços Web semânticos atômicos e composição
de serviços Web. Nesta abordagem, diagramas de classe da UML representam as ontologias de domínio e diagramas de sequência ou atividade da UML modelam as interações
entre múltiplos processos em uma composição de serviços Web. É definido um perfil
UML para representar as características da OWL-S nos modelos UML e transformações
XSLT são usadas para transformar o documento XMI, resultante dos modelos UML, para
um documento OWL-S.
A metodologia implementada por Kim e Lee, representado na Figura 7.5, consiste basicamente de três atividades: modelagem da ontologia, representado por ontology
modeling; modelagem da composição dos serviços Web, representado por process
modeling; e transformações (transformation). Primeiramente uma ontologia é importada e
representada em um diagrama de classes. Após isto, em um segundo passo, através do uso
de perfis UML, diagramas de sequência ou atividade da UML são usados para expressar
o comportamento e a composição de serviços Web. Finalmente, um arquivo XMI é ex-
7.6 Comparação entre as ferramentas
101
Figura 7.5: Abordagem de Kim e Lee para construção de serviços
Web semânticos - extraído de [Kim and Lee, 2007]
traído dos diagramas UML para que transformações em XSLT possam criar o documento
OWL-S.
7.6
Comparação entre as ferramentas
As ferramentas supracitadas apresentam abordagens distintas. Algumas se limitam a criação de ontologias de serviços Web enquanto outras, além da ontologia, criam o
serviço Web. Para efeito de comparação dos trabalhos relatados supracitados com a ferramenta AutoWebS, levando-se em consideração os requisitos para uma ferramenta de
alto nível de abstração para a criação de serviços Web semânticos, sumarizamos na Tabela 7.1 uma comparação entre elas. Na Tabela 7.1, sim significa que a ferramenta atende
integralmente o requisito correspondente e não é o caso contrário, quando a ferramenta
não atende ao requisito. Quando assinalado parcialmente, a ferramenta em questão não
atende completamente o requisito correspondente.
OWL-S Editor
CODE
ASSAM
Yang e Chung
Kim e Lee
AutoWebS
R0
não
sim
não
sim
sim
sim
R1
não
sim
não
não
não
sim
R2
sim
sim
sim
sim
sim
sim
R3
sim
não
sim
não
sim
sim
Requisitos
R4
R5
não
sim
parcialmente parcialmente
não
sim
não
sim
não
parcialmente
sim
sim
R6
parcialmente
sim
não
parcialmente
parcialmente
sim
Tabela 7.1: Comparação entre os trabalhos relacionados
O plugin OWL-S Editor [Elenius et al., 2005] requer que o usuário entenda o
ambiente Protégé, o que pode levar a uma curva de aprendizado acentuada. Portanto, não
atende o requisito R0. A ferramenta também não atende requisito R1, pois o seu propósito
não é a criação de serviços Web, seu propósito é a criação da ontologia do serviço Web
7.6 Comparação entre as ferramentas
102
(requisito R2), usando ontologias pré-existentes (requisito R3). Esta ferramenta também
não implementa o requisito R4, pois não oferece um ambiente de desenvolvimento que
integra todas as funcionalidades necessárias para a criação de um serviço Web semântico,
uma vez que são necessários o uso de recursos externos como, por exemplo, o Axis2 para
criação do serviço Web. Em relação ao requisito R5, podemos afirmar que a ferramenta
o implementa. Entretanto, tanto os requisitos R2 e R5 merecem uma ressalva, pois
para as transformações XSLT não é oferecido na ferramenta nenhum mecanismo para
criá-las. Quanto ao requisito R6, a arquitetura da ferramenta Protégé provê um suporte
básico à integração de novas funcionalidades. Assim, classificamos como parcialmente
implementado tal requisito.
A ferramenta CODE [Srinivasan et al., 2005] provê um mecanismo para abstração da linguagem OWL-S e também para criação do serviços Web através dos utilitários
Java2WSDL e WSDL2OWL-S. Estes utilitários realizam as transformações automáticas e
proporcionam certo nível de abstração, desta forma atendendo os requisitos R0 e R1. Na
ferramenta, a ontologia OWL-S é gerada automaticamente (requisito R2), entretanto de
forma incompleta, necessitando do processamento manual para completar as subontologias ServiceProfile e ServiceModel, dessa forma atendendo apenas parcialmente o requisito R5, pois o código OWL-S resultante não é completo e executável. Na ferramenta não
existem mecanismos para importar os conceitos definidos em uma ontologia para modelagem do serviço Web, ou seja, não atende aos requisitos R3 e R4. Esta ferramenta se
beneficia da plataforma Eclipse, pois novos módulos que provêem novas funcionalidades
podem ser integrados à ferramenta, evidenciando sua conformidade com o requisito R6.
A ferramenta ASSAM [Heß et al., 2004] não está em conformidade com o
requisito R0, pois exige do usuário um profundo conhecimento sobre os Schemas XML
usados na definição dos elementos da interface do serviço Web, definidos no documento
WSDL, e, também, da linguagem OWL. O conhecimento sobre os Schemas XML e OWL
são necessários para à construção dos mapeamentos entre os inputs e outputs do serviço
Web e as ontologias pré-existentes (requisito R3). Além disso, a associação manual entre
os conceitos de uma ontologia e os elementos WSDL pode ser difícil de ser realizada,
uma vez que o número de combinações possíveis pode ser grande. Esta ferramenta
tem como propósito a criação da ontologia do serviço Web (requisito R2), porém não
está integrada a um ambiente de desenvolvimento e não oferece funcionalidades para
criação do código fonte do serviço Web muito menos do documento WSDL, evidenciando
sua inconformidade com os requisitos R1 e R4. A ontologia do serviço Web é gerada
sintaticamente e semântica correta (requisito R5), entretanto a arquitetura da ferramenta
não provê suporte a integração de novas funcionalidades, portanto não atende o requisito
R6.
A abordagem implementada por Yang e Chung [Yang and Chung, 2006b,
7.6 Comparação entre as ferramentas
103
Yang and Chung, 2006a] contempla apenas a criação da ontologia OWL-S, não se preocupando com o serviço Web, ou seja, não atende o requisito R1. Esta abordagem usa
a linguagem UML que é amplamente usada como linguagem de modelagem, tornando-a
acessível e prática, sem a necessidade de uma curva de aprendizagem acentuada, portanto
implementando o requisito R0. A abordagem, através de transformações XSLT aplicadas
nos modelos UML, cria automaticamente a ontologia OWL-S (requisito R2). Entretanto,
nesta abordagem não é possível usar conceitos definidos em uma ontologia de domínio
para descrever semanticamente os elementos do serviço Web. Assim, não contemplando
o requisito R3. Em relação ao requisito R4, podemos afirmar que ele não é implementada
pela abordagem de Yang e Chung, pois não existe um ambiente de desenvolvimento que
integra todas as funcionalidades necessárias para a criação de um serviço Web semântico.
Mas os artefatos de código, neste caso somente a ontologia do serviço Web, são validados
através de um processo de validação (requisito R5). Yang e Chung implementaram sua
abordagem usando uma ferramenta CASE UML proprietária. Isto significa que os documentos XMI que representam os modelos UML não são compatíveis com outras ferramentas UML. Por se tratar de uma ferramenta proprietária e com o código fonte fechado,
não é possível fazer extensões. Assim, não permitindo a inserção de novas funcionalidades (requisito R6) na ferramenta CASE UML. Entretanto, a especificação da abordagem
é independente de ferramenta e, portanto, ela pode ser implementada em outra ferramenta
como, por exemplo, o perfil UML pode ser criado usando-se a infraestrutura do Eclipse
Modeling. Assim, consideramos que esta abordagem atente parcialmente o requisito R6.
O trabalho de Kim e Lee [Kim and Lee, 2007], igualmente ao trabalho de Yange
e Chung, contempla apenas a criação da ontologia OWL-S, não se preocupando com a
implementação do serviço Web, ou seja, não atende o requisito R1. A abordagem faz uso
dos diagramas da UML e especifica um método de três passos para construção da ontologia OWL-S (requisito R0). O documento XMI que representa os modelos UML - classes,
sequência ou atividade - é transformado automaticamente no documento OWL-S através
de transformações XSLT (requisito R2). Para modelagem dos serviços Web é permitido
usar conceitos definidos em uma ontologia de domínio. Esta ontologia, em um primeiro
passo da metodologia desenvolvida, é importada e representada usando-se os elementos
do diagrama de classes da UML (requisito R3). O requisito R4 não é implementado na
abordagem de Kim e Lee, pois não existe um ambiente de desenvolvimento que integra todas as funcionalidades necessárias para a criação de um serviço Web semântico.
O requisito R5, que diz respeito aos artefatos de códigos gerados, é atendido parcialmente, pois a abordagem é capaz de gerar a ontologia OWL-S sem a subontologia Service
Grounding. Já em relação ao requisito R6, mantemos a mesma justificativa do trabalho
de Yang e Chung, pois a abordagem foi implementada em uma ferramenta CASE UML
e existem alguns desafios de interoperabilidade, principalmente os relacionados à especi-
7.6 Comparação entre as ferramentas
104
ficação da UML. Desta forma, consideramos que esta abordagem atente parcialmente o
requisito R6.
CAPÍTULO 8
Conclusão
Neste capítulo encerra-se esta dissertação. Em seguida apresentamos uma síntese
dos temas abordados nos capítulos anteriores e tecemos alguns comentários que julgamos
oportunos para conclusão deste trabalho. Apresentamos na Seção 8.1 as principais contribuições desta dissertação. Na Seção 8.2 ressaltamos algumas limitações da abordagem
proposta e apontamos, na Seção 8.3, alguns melhorias e trabalhos futuros.
Este trabalho apresentou uma ferramenta MDD para a criação de serviços Web
semânticos. Esta ferramenta implementa um processo MDD - com o uso de um perfil
UML, um metamodelo para linguagem OWL-S e transformações entre modelos e texto para tornar o desenvolvimento de um serviço Web semântico mais intuitivo e prático.
Iniciou-se esta dissertação apresentando a dificuldade em se criar serviços Web
semânticos, abordando desde as linguagens de baixo nível usadas para descrição semântica dos serviços Web como, por exemplo, a linguagem OWL-S, até as limitações das
principais ferramentas. Devido a complexidade da gramática da linguagem OWL-S é difícil construir manualmente uma ontologia do serviço Web e a curva de aprendizado desta
linguagem é acentuada.
Em seguida, no Capítulo 2, foram apresentadas as principais características,
conceitos e tecnologias dos serviços Web semânticos, bem como as tecnologias do MDD
usados para gerenciar a complexidade inerente dos serviços Web semânticos.
No Capítulo 3 foram apresentadas as similaridades entre as linguagens de especificação de ontologias e a linguagem de modelagem UML. As similaridades entre
as linguagens são fundamentais para a especificação do perfil UML que a ferramenta
AutoWebS usa. Mostrou-se também os elementos da linguagem OWL que são diretamente usados e, portanto, necessários para criação de serviços Web semânticos, apresentando como esses elementos podem ser representados com elementos da UML.
Apresentada a fundamentação teórica do trabalho, em seguida iniciou-se a apresentação da ferramenta proposta e dos requisitos fundamentais para uma ferramenta de
alto nível de abstração para a criação de serviços Web semânticos. A ferramenta em questão emprega uma abordagem MDD para a geração de serviços Web semânticos a partir
de modelos UML. A ferramenta oferece um ambiente que integra várias funcionalidades
106
necessárias para modelar, implementar, compilar e fazer o deploy de serviços Web semânticos. Ao longo do Capítulo 4 foram apresentadas a arquitetura da ferramenta, explicitando seus componentes e tecnologias relacionadas, o perfil UML usado para representar
elementos da OWL em UML, o processo de importação de ontologias OWL através de
transformações XSLT, o metamodelo para linguagem OWL-S, as regras de mapeamento
QVT usadas para transformar um modelo UML em um modelo OWL-S e, por fim, o
funcionamento da ferramenta.
A abordagem implementada pela ferramenta proporciona aos desenvolvedores
dos serviços Web semânticos concentrar seus esforços na criação de modelos em vez
de escrever códigos ou criar descrições semânticas. Associado a isto, o fato de que os
modelos criados a partir de perfis UML são modelos UML válidos e devido a ampla
utilização da UML como linguagem de modelagem, esta abordagem torna a ferramenta
AutoWebS acessível a um público maior do que aquele formado por especialistas da área
da Web semântica.
A dissertação apresentou um estudo de caso no Capítulo 5 que demonstra o uso
do AutoWebS na criação de um serviço Web semântico para um serviço provido por
uma plataforma de middleware de contexto que não utiliza a tecnologia dos serviços Web
semânticos. Neste estudo de caso evidenciamos a utilidade e praticidade do AutoWebS,
apresentando como a ferramenta foi usada para criar um serviço Web semântico usando
os conceitos definidos em uma ontologia de domínio OWL, abstraindo o modelo de
comunicação usado pela plataforma de middleware de contexto e, também, realizando
a conversão da representação dos elementos de contexto de chave-valor para ontologia.
No Capítulo é apresentado um experimento controlado que avalia o AutoWebS
em relação a uma suíte de aplicativos composta pelo OWL-S Editor e o plugin Axis2 da
IDE Eclipse. O experimento tem como objetivos obter indicativos da qualidade dos artefatos de códigos gerados pela ferramenta AutoWebS, comparar os tempos de desenvolvimento de serviços Web semânticos obtidos pela ferramenta AutoWebS e pela suíte de aplicativos, mensurar o esforço despendido e a dificuldade no uso da ferramenta AutoWebS
e na suíte de aplicativos OWL-S Editor e Axis2, além de verificar se abordagem de integração de ferramentas para criação de serviços Web semânticos é mais eficiente do que a
abordagem tradicional. Os resultados obtidos do experimento controlado são promissores
e demonstram que os tempos obtidos com a ferramenta AutoWebS para criação dos serviços Web semânticos foram inferiores aos tempos obtidos pela suíte de aplicativos OWL-S
Editor e Axis2. Os serviços Web gerados pelas duas ferramentas no experimento controlado são semelhantes, uma vez que usam o mesmo middleware para criação de serviços
Web, o middleware Axis2. Já as ontologias dos serviços Web diferiram. Quando usado
o AutoWebS obteve-se um número menor de erros ou inconsistências na ontologia do
serviço Web do que quando foi usada a suíte de aplicativos. A análise qualitativa mostrou
8.1 Contribuições
107
que a ferramenta AutoWebS contribuiu positivamente para o diminuição do cansaço e do
tempo de desenvolvimento dos serviços Web semânticos.
8.1
Contribuições
Recentemente muitos pesquisadores têm voltado seus esforços para criação de
abordagens para composição de serviços Web. Essas abordagens, a maioria, partem do
pressuposto que os serviços Web estão desenvolvidos e suas ontologias especificadas
em alguma linguagem de descrição semântica. Também existem outras abordagens que
tratam a questão da composição somente para serviços Web que usam tipos primitivos nos
parâmetros de suas operações, negligenciando os tipos complexos definidos em Schemas
XML e/ou conceitos definidos em ontologias.
A criação de um serviço Web semântico atômico, isto é, a implementação do serviço Web e a especificação da sua ontologia, ainda é um problema recorrente que merece
atenção, pois a maioria das ferramentas não suporta todas as etapas do desenvolvimento de
um serviço Web semântico. As poucas ferramentas que suportam todas as etapas falham
em algum ponto, seja na qualidade dos artefatos gerados como, por exemplo, a incompletude da ontologia do serviço Web criada a partir de conversores WSDL2OWLS, ou no
layout e apresentação da ferramenta como, por exemplo, a ferramenta OWL-S Editor que
necessita de uma curva de aprendizado muito acentuada.
A principal contribuição dessa dissertação é a especificação e o desenvolvimento
de uma ferramenta, denominada AutoWebS, para criação de serviços Web semânticos que
implementa uma abordagem MDD. O AutoWebS oferece ao usuário um ambiente gráfico
onde é possível usar os conceitos definidos em uma ontologia de domínio para modelar
a interface de serviços Web semânticos. A ferramenta AutoWebS cria automaticamente
a ontologia do serviço Web e o esqueleto de código fonte a partir de modelos UML.
Utilizando a ferramenta, é possível modelar serviços Web semânticos de uma forma
independente de plataforma através da UML.
Outras contribuições importantes desta dissertação são: a especificação e implementação de um perfil UML cuja finalidade é permitir a representação de alguns elementos da linguagem OWL em UML e também permitir a modelagem de serviços Web
semânticos; as regras de transformações XSLT para transformar os elementos de uma ontologia OWL que são necessários para criação de serviços Web semânticos, em elementos
da UML; a especificação e implementação do metamodelo em Ecore para a linguagem
OWL-S; a especificação e implementação da transformação Modelo para Modelo (M2M)
na linguagem QVT para transformar um modelo UML em um modelo correspondente ao
metamodelo OWL-S; e a transformação Modelo para Texto (M2T) para que, a partir de
um modelo OWL-S, criar-se um arquivo OWL-S.
8.2 Limitações
8.2
108
Limitações
A ferramenta AutoWebS apresenta algumas limitações, porém as limitações não
inviabilizam o seu uso. As limitações atuais do AutoWebS são:
• A ferramenta AutoWebS propõe-se a criação de serviços Web semânticos atômicos,
limitando-se a criação de serviços Web e seu ontologia.
• A versão atual do algoritmo para criação do script XSLT para o elemento
xsltTransformation da ontologia do serviço Web limita-se a criação de scripts XSLT
para conceitos de ontologias que possuem propriedade dos tipos primitivos definidos no Schema XML ou outros conceitos definidos como classes OWL. Para os
casos mais complexos como, por exemplo, definições de listas, tal algoritmo não
consegue fazer sua interpretação corretamente e, portanto, não é capaz de gerar o
scrip XSLT.
• Na importação da ontologia de domínio um conjunto de transformações XSLT
criam um modelo UML em arquivo XMI com a extensão .uml. Entretanto, o editor
UML usado pelo AutoWebS, o editor Papyrus, não renderiza o digrama UML
automaticamente na interface gráfica da ferramenta. O Papyrus usa dois outros
arquivos auxiliares para renderizar o diagrama UML. Os arquivos com a extensão
.di e .notation definem as coordenadas de cada elemento do modelo UML.
Sem esses arquivos o editor Papyrus não renderiza os elementos do modelo UML,
necessitando que o usuário faça este trabalho. Para modelos com poucos elementos
este trabalho é fácil, porém quando o modelo é grande, este trabalho torna-se árduo
e cansativo.
• A interface gráfica da ferramenta é outro ponto que merece atenção e foi evidenciado na avaliação subjetiva da ferramenta durante o experimento controlado. A
disposição dos botões e menus e o acesso as funcionalidades precisam ser revistos.
• Em um experimento controlado, a quantidade de participantes e réplicas são fatores
importantes que podem ameaçar a sua validade (ver Seção 6.3.7). No experimento
controlado aplicado a ferramenta AutoWebS foi necessário adequar o seu projeto de
forma que apenas dois participantes e dezesseis execuções foram realizadas. Entretanto esta adequação não tira a validade do experimento controlado e a análise estatística dos resultados pode ser realizada usando-se o método estatístico Wilconxon
para amostrar pequenas [Corder and Foreman, 2009, Berenson and Levine, 1996].
8.3
Trabalhos Futuros
Como trabalho futuro propõe-se, com base nos desenvolvimentos realizados
neste trabalho, evoluir a ferramenta AutoWebS com a criação de outro conjunto de es-
8.3 Trabalhos Futuros
109
tereótipos, propriedades e restrições UML para proporcionar a criação de composição de
serviços Web. Um novo perfil UML aplicado a elementos do diagrama de estados ou diagrama de sequência podem ser usados para modelar o comportamento e a composição
de serviços Web, semelhante aos trabalhos de Yang e Chung [Yang and Chung, 2006b,
Yang and Chung, 2006a] e Kim e Lee [Kim and Lee, 2007]. Além da definição e implementação do perfil UML será necessário a criação de novas regras de transformações
modelo para modelo e modelo para texto, mas não será necessário alterar o metamodelo
OWL-S, uma vez que ele está bem definido e atende a toda especificação da linguagem
OWL-S.
Propõe-se também a criação de uma GUI para a especificação de condições
(Preconditions, Effects e Results) que são usados nas ontologias dos serviços Web.
Atualmente tais condições são especificadas por intermédio de comentários no modelo
UML (elemento Comment da UML).
As limitações atuais da ferramenta devem ser supridas. Pretende-se melhorar o
algoritmo para geração dos scripts XSLT para o elemento xsltTransformation da ontologia
do serviço Web. É previsto também uma evolução da interface gráfica da ferramenta e
principalmente a maneira como as funcionalidades são acessadas através dos botões e
menus.
Para geração automática dos artefatos de código fonte do serviço Web, atualmente a ferramenta faz uso do framework da Apache Axis2. Entretanto, a arquitetura
da ferramenta possibilita o uso de outros mecanismos para geração dos artefatos do serviço Web como, por exemplo, os frameworks Metro1 , Spring WS2 e CXF3 . Dessa forma,
espera-se integrar esses frameworks a ferramenta AutoWebS.
Finalmente, espera-se aumentar o grau de avaliação da ferramenta através da
realização de novos estudos de caso e experimentos controlados.
1 http://metro.java.net
2 http://static.springsource.org/spring-ws/sites/2.0/
3 http://cxf.apache.org/
Referências Bibliográficas
[w3c, 1999] (1999). XSL transformations (XSLT), W3C recommendation.
[Akkiraju et al., ] Akkiraju, R., Farell, J., Miller, J. A., Nagarajan, M., Sheth, A., and Verma,
K. Web Service Semantics - WSDL-S.
[Alonso et al., 2004] Alonso, G., Casati, F., Kuno, H., and Machiraju, V. (2004). Web
Services: Concepts, Architectures and Applications.
Springer-Verlag, ISBN 3-540-
44008-9.
[Atkinson et al., 2006] Atkinson, C., Gutheil, M., and Kiko, K. (2006). On the relationship
of ontologies and models. In Proceedings of the 2nd International Workshop on MetaModelling (WoMM 2006), pages 47–60, Karlsruhe, Germany.
[Basha and Irani, 2002] Basha, S. and Irani, R. (2002). AXIS: the next generation of Java
SOAP. Programmer to Programmer. Wrox Press Ltd., Birmingham, UK, UK, 1st edition.
[Basili et al., 1994] Basili, V., Caldiera, G., and Rombach, D. H. (1994). The goal question
metric approach. In Marciniak, J., editor, Encyclopedia of Software Engineering. Wiley.
[Belghiat and Bourahla, 2012] Belghiat, A. and Bourahla, M. (2012). Article: An approach
based atom3 for the generation of owl ontologies from uml diagrams. International
Journal of Computer Applications, 41(3):41–46. Published by Foundation of Computer
Science, New York, USA.
[Berenson and Levine, 1996] Berenson, M. and Levine, D. (1996). Basic business statistics: concepts and applications. Prentice Hall.
[Berners-Lee et al., 2001] Berners-Lee, T., Hendler, J., and Lassila, O. (2001).
The
semantic web : a new form of web content that is meaningful to computers will unleash
a revolution of new possibilities. Scientific American.
[Bloehdorn and Moschitti, ] Bloehdorn, S. and Moschitti, R. Uddi project — universal description, discovery and integration. In Advances in Information Retrieval - Proceedings
of the 29th European Conference on Information Retrieval (ECIR 2007.
Referências Bibliográficas
111
[Bottaro and Gérodolle, 2008] Bottaro, A. and Gérodolle, A. (2008). Home soa -: facing
protocol heterogeneity in pervasive applications. In Proceedings of the 5th international
conference on Pervasive services, ICPS ’08, pages 73–80, New York, NY, USA. ACM.
[Brambilla et al., 2007] Brambilla, M., Ceri, S., Facca, F. M., Celino, I., Cerizza, D., and
Valle, E. D. (2007). Model-driven design and development of semantic web service
applications. ACM Trans. Internet Technol., 8.
[Brockmans et al., 2006] Brockmans, S., Colomb, R. M., Haase, P., Kendall, E. F., Wallace,
E. K., Welty, C., and Xie, G. T. (2006). A model driven approach for building owl dl and
owl full ontologies. In In Proceedings of the 5th International Semantic Web Conference
(ISWC’06.
[Burstein et al., 2004] Burstein, M., Hobbs, J., Lassila, O., Mcdermott, D., Mcilraith, S.,
Narayanan, S., Paolucci, M., Parsia, B., Payne, T., Sirin, E., Srinivasan, N., and Sycara,
K. (2004). OWL-S: Semantic Markup for Web Services. Website.
[Chafle et al., 2007] Chafle, G., Das, G., Dasgupta, K., Kumar, A., Mittal, S., Mukherjea,
S., and Srivastava, B. (2007). An integrated development environment for web service
composition. In Web Services, 2007. ICWS 2007. IEEE International Conference on,
pages 839 –847.
[Christensen et al., 2001] Christensen, E., Curbera, F., Meredith, G., and Weerawarana,
S. (2001). Web Service Definition Language (WSDL). Technical report.
[Clark, 1999] Clark, D. (1999). Mad cows, metathesauri, and meaning. IEEE Intelligent
Systems, 14:75–77.
[Corder and Foreman, 2009] Corder, G. and Foreman, D. (2009). Nonparametric Statistics for Non-Statisticians: A Step-By-Step Approach. Wiley.
[Dai et al., 2007] Dai, N., Mandel, L., and Ryman, A. (2007). Eclipse Web Tools Platform:
Developing Java&#8482; Web Applications. Addison-Wesley Professional, first edition.
[Davies et al., 2006] Davies, J., Studer, R., and Warren, P., editors (2006). Semantic Web
Technologies: Trends and Research in Ontology-Based Systems. John Wiley & Sons,
Chichester, UK.
[de Bruijn, 2003] de Bruijn, J. (2003). Using Ontologies - Enabling Knowledge Sharing
and Reuse on the Semantic Web. Technical Report DERI-2003-10-29, DERI.
[de Bruijn et al., 2005] de Bruijn, J., Bussler, C., Domingue, J., Fensel, D., Hepp, M., Keller,
U., Kifer, M., König-Ries, B., Kopecky, J., Lara, R., Lausen, H., Oren, E., Polleres, A.,
Referências Bibliográficas
112
Roman, D., Scicluna, J., and Stollberg, M. (2005). Web service modeling ontology
(wsmo). W3C member submission.
[Dean and Schreiber, 2004] Dean, M. and Schreiber, G. (2004).
OWL web ontology
language reference. W3C recommendation, W3C.
[Dey et al., 2001] Dey, A., Salber, D., and Abowd, G. (2001). A conceptual framework and
a toolkit for supporting the rapid prototyping of context-aware applications.
[Easton et al., 2008] Easton, P., Mehta, B., and Merrick, R. (2008).
message service 1.0.
Soap over java
World Wide Web Consortium, Working Draft WD-soapjms-
20081121.
[Elenius et al., 2005] Elenius, D., Denker, G., Martin, D., Gilham, F., Khouri, J., and Senanayake, R. (2005). The owl-s editor - a development tool for semantic web services.
In In Proceedings of the Second European Semantic Web Conference, pages 78–92.
Springer.
[Falkovych et al., 2003] Falkovych, K., Sabou, M., and Stuckenschmidt, H. (2003). UML
for the Semantic Web: Transformation-Based Approaches. In Omelayenko, B. and Klein,
M., editors, Knowledge Transformation for the Semantic Web, pages 92–106. IOS Press.
[Fang et al., 2006] Fang, K., ze Li, R., and Sudjianto, A. (2006). Design and modeling
for computer experiments. Computer science and data analysis series. Chapman &
Hall/CRC.
[Fonseca et al., 2009] Fonseca, A., Claro, D. B., and Lopes, D. C. P. (2009). Gerenciando
o desenvolvimento de uma composição de serviços web semânticos através do owl-s
composer.
[Frankel, 2003] Frankel, D. S. (2003). Model Driven Architecture: Applying MDA to Enterprise Computing. Wiley.
[Gasevic et al., 2006] Gasevic, D., Djuric, D., and Devedzic, V. (2006). The mda-based
ontology infrastructure. In Model Driven Architecture and Ontology Development, pages
173–179. Springer Berlin Heidelberg.
[Gaševic et al., 2009] Gaševic, D., Djuric, D., and Devedžic, V. (2009).
Model Driven
Engineering and Ontology Development. Springer, Berlin, 2. edition.
[Gérard et al., 2007] Gérard, S., Dumoulin, C., Tessier, P., and Selic, B. (2007). Papyrus:
A uml2 tool for domain-specific language modeling. In Model-Based Engineering of
Embedded Real-Time Systems, pages 361–368.
Referências Bibliográficas
113
[Ghallab et al., 1998] Ghallab, M., Isi, C. K., Penberthy, S., Smith, D. E., Sun, Y., and Weld,
D. (1998). PDDL - The Planning Domain Definition Language. Technical report, CVC
TR-98-003/DCS TR-1165, Yale Center for Computational Vision and Control.
[Grace et al., 2003] Grace, P., Blair, G., and Samuel, S. (2003). Remmoc: A reflective
middleware to support mobile client interoperability. In Meersman, R., Tari, Z., and
Schmidt, D., editors, On The Move to Meaningful Internet Systems 2003: CoopIS, DOA,
and ODBASE, volume 2888 of Lecture Notes in Computer Science, pages 1170–1187.
Springer Berlin / Heidelberg.
[Hart et al., 2004] Hart, L., Emery, P., Colomb, B., Raymond, K., Taraporewalla, S., Chang,
D., Ye, Y., Kendall, E., and Dutra, M. (2004).
OWL Full and UML 2.0 Compared.
Technical report.
[Hassanpour et al., 2010] Hassanpour, S., O&#39;Connor, M. J., and Das, A. K. (2010).
A software tool for visualizing, managing and eliciting swrl rules. In Proceedings of the
7th international conference on The Semantic Web: research and Applications - Volume
Part II, ESWC’10, pages 381–385, Berlin, Heidelberg. Springer-Verlag.
[Heß et al., 2004] Heß, A., Johnston, E., and Kushmerick, N. (2004). Assam: A tool for
semi-automatically annotating semantic web services. In 3rd International Semantic
Web Conference, pages 320–334. Springer.
[Heß and Kushmerick, 2004a] Heß, A. and Kushmerick, N. (2004a). Iterative ensemble
classification for relational data: A case study of semantic web services. In ECML,
pages 156–167.
[Heß and Kushmerick, 2004b] Heß, A. and Kushmerick, N. (2004b). Machine learning for
annotating semantic web services. In In AAAI Spring Symposium on Semantic Web
Services.
[Horridge et al., 2004] Horridge, M., Knublauch, H., Rector, A., Stevens, R., and Wroe, C.
(2004). A practical guide to building owl ontologies using the protégé-owl plugin and
co-ode tools. The University Of Manchester, 27:0–117.
[Horrocks et al., 2004] Horrocks, I., Patel-Schneider, P. F., Boley, H., Tabet, S., Grosof, B.,
and Dean, M. (2004). SWRL: A Semantic Web Rule Language Combining OWL and
RuleML. Technical report, World Wide Web Consortium.
[Kim and Lee, 2007] Kim, I.-W. and Lee, K.-H. (2007). Describing semantic web services:
From uml to owl-s. Web Services, IEEE International Conference on, 0:529–536.
Referências Bibliográficas
[Kim and Lee, 2009] Kim, I.-W. and Lee, K.-H. (2009).
114
A model-driven approach for
describing semantic web services: from uml to owl-s. Trans. Sys. Man Cyber Part C,
39(6):637–646.
[Kjaer, 2007] Kjaer, K. E. (2007). A survey of context-aware middleware. In Proceedings of
the 25th conference on IASTED International Multi-Conference: Software Engineering,
pages 148–155, Anaheim, CA, USA. ACTA Press.
[Kopecký et al., 2007] Kopecký, J., Vitvar, T., Bournez, C., and Farrell, J. (2007). Sawsdl:
Semantic annotations for wsdl and xml schema. IEEE Internet Computing, 11:60–67.
[Lassila et al., 1998] Lassila, O., Swick, R. R., Wide, W., and Consortium, W. (1998).
Resource Description Framework (RDF) Model and Syntax Specification.
[Lopes et al., 2008] Lopes, F., Delicato, F., Batista, T., and Cacho, N. (2008). On the
integration of context-based heterogeneous middleware for ubiquitous computing. In
Proceedings of the 6th international workshop on Middleware for pervasive and ad-hoc
computing, MPAC ’08, pages 31–36, New York, NY, USA. ACM.
[Lopes et al., 2009a] Lopes, F., Delicato, F., Batista, T., and Pires, P. (2009a). A platform
based on web services for context middleware integration. In Proceedings of the XV
Brazilian Symposium on Multimedia and the Web, WebMedia ’09, pages 13:1–13:8,
New York, NY, USA. ACM.
[Lopes et al., 2009b] Lopes, F., Delicato, F. C., Batista, T., and Pires, P. F. (2009b).
Context-based heterogeneous middleware integration.
In Proceedings of the 2009
Workshop on Middleware for Ubiquitous and Pervasive Systems, WMUPS ’09, pages
13–18, New York, NY, USA. ACM.
[Loughran and Hatcher, 2007] Loughran, S. and Hatcher, E., editors (2007). Ant in Action.
Second Edition of Java Development with Ant. 2 edition.
[Lowry, 2012] Lowry, R. (2012). Concepts and Applications of Inferential Statistics. http:
//faculty.vassar.edu/lowry/webtext.html.
[Manola and Miller, 2004] Manola, F. and Miller, E., editors (2004). RDF Primer. W3C
Recommendation. World Wide Web Consortium.
[Martin et al., 2004] Martin, D., Paolucci, M., McIlraith, S., Burnstein, M., McDermott, D.,
McGuinness, D., Parsia, B., Payne, T. R., Sabou, M., Solanki, M., Srinivasan, N., and
Sycara, K. (2004). Bringing semantics to web services: The owl-s approach. In Cardoso,
J. and Sheth, A., editors, First International Workshop on Semantic Web Services and
Referências Bibliográficas
115
Web Process Composition (SWSWPC 2004), volume 3387 of LNCS, pages 26–42.
Springer.
[McIlraith et al., 2001] McIlraith, S. A., Son, T. C., and Zeng, H. (2001). Semantic web
services. IEEE Intelligent Systems. Special Issue on the Semantic Web, 16(2):46–53.
[Microsystems, 1998] Microsystems, I. S. (1998). Java message service, version 1.0.2
(jms specification). Technical report, Sun Microsystems, Inc.
[Missikoff et al., 2002] Missikoff, M., Navigli, R., and Velardi, P. (2002).
The usable
ontology: An environment for building and assessing a domain ontology. In In Proceedings of the International Semantic Web Conference (ISWC, volume 2342, pages
39–53. Springer-Verlag.
[Mitra, 2003] Mitra, N. (2003). SOAP version 1.2 Part 0: Primer W3C Recommendation.
[Montgomery, 2009] Montgomery, D. C. (2009). Design and Analysis of Experiments.
John Wiley & Sons, Inc., 7 edition.
[Natalya Fridman Noy, 2001] Natalya Fridman Noy, D. L. M. (2001).
Development 101: A Guide to Creating Your First Ontology.
Ontology
Stanford Knowledge
Systems Laboratory Technical Report KSL-01-05, Knowledge Systems, AI Laboratory,
Stanford University. Stanford Medical Informatics Technical Report SMI-2001-0880.
[Noy et al., 2000] Noy, N. F., Fergerson, R. W., and Musen, M. A. (2000). The knowledge
model of protégé-2000: Combining interoperability and flexibility. In Proceedings of
the 12th European Workshop on Knowledge Acquisition, Modeling and Management,
EKAW ’00, pages 17–32, London, UK. Springer-Verlag.
[Obeo Network, 2007] Obeo Network (2007). Acceleo Generator. http://www.acceleo.org.
[Obeo Network, 2012] Obeo Network (2012). Uml to java generator 1.0.0.
[Object Management Group, 2006] Object Management Group (2006). Meta Object Facility (MOF) Core Specification Version 2.0.
[Object Management Group, 2007] Object Management Group (2007). XML Metadata
Interchange (XMI). Object Management Group.
[Object Management Group, 2008] Object Management Group (2008). Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification Version 1.0. http://www.omg.
org/spec/QVT/1.0/PDF/.
Referências Bibliográficas
116
[Object Management Group, 2009] Object Management Group (2009). Ontology definition metamodel (omg) version 1.0. Technical Report formal/2009-05-01, Object Management Group.
[Perera et al., 2006] Perera, S., Herath, C., Ekanayake, J., Chinthaka, E., Ranabahu, A.,
Jayasinghe, D., Weerawarana, S., and Daniels, G. (2006). Axis2, middleware for next
generation web services. In Proceedings of the IEEE International Conference on Web
Services, pages 833–840, Washington, DC, USA. IEEE Computer Society.
[Pondrelli, 2005] Pondrelli, L. (2005).
An mdd annotation methodology for semantic
enhanced service oriented architectures. In Proc. CEUR Workshop, pages –1–1.
[Prod’hommeaux, 2007] Prod’hommeaux, E. (2007).
W3C RDF validation service.
http://www.w3.org/RDF/Validator/.
[Rager et al., 2004] Rager, D., Self, T., and Lerner, J. (2004).
Owl validator.
http://projects.semwebcentral.org/projects/vowlidator/.
[Silva Parreiras et al., 2007] Silva Parreiras, F., Staab, S., and Winter, A. (2007). Twouse:
Integrating uml models and owl ontologies.
Technical Report 16/2007, Institut für
Informatik, Universitãt Koblenz-Landau. Technical Report.
[Sirin and Parsia, 2004] Sirin, E. and Parsia, B. (2004). The owl-s java api. In Proceedings
of the Third International Semantic Web Conference.
[Sollazzo et al., 2002] Sollazzo, T., Handschuh, S., Staab, S., Frank, M. R., and Stojanovic, N. (2002). Semantic web service architecture – evolving web service standards
toward the semantic web. In Proceedings of the Fifteenth International Florida Artificial
Intelligence Research Society Conference, pages 425–429. AAAI Press.
[Sparx Systems, 2000] Sparx Systems (2000). Enterprise Architect. Sparx Systems.
[Srinivasan et al., 2005] Srinivasan, N., Paolucci, M., and Sycara, K. (2005). CODE: A
Development Environment for OWL-S Web services. Technical Report CMU-RI-TR-0548, Robotics Institute, Carnegie Mellon University, Pittsburgh, PA.
[Stahl and Völter, 2006] Stahl, T. and Völter, M. (2006).
Model-Driven Software
Development: Technology, Engineering, Management. Wiley, Chichester, UK.
[Steinberg et al., 2008] Steinberg, D., Budinsky, F., Paternostro, M., and Merks, E. (2008).
EMF: Eclipse Modeling Framework (2nd Edition).
edition.
Addison-Wesley Professional, 2
Referências Bibliográficas
117
[Strang and Popien, 2004] Strang, T. and Popien, C. L. (2004). A context modeling survey.
In UbiComp 1st International Workshop on Advanced Context Modelling, Reasoning
and Management, pages 31–41, Nottingham.
[Tiago Semprebom and Mendonça, 2007] Tiago Semprebom, M. Y. C. and Mendonça,
I. (2007). Ontologias e protégé. Technical report, Universidade Federal de Santa
Catarina.
[Uschold and Grüninger, 1996] Uschold, M. and Grüninger, M. (1996). Ontologies: principles, methods, and applications. Knowledge Engineering Review, 11(2):93–155.
[Wikipedia, 2011] Wikipedia (2011). Web service — Wikipedia, the free encyclopedia.
[Online; Ão ltimo acesso em 22 de Novembro de 2011].
[Yang and Chung, 2006a] Yang, J.-H. and Chung, I.-J. (2006a). Automatic Generation of
Service Ontology from UML Diagrams for Semantic Web Services. pages 523–529.
[Yang and Chung, 2006b] Yang, J.-H. and Chung, I.-J. (2006b). A method for automatic
generation of owl-s service ontology. JIPS, 2(2):114–123.
[Zuur et al., 2009] Zuur, A. F., Ieno, E. N., and Meesters, E. (2009). A Beginner’s Guide to
R. Springer. ISBN: 978-0-387-93836-3.
APÊNDICE A
XSL Transformation
XSL (EXtensible Stylesheet Language) é uma família de linguagens para formatação de documentos XML. XSL é utilizada para criar estilos (stylesheets) para documentos XML da mesma forma que CSS (Cascading Style Sheets) cria estilos para documentos
HTML. Com XSL é possível converter um documento XML descrito por um determinado
DTD ou Schema XML em outro documento XML descrito por um DTD ou Schema XML
diferente. Isto é bastante útil para serviços Web, pois um determinado serviço Web pode
utilizar uma formatação das mensagens SOAP diferente daquela que o requisitante está
apto a trabalhar. XSL pode também filtrar ou ordenar os elementos de um documento
XML. XSL é dividida em três partes:
XSL Transformation (XSLT) uma linguagem XML para transformação de documentos
XML.
XML Path Language (XPath) uma linguagem não XML usada pela XSLT para navegar
sobre partes de documentos XML.
XSL Formatting Objects (XSL-FO) uma linguagem para especificação da formatação
visual de documentos XML.
XSLT é uma linguagem declarativa que cria stylesheets para transformação de
documentos XML. Um stylesheet contém um conjunto de templates e expressões. Um
template descreve a saída a ser gerada baseada em certos critérios. Uma expressão
determina em qual elemento XML deve ser aplicada a transformação. O princípio de
funcionamento do XSLT é bastante simples, conforme podemos observar na Figura A.1.
Processadores XSLT recebem como entrada documentos XML e stylesheets XSLT para
então produzir um novo documento XML baseado nas regras de templates definidas no
stylesheet XSLT. O documento original não é modificado, mas o novo documento pode
ser criado com sintaxe XML ou qualquer outro formato, tal como HTML ou SQL.
XSLT utiliza um poderoso mecanismo de casamento de padrões para selecionar
pedaços dos documentos XML para transformação. As regras de templates dos stylesheets
XSLT são definidas para serem aplicadas em padrões, que podem ser elementos ou
atributos XML. Os padrões são definidos utilizando a linguagem XPath.
Apêndice A
119
Figura A.1: Transformação em XSLT
O processador XSLT constrói representações em árvore para o documento XML
de entrada e o documento de saída. O processador XSLT começa o processamento da
representação em árvore do documento XML a partir do elemento root, procurando no
stylesheet XSLT se existe algum casamento para este nó, se existir o casamento ele
verifica o template que deve ser aplicado. Os templates definidos no XSLT direcionam
o processador para criar novos nós na árvore de saída ou então processar outros nós da
árvore do documento XML da mesma forma que o nó root. Ao final do processamento a
árvore de saída estará montada e o documento de saída será derivado a partir dela.
Uma característica interessante do XSLT é que ele pode ser especificado dentro
do documento XML ao qual ele será aplicado. Para adicionar o XSLT stylesheet no
documento XML basta inserir a seguinte instrução após a declaração XML:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
XSLT utiliza várias declarações de elementos e funções pré-estabelecidas para
criar os stylesheets. O poder de expressão das declarações e a vasta quantidade de funções
tornam esta linguagem bastante poderosa. O propósito deste documento não é apresenta
toda a linguagem XSLT, apenas estamos interessados em demonstrar sua funcionalidade
e os principais elementos e funções. Uma referência completa para XSLT pode ser obtida
em [w3c, 1999].
Para efeito de exemplificação considere a mensagem SOAP representada no
trecho de Código A.1. Uma mensagem SOAP é um documento XML, portanto XSLT
pode ser utilizado para transformá-la em outro documento.
Apêndice A
120
Código A.1 Mensagem SOAP
1
<?xml version=’1.0’ encoding=’utf-8’?>
2
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
3
4
5
<soapenv:Body>
<ns:subscribeBurdenAssyncServiceResponse xmlns:ns="http://service/xsd">
<ns:return xmlns:ax29="http://model/xsd"
6
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7
xsi:type="ax29:Regime">
8
<ax29:burden>0</ax29:burden>
9
<ax29:cpm xsi:nil="true" />
10
<ax29:idRegime xsi:nil="true" />
11
<ax29:stemSize xsi:nil="true" />
12
13
</ns:return>
</ns:subscribeBurdenAssyncServiceResponse>
14
</soapenv:Body>
15
</soapenv:Envelope>
A mensagem SOAP representa o retorno de um serviço Web. O conteúdo
desta mensagem que é interpretado pela aplicação está dentro do elemento
ns:subscribeBurdenAssyncService.
O Código A.2 ilustra o documento XLST definido para transformar a mensagem
SOAP em outro documento XML.
Apêndice A
121
Código A.2 XSLT para a mensagem SOAP
1
<xsl:stylesheet version="1.0"
2
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
xmlns:tns1="http://service/xsd"
5
xmlns:tns2="http://model/xsd">
6
<xsl:template match="/">
7
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
xmlns:j.0="http://www.example.org/owls/OilMonitor.owl#">
9
<xsl:variable name="x" select="tns1:return" />
10
11
12
13
14
<xsl:element name="j.0:Regime">
<xsl:element name="j.0:idRegime">
<xsl:attribute name="rdf:datatype">
http://www.w3.org/2001/XMLSchema#string</xsl:attribute>
<xsl:value-of select="$x/tns2:idRegime" />
15
</xsl:element>
16
<xsl:element name="j.0:burdenValue">
17
<xsl:attribute name="rdf:datatype">
18
http://www.w3.org/2001/XMLSchema#string</xsl:attribute>
19
<xsl:value-of select="$x/tns2:burden" />
20
</xsl:element>
21
<xsl:element name="j.0:cpmValue">
22
23
24
<xsl:attribute name="rdf:datatype">
http://www.w3.org/2001/XMLSchema#string</xsl:attribute>
<xsl:value-of select="$x/tns2:cpm" />
25
</xsl:element>
26
<xsl:element name="j.0:stemSize">
27
28
29
30
31
32
33
34
<xsl:attribute name="rdf:datatype">
http://www.w3.org/2001/XMLSchema#string</xsl:attribute>
<xsl:value-of select="$x/tns2:stemSize" />
</xsl:element>
</xsl:element>
</rdf:RDF>
</xsl:template>
</xsl:stylesheet>
No documento XSLT a declaração <xsl:template match="/» instrui o processador XSLT
a executar este template no elemento root da árvore do documento XML. O texto que
precede a declaração do template:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
Apêndice A
122
xmlns:j.0="http://www.example.org/owls/OilMonitor.owl#">
será automaticamente colocada no documento de saída. Este texto não é uma declaração
XSLT, pois não tem o prefixo xsl. A declaração seguinte, <xsl:variable/> define uma
variável identificada por x com o valor "tns1:return". Esta variável será utilizada no
restante do documento XSLT para referenciar seu valor com a seguinte sintaxe: $x.
Prosseguindo com a análise, a declaração <xsl:element> define um elemento XML para
o documento de saída. O primeiro elemento definido tem o nome j.0:idRegime e possui
um atributo chamado rdf:datatype com o valor especificado pelo texto
http://www.w3.org/2001/XMLSchema#string
O valor deste elemento é o mesmo valor do elemento "$x/tns2:idRegime"do documento
de entrada. A expressão "$x/tns2:idRegime"é uma expressão XPath, onde / é um seletor
para subdiretórios. Desta forma esta expressão representa o elemento idRegime que é definido no namespace tns2 que, por sua vez está definido dentro do namespace identificado
pela variável $x. Conforme podemos observar no Código A.1 o elemento ns:return está
definido dentro do namespace "http://service/xsd"que é o valor da variável x. As outras
declarações XSLT especificam mais três elementos, burdenValue, burdenValue e stemSize. Dessa forma o documento XML criado a partir das transformações XSLT terá a
seguinte forma, ilustrado no Código A.3:
Código A.3 Documento
1
2
3
4
5
6
7
8
9
10
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://www.example.org/owls/OilMonitor.owl#">
<j.0:Regime>
<j.0:idRegime rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
</j.0:idRegime>
<j.0:burdenValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
0</j.0:burdenValue>
<j.0:cpmValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
</j.0:cpmValue>
<j.0:stemSize rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
11
</j.0:stemSize>
12
</j.0:Regime>
13
</rdf:RDF>
APÊNDICE B
Tecnologias dos serviços Web
B.1
SOAP
SOAP (Simple Object Access Protocol) [Mitra, 2003] é o protocolo de comunicação, baseado em XML e padronizado pela W3C, utilizado pelos serviços Web para
codificar as mensagens entre o serviço Web e o cliente. Pelo fato de ser baseado em XML
ele é independente de plataforma e linguagem de programação.
SOAP tem uma sintaxe simples e flexível, normalmente é encapsulado em uma
mensagem HTTP, porém pode ser utilizado em conjunto com outros protocolos como
JMS (Java Message Service) [Microsystems, 1998] e SMTP (Simple Mail Transport
Protocol) [Easton et al., 2008]. SOAP pode ser transmitido facilmente pela Internet sem
que o desenvolvedor preocupe-se com os bloqueios impostos por alguns firewalls e
proxys. Entretanto, por causa do formato XML, SOAP pode ser consideravelmente mais
lento do que outras tecnologias como CORBA. Porém, quando um número reduzido de
mensagens ou mensagens pequenas são transmitidas, este problema é minimizado.
Uma mensagem SOAP é um documento XML que contém os seguintes elementos:
• Um elemento Envelope que identifica o documento XML como uma mensagem
SOAP;
• Um elemento Header que contém informações de cabeçalho da mensagem SOAP,
normalmente específicas da aplicação, como por exemplo, informações de autenticação. O elemento Header de uma mensagem SOAP é opcional e se ele estiver
presente na mensagem, ele deve ser o primeiro filho do elemento Envelope;
• Um elemento Body que contém informações de chamadas e respostas dos pares
envolvidos na comunicação, ou seja, o cliente e o serviço Web;
• Um elemento Fault que pode conter informações de erros e status.
Para efeito de demonstração considere o seguinte método na linguagem Java que
representa a assinatura de uma operação de um serviço Web:
public Regime subscribeBurdenAssyncService(OilWell well,
Apêndice B
124
PumpUnit unit);
O retorno do método subscribeBurdenAssyncService é definido como um objeto Regime.
Este objeto é um POJO1 que contém os atributos burden, cpm, idRegime e stemSize, todos
do tipo String.
O trecho de Código B.1 ilustra a mensagem SOAP de resposta a uma requisição
ao serviço Web subscribeBurdenAssyncService. As linhas 1 a 5 determinam o cabeçalho
da mensagem do protocolo HTTP e, logo em seguida, na linha 6 existe uma linha em
branco que separa o cabeçalho do corpo da mensagem HTTP. A mensagem SOAP é
encapsulada dentro do corpo da mensagem HTTP, conforme podemos observar a partir
da linha 7 até o fim do documento.
A mensagem SOAP inicia-se com a seguinte declaração XML:
<?xml version=’1.0’ encoding=’utf-8’?>
que identifica o documento como um documento XML com o tipo de codificação UTF-8
Unicode.
O atributo xmlns, do XML Schema, é usado para declarar ligações de namespace
com prefixos, conforme o caso do prefixo ns na linha 11. Dessa forma,os atributos
xmlns:soapenv e soapenv:encodingStyle do elemento Envelope são utilizados para
declarar, respectivamente os namespaces para o Envelope SOAP e os tipos de dados
(data types). No trecho de Código B.1 temos apenas a declaração do namespace para
o elemento Envelope, representado da linha 9. O namespace para os tipos de dados pode
ser declarado em qualquer elemento da mensagem SOAP, sendo que sua visibilidade será
para o conteúdo do elemento e para seus filhos.
1 Plain
interface
Old Java Object - um objeto Java que contém apenas atributos e não implementa nenhuma
Apêndice B
125
Código B.1 Exemplo de Mensagem SOAP de Resposta
1
HTTP/1.1 200 OK
2
Server: Apache-Coyote/1.1
3
Content-Type: text/xml;charset=utf-8
4
Date: Mon, 31 Oct 2011 02:25:25 GMT
5
Connection: close
6
7
<?xml version=’1.0’ encoding=’utf-8’?>
8
<soapenv:Envelope
9
10
11
12
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:subscribeBurdenAssyncServiceResponse xmlns:ns="http://service/xsd">
<ns:return xmlns:ax29="http://model/xsd"
13
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
14
xsi:type="ax29:Regime">
15
<ax29:burden>0</ax29:burden>
16
<ax29:cpm xsi:nil="true" />
17
<ax29:idRegime xsi:nil="true" />
18
<ax29:stemSize xsi:nil="true" />
19
20
</ns:return>
</ns:subscribeBurdenAssyncServiceResponse>
21
</soapenv:Body>
22
</soapenv:Envelope>
O elemento Body inicia-se na linha 10 e termina na linha 21 do
trecho de Código B.1. O elemento Body contém um subelemento (linha
11) ns:subscribeBurdenAssyncServiceResponse, onde é declarado o namespace
http://service/xsd que está associado ao prefixo ns. Todos os elementos dos namespaces http://service/xsd e http://model/xsd estão definidos no arquivo WSDL do serviço
Web. Nas linhas 12 e 13 existem duas outras declarações de namespaces, http://model/xsd
e
http://www.w3.org/2001/XMLSchema-instance, respectivamente associados aos prefixos
ax29 e xsi. Esses namespaces possuem visibilidade em cima do elemento ns:return e
seus filhos. Na linha 14 o atributo xsi:type é usado para identificar tipos complexos
derivados. Ele aponta para uma referência do Schema que define o seu tipo. Neste caso,
ax29:Regime corresponde ao identificador http://model/xsd/Regine. Logo, pode-se concluir que, ns:return é um tipo http://model/xsd/Regime que está declarado no documento
WSDL do serviço Web.
As linhas 15 a 18 contêm os elementos burden, cpm, idRegime e stemSize. O
Apêndice B
126
valor associado para o elemento burden é 0 enquanto que para os demais não existe valor
associado, porém a mensagem SOAP continua válida, pois um elemento da mensagem
SOAP que não contém conteúdo pode ser válido se ele tem o atributo xsi:nil com o valor
true.
As linhas 19 e 20 definem as marcações XML para fechar a especificação dos
elementos ns:return e ns:subscribeBurdenAssyncServiceResponse. Já na linha 21 e 22 os
elementos Body e Envelope da mensagem SOAP são fechados.
A mensagem SOAP associada a requisição do serviço pode ser visualizada no
trecho de Código B.2.
Código B.2 Exemplo de Mensagem SOAP de Requisição
1
POST /axis2/services/WellDatabase.WellDatabaseHttpSoap11Endpoint/ HTTP/1.0
2
Content-Type: text/xml; charset=utf-8
3
Accept: application/soap+xml, application/dime, multipart/related, text/*
4
User-Agent: Axis/1.4
5
Host: localhost:8081
6
Cache-Control: no-cache
7
Pragma: no-cache
8
SOAPAction: "urn:subscribeBurdenAssyncService"
9
Content-Length: 444
10
X-Forwarded-For: 127.0.0.1
11
12
<?xml version="1.0" encoding="UTF-8"?>
13
<soapenv:Envelope
14
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
15
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
16
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
17
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
18
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
19
20
<soapenv:Body>
<subscribeBurdenAssyncService xmlns="http://service/xsd" />
21
</soapenv:Body>
22
</soapenv:Envelope>
23
A primeira linha do trecho de Código B.2 ilustra a requisição do protocolo HTTP.
A mensagem SOAP foi encapsulada dentro de uma requisição HTTP do tipo POST para
o EndPoint do serviço Web.
A declaração dos elementos e a estrutura da mensagem SOAP de requisição é
semelhante a mensagem SOAP de resposta. Na linha 18 a declaração do atributo so-
Apêndice B
127
apenv:encodingStyle estabelece o namespace para os tipos de dados (data types) do
elemento Envelope. Na linha 20 é definido o elemento subscribeBurdenAssyncService.
Ele é o parâmetro para o serviço Web e sua estrutura está definida no namespace http://service/xsd que foi especificado no arquivo WSDL. O trecho de Código B.3 ilustra uma parte do documento WSDL que define o tipo complexo
subscribeBurdenAssyncService.
Código B.3 Definição do tipo complexo subscribeBurdenAssyncService
1
...
2
<wsdl:types>
3
4
<xs:schema xmlns:ax210="http://model/xsd" attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace="http://service/xsd">
<xs:element name="subscribeBurdenAssyncService">
5
<xs:complexType>
6
<xs:sequence>
7
<xs:element minOccurs="0" name="well" nillable="true"
8
9
type="ax210:OilWell"/>
<xs:element minOccurs="0" name="unit" nillable="true"
10
11
type="ax210:PumpUnit"/>
</xs:sequence>
12
</xs:complexType>
13
</xs:element>
14
15
</xs:schema>
16
...
17
</wsdl:types>
18
...
Os parâmetros OilWell e PumpUnit de subscribeBurdenAssyncService podem assumir valores null. Desta forma, conforme podemos observar na mensagem de requisição
SOAP, nenhum valor é especificado para estes atributos.
B.2
WSDL
WSDL (Web Service Definition Language) é a linguagem baseada em XML
utilizada para descrever o serviço Web. WSDL define um contrato entre o requisitante do
serviço e o seu provedor a partir da descrição de quatro aspectos relacionados ao serviço
Web:
Interface fornece informações que descrevem as funções/operações do serviço;
Apêndice B
128
Data type são informações que descrevem os tipos de dados para todas as mensagens de
requisição ou resposta;
Binding descreve o tipo de protocolo de transporte a ser utilizado;
Address contém informações para localizar um determinado serviço.
A versão atual da especificação WSDL é a 1.2, renomeada para 2.0 devido às
diferenças substancias para a versão 1.1. Entretanto, várias ferramentas e frameworks
ainda adotam a versão 1.1. Neste trabalho utilizaremos a versão 1.1 da especificação
WSDL por motivos de compatibilidade com nosso estudo de caso, a plataforma OpenCOPI [Lopes et al., 2008, Lopes et al., 2009a, Lopes et al., 2009b] que utiliza a linguagem OWL-S na versão 1.1, que é compatível somente com a especificação WSDL 1.1.
WSDL é dividida em oito principais elementos: Definition, Types, Message,
Operation, Port Type, Binding, Port, Service. A Figura B.1 ilustra os elementos da WSDL
e suas relações.
Figura B.1: Elementos do WSDL 1.1
Definition É o elemento WSDL root que engloba todos os demais elementos. Nele é
declarado todos os namespaces utilizados no documento WSDL.
Types É um contêiner para os tipos de dados definidos e utilizados pelos clientes e o
serviço Web. WSDL utiliza a especificação do Schema XML W3C como o sistema
de tipos padrão. Isto significa que para um determinado serviço Web que utiliza
apenas tipos definidos no Schema XML, como por exemplo, os tipos String e
Integer, o elemento types da especificação deste serviço Web não é necessário.
Apêndice B
129
Message Define quais são as mensagens que serão transmitidas entre o cliente e o serviço
Web. Um elemento message contém informações necessárias para executar uma
operação do serviço Web. O elemento message tem um nome único, definido pela
propriedade name, que é utilizado para identificar unicamente cada mensagem. O
elemento message pode ser composto por zero ou mais elementos do tipo part, que
referenciam os parâmetros ou retorno das mensagens. Cada elemento part oferece
uma descrição lógica de uma parte do conteúdo de um elemento message e também
contém um identificador único, definido pela propriedade name .
Operation Oferece uma descrição abstrata de uma ação suportada pelo serviço. Quando
estiver dentro do elemento portType ele especifica a “assinatura” do método/operação do serviço Web. Já quando está dentro do elemento binding ele define como
as mensagens SOAP serão codificadas. As mensagens podem ser do tipo RPC ou
Document. O elemento operation também define a natureza da operação e o seu
comportamento com o Endpoint associado. Existem quatro possíveis tipos:
one-way o Endpoint da operação pode receber uma mensagem de requisição
porém não retorna nenhuma mensagem;
request-response o Endpoint da operação pode receber uma mensagem de requisição e sempre retorna uma mensagem de resposta;
solicit-response o Endpoint da operação pode enviar uma mensagem de requisição
e irá esperar por uma resposta;
notification o Endpoint da operação pode enviar uma mensagem, mas não irá
esperar por uma resposta.
Port Type Este elemento WSDL oferece uma abstração das operações suportadas pelos
Endpoints definidos pelo serviço Web. O elemento portType combina múltiplos
elementos message para formar todas as mensagens possíveis envolvidas em uma
operação do serviço Web. Por exemplo, em uma operação do tipo request-response
o elemento portType combina um elemento message para a requisição e outro para
a resposta.
Binding Oferece o protocolo e a especificação do formato dos dados para um elemento
portType em particular. Ele determina como as mensagens podem ser transmitidas
a partir da especificação do estilo das mensagens SOAP (RPC ou Document)
e do protocolo de aplicação utilizado para o transporte da mensagem SOAP,
normalmente HTTP.
Port Este elemento define o endereço de um EndPoint do serviço Web. Normalmente
ele é representado por um URL HTTP, combinando o binding e o protocolo a ser
utilizado.
Service É uma coleção de elementos do tipo port. O elemento service expõe a localização
de todos os EndPoints do serviço Web.
Apêndice B
130
Um documento WSDL pode conter outros elementos além desses especificados.
Por exemplo, no caso de operações do tipo solicit-response ou notification é necessário
especificar extensões do elemento binding para permitir sua utilização. O propósito
desse documento não é apresentar toda especificação WSDL, somente os conceitos mais
importantes e relevantes para condução do trabalho. A especificação completa do WSDL
pode ser obtida em [Christensen et al., 2001].
O trecho de Código B.4 apresenta a definição dos elementos message do documento WSDL para o serviço Web subscribeBurdenAssyncService. O elemento message
subscribeBurdenAssyncServiceRequest é composto por um elemento part que está definido pelo tipo complexo subscribeBurdenAssyncService, ilustrado no Código B.3.
Código B.4 Definição do elemento message
1
2
3
4
5
6
7
8
...
<wsdl:message name="subscribeBurdenAssyncServiceRequest">
<wsdl:part name="parameters" element="ns:subscribeBurdenAssyncService"/>
</wsdl:message>
<wsdl:message name="subscribeBurdenAssyncServiceResponse">
<wsdl:part name="parameters" element="ns:subscribeBurdenAssyncServiceResponse"/>
</wsdl:message>
...
9
O elemento portType do serviço Web têm o nome WellDatabasePortType e
está ilustrado no trecho de Código B.5. O elemento portType juntamente com operation
especificam a operação subscribeBurdenAssyncService utilizando os elementos message
que foram definidos anteriormente. A operação em questão é do tipo request-response.
Código B.5 Definição do elemento portType
1
2
3
4
5
6
7
8
9
10
...
<wsdl:portType name="WellDatabasePortType">
<wsdl:operation name="subscribeBurdenAssyncService">
<wsdl:input message="axis2:subscribeBurdenAssyncServiceRequest"
wsaw:Action="urn:subscribeBurdenAssyncService"/>
<wsdl:output message="axis2:subscribeBurdenAssyncServiceResponse"
wsaw:Action="urn:subscribeBurdenAssyncServiceResponse"/>
</wsdl:operation>
</wsdl:portType>
...
11
O elemento binding tem dois atributos, name e type. O atributo name define o nome do binding, neste caso WellDatabaseSoap11Binding, enquanto que o atributo type aponta para o elemento portType WellDatabasePortType. O elemento interno
Apêndice B
131
soap:binding define que o protocolo HTTP será utilizado para transportar as mensagens SOAP que estão codificadas com o estilo document, conforme o Código B.6
ilustra. É possível observar também que o elemento binding exporta qual é a operação subscribeBurdenAssyncService e define o tipo de codificação para os seus inputs e
outputs.
Código B.6 Definição do elemento binding
1
...
2
<wsdl:binding name="WellDatabaseSoap11Binding" type="axis2:WellDatabasePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
3
4
style="document"/>
<wsdl:operation name="subscribeBurdenAssyncService">
5
<soap:operation soapAction="urn:subscribeBurdenAssyncService"
6
7
style="document"/>
<wsdl:input>
8
<soap:body use="literal"/>
9
10
</wsdl:input>
11
<wsdl:output>
<soap:body use="literal"/>
12
</wsdl:output>
13
</wsdl:operation>
14
15
</wsdl:binding>
16
...
17
WSDL especifica a interface de um serviço Web, mas se não existir meios para
alcançá-lo, o serviço não será utilizado. Uma solução para o compartilhamento de serviços
Web é o UDDI, apresentado na próxima seção.
B.3
UDDI
Universal Description Discovery and Integration (UDDI) é a especificação de
um diretório de serviços onde é possível registrar e buscar serviços Web. O UDDI é
baseado em XML, utiliza o protocolo SOAP para comunicação e WSDL para descrição
dos serviços Web.
O UDDI Business Registry é uma implementação da especificação UDDI que
permite busca por dados UDDI e também o registro de organizações e seus serviços. Os
dados de registro de cada organização são divididos em três principais categorias:
Apêndice B
132
White Pages inclui informações gerais de uma organização tais como endereço, nome
da empresa, descrição do negócio da empresa, etc;
Yellow Pages inclui dados de classificação gerais, baseados em uma taxonomia padrão
para cada organização ou serviço oferecido;
Green Pages contêm informações técnicas sobre os serviços expostos pelas organizações.
O UDDI somente categoriza seus registros. Ele não estrutura os registros semanticamente a partir da atribuição de um significado a cada registro. Esta é a sua grande
desvantagem. Aplicações invocam diretamente os arquivos WSDL em detrimento à utilização das APIs (Application Programm Interface) baseadas em palavra-chave para busca
no UDDI.
B.4
Apache Axis2
Axis2 [Perera et al., 2006] é um framework Open Source desenvolvimento pela
Apache para criação de serviços Web. O framework contém várias APIs e utilitários que
ajudam o desenvolvimento de serviços Web. Dentre as funcionalidades providas pelo
Axis2 duas delas são usadas diretamente neste trabalho:
java2wsdl - um mecanismo para transformar os métodos públicos de uma classe Java
em operações de um serviço Web. Este mecanismo automaticamente deriva os tipos
complexos do arquivo WSDL a partir da assinatura dos métodos.
wsdl2java - um mecanismo para criar implementação de classes para comunicação com
o serviço descrito em um documento WSDL.
Axis2 implementa a especificação SOAP e cria stubs e skeletons para o serviço
Web automaticamente. No contexto deste trabalho Axis2 é utilizado para criar serviços
Web. Desta forma, a especificação da interface do serviço Web modelada a partir do profile
UML deve ser transformada para uma classe Java e enviada para o framework Axis2 para
que ele gere o serviço Web correspondente.
APÊNDICE C
Tranformação XSLT
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
5
xmlns:owl="http://www.w3.org/2002/07/owl#"
6
xmlns:dc="http://purl.org/dc/elements/1.1/"
7
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
8
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
9
xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
10
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
12
xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML"
13
exclude-result-prefixes="owl dc rdf rdfs"
14
xmlns="http://schema.omg.org/spec/XMI/2.1">
15
<xsl:output method="xml" version="1.0" encoding="UTF-8"
16
17
18
indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="rdf:RDF" />
19
</xsl:template>
20
<xsl:template match="rdf:RDF">
21
<xmi:XMI>
22
<xsl:attribute name="xmi:version">2.1</xsl:attribute>
23
<xsl:attribute name="xsi:schemaLocation">http:///schemas/Profile/
_AUjdELDkEeGj6oQuqPBRyw/30 ../br.ufrn.consiste.owls.uml.profile/
AutoWebS_UMLProfile.profile.uml#_AUkrMLDkEeGj6oQuqPBRyw</xsl:attribute>
24
25
<uml:Model xmi.id="{generate-id()}" name="Model">
<!-- <xsl:attribute name="xmi:id"><xsl:value-of select="generate-id()"></xsl
:value-of></xsl:attribute>
26
<xsl:attribute name="name">Model</xsl:attribute> -->
27
<packageImport xmi:id="_WRKiwcPGEeGmicizUa5VyA">
Apêndice C
28
134
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/
UMLPrimitiveTypes.library.uml#_0"/>
29
</packageImport>
30
<xsl:apply-templates select="owl:Ontology">
31
</xsl:apply-templates>
32
<profileApplication xmi:id="_aS-yYMPGEeGmicizUa5VyA">
33
<eAnnotations xmi:id="_aTiMAMPGEeGmicizUa5VyA" source="http://www.eclipse
.org/uml2/2.0.0/UML">
34
<references xmi:type="ecore:EPackage" href="../br.ufrn.consiste.owls.
uml.profile/AutoWebS_UMLProfile.profile.uml#_AUkrMLDkEeGj6oQuqPBRyw
"/>
35
</eAnnotations>
36
<appliedProfile href="../br.ufrn.consiste.owls.uml.profile/
AutoWebS_UMLProfile.profile.uml#_6gpcgGicEeGHr6qx6gTkYg"/>
37
</profileApplication>
38
</uml:Model>
39
</xmi:XMI>
40
</xsl:template>
41
<xsl:template match="owl:Ontology">
42
<packagedElement>
43
<xsl:attribute name="xmi:type">Package</xsl:attribute>
44
<xsl:attribute name="xmi:id"><xsl:value-of select="generate-id()"/></xsl:
attribute>
45
<xsl:attribute name="name"><xsl:value-of select="@rdf:ID | @rdf:about"></xsl:
value-of></xsl:attribute>
46
<xsl:apply-templates select="../owl:Class"/>
47
</packagedElement>
48
</xsl:template>
49
<xsl:template match="owl:Class">
50
<packagedElement>
51
<xsl:attribute name="xmi:type">uml:Class</xsl:attribute>
52
<xsl:attribute name="xmi:id"><xsl:value-of select="generate-id()"/></xsl:
attribute>
53
<xsl:attribute name="name"><xsl:value-of select="@rdf:ID | @rdf:about"></xsl:
value-of></xsl:attribute>
54
</packagedElement>
55 <!--
c subclasse de <xsl:apply-templates
<xsl:if test="child::rdfs:subClassOf"> Ã
select="rdfs:subClassOf"/> -->
56 <!--
</xsl:if> -->
57
</xsl:template>
58
<xsl:template match="rdfs:subClassOf">
Apêndice C
59
<xsl:value-of select="owl:Class/@rdf:ID | owl:Class/@rdf:about"></xsl:value-of>
60
</xsl:template>
61
<xsl:template match="UML:Class">
62
63
64
<xsl:variable name="stereotype">
<xsl:value-of
select="./UML:ModelElement.stereotype/UML:Stereotype/@xmi.idref" />
65
</xsl:variable>
66
<xsl:variable name="id">
67
<xsl:value-of select="./@xmi.id" />
68
</xsl:variable>
69
<xsl:variable name="classSterotype">
70
71
135
<xsl:value-of select="key(’stereotypeID’, $stereotype)/@name" />
</xsl:variable>
72
73
<!--Cases when we should convert an OWL Class or some OWL class constraint -->
74
<xsl:if test="$classSterotype = ’ObjectProperty’">
75
<xsl:call-template name="ObjectProperty" />
76
</xsl:if>
77
<xsl:if test="$classSterotype = ’DatatypeProperty’">
78
79
<xsl:call-template name="DatatypeProperty" />
</xsl:if>
80
81
82
<xsl:if
test="($classSterotype = ’OntClass’) or ($classSterotype = ’Union’) or (
$classSterotype = ’Intersection’) or ($classSterotype = ’Enumeration’ or (
$classSterotype = ’allDifferent’))">
83
<xsl:call-template name="Class" />
84
</xsl:if>
85
</xsl:template>
86
87
88
89
<xsl:template name="ObjectProperty">
<xsl:variable name="range">
<xsl:text>Class</xsl:text>
90
</xsl:variable>
91
<xsl:variable name="classID" select="./@xmi.id" />
92
<xsl:element name="owl:ObjectProperty">
93
<xsl:attribute name="rdf:ID"><xsl:value-of select="./@name" /></xsl:attribute>
94
<xsl:call-template name="classDepedencyStereotype">
95
96
97
<xsl:with-param name="stereotype">
<xsl:text>equivalentProperty</xsl:text>
</xsl:with-param>
Apêndice C
98
</xsl:call-template>
99
<xsl:call-template name="taggedValues" />
100
<xsl:call-template name="generalization">
101
<xsl:with-param name="generalizationKind">
102
<xsl:text>rdfs:subPropertyOf</xsl:text>
103
</xsl:with-param>
104
</xsl:call-template>
105
<!--Poziv template-a za complementOf stereotip -->
106
<xsl:call-template name="classDepedencyStereotype">
107
108
<xsl:with-param name="stereotype">
<xsl:text>inverseOf</xsl:text>
109
</xsl:with-param>
110
</xsl:call-template>
111
<xsl:call-template name="attributeDomainRange" />
112
<xsl:call-template name="associationDomainRange">
113
114
115
116
136
<xsl:with-param name="range" select="$range" />
</xsl:call-template>
</xsl:element>
</xsl:template>
117
118
119
120
<xsl:template name="DatatypeProperty">
<xsl:variable name="range">
<xsl:text>DataType</xsl:text>
121
</xsl:variable>
122
<xsl:element name="owl:DatatypeProperty">
123
<xsl:attribute name="rdf:ID"><xsl:value-of select="./@name" /></xsl:attribute>
124
<xsl:call-template name="classDepedencyStereotype">
125
126
<xsl:with-param name="stereotype">
<xsl:text>equivalentProperty</xsl:text>
127
</xsl:with-param>
128
</xsl:call-template>
129
<xsl:call-template name="taggedValues" />
130
<xsl:call-template name="generalization">
131
<xsl:with-param name="generalizationKind">
132
<xsl:text>rdfs:subPropertyOf</xsl:text>
133
</xsl:with-param>
134
</xsl:call-template>
135
<xsl:call-template name="attributeDomainRange" />
136
<xsl:call-template name="associationDomainRange">
137
138
<xsl:with-param name="range" select="$range" />
</xsl:call-template>
Apêndice C
139
140
</xsl:element>
</xsl:template>
141
142
<xsl:template name="xsdType">
143
<xsl:param name="type" />
144
<xsl:variable name="return">
145
146
147
<xsl:choose>
<xsl:when test="$type = ’String’ ">
<xsl:text>http://www.w3.org/2001/XMLSchema#string</xsl:text>
148
</xsl:when>
149
<xsl:when test="$type = ’Integer’ ">
150
<xsl:text>http://www.w3.org/2001/XMLSchema#int</xsl:text>
151
</xsl:when>
152
<xsl:when test="$type = ’Double’">
153
<xsl:text>http://www.w3.org/2001/XMLSchema#double</xsl:text>
154
</xsl:when>
155
<xsl:when test="$type = ’Long’">
156
<xsl:text>http://www.w3.org/2001/XMLSchema#long</xsl:text>
157
</xsl:when>
158
<xsl:when test="$type = ’anyURI’">
159
<xsl:text>http://www.w3.org/2001/XMLSchema#anyURI</xsl:text>
160
</xsl:when>
161
<xsl:when test="$type = ’duration’">
162
<xsl:text>http://www.w3.org/2001/XMLSchema#duration</xsl:text>
163
</xsl:when>
164
<xsl:when test="$type = ’decimal’">
165
<xsl:text>http://www.w3.org/2001/XMLSchema#decimal</xsl:text>
166
</xsl:when>
167
<!--extend here for other datatypes -->
168
<xsl:otherwise>
169
<xsl:text>#</xsl:text>
170
<xsl:value-of select="$type" />
171
172
</xsl:otherwise>
</xsl:choose>
173
</xsl:variable>
174
<xsl:value-of select="$return" />
175
</xsl:template>
176
177
178
179
<xsl:template name="unionOf">
<xsl:element name="owl:unionOf">
137
Apêndice C
180
<xsl:attribute name="rdf:parseType">Collection</xsl:attribute>
181
<xsl:call-template name="collection">
182
<xsl:with-param name="stereotype">
183
<xsl:text>unionOf</xsl:text>
184
</xsl:with-param>
185
</xsl:call-template>
186
187
</xsl:element>
</xsl:template>
188
189
190
191
<xsl:template name="allDifferent">
<xsl:element name="owl:distinctMembers">
192
<xsl:attribute name="rdf:parseType">Collection</xsl:attribute>
193
<xsl:call-template name="distinctMembers">
194
195
<xsl:with-param name="stereotype">
<xsl:text>distinctMembers</xsl:text>
196
</xsl:with-param>
197
</xsl:call-template>
198
199
</xsl:element>
</xsl:template>
200
201
202
<xsl:template name="intersectionOf">
<xsl:element name="owl:intersectionOf">
203
<xsl:attribute name="rdf:parseType">Collection</xsl:attribute>
204
<xsl:call-template name="collection">
205
<xsl:with-param name="stereotype">
206
<xsl:text>intersectionOf</xsl:text>
207
</xsl:with-param>
208
</xsl:call-template>
209
210
</xsl:element>
</xsl:template>
211
212
<xsl:template name="associationDomainRange">
213
<xsl:param name="range" />
214
<xsl:variable name="DomainStereotype"
215
select="key( ’stereotypeName’, ’domain’)[UML:Stereotype.baseClass = ’
Association’]/@xmi.id" />
216
217
<xsl:variable name="RangeStereotype"
select="key( ’stereotypeName’, ’range’)[UML:Stereotype.baseClass = ’
Association’]/@xmi.id" />
218
<xsl:variable name="id" select="./@xmi.id" />
138
Apêndice C
139
219
220
221
222
<xsl:if
test="key( ’associationStereotypeID’, $RangeStereotype) and $range = ’Class’
and (key( ’associationEnd1’, $id) or key( ’associationEnd2’, $id))">
223
224
225
226
227
228
229
<xsl:element name="rdfs:range">
<xsl:element name="owl:Class">
<xsl:element name="owl:unionOf">
<xsl:attribute name="rdf:parseType">
<xsl:text>Collection</xsl:text>
</xsl:attribute>
<xsl:for-each select="key( ’associationStereotypeID’, $RangeStereotype
)">
230
231
<xsl:variable name="type1"
select="./UML:Association.connection/UML:AssociationEnd[1]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
232
233
<xsl:variable name="type2"
select="./UML:Association.connection/UML:AssociationEnd[2]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
234
235
<xsl:variable name="stereotype1"
select="key(’stereotypeID’, key(’classID’, $type1)/UML:
ModelElement.stereotype/UML:Stereotype/@xmi.idref)/@name" />
236
237
<xsl:variable name="stereotype2"
select="key(’stereotypeID’, key(’classID’, $type2)/UML:
ModelElement.stereotype/UML:Stereotype/@xmi.idref)/@name" />
238
239
<xsl:if
test="not(($stereotype1 = ’DataRange’) or ($stereotype2 = ’
DataRange’))">
240
241
242
<xsl:variable name="associationStereotype">
<xsl:value-of
select="./UML:ModelElement.stereotype/UML:Stereotype/@xmi.
idref" />
243
</xsl:variable>
244
<xsl:variable name="associationType">
245
246
247
<xsl:choose>
<xsl:when test="$type1 = $id">
<xsl:value-of select="key( ’dataTypeID’, $type2)/@name" /
>
248
<xsl:value-of select="key( ’classID’, $type2)/@name" />
249
</xsl:when>
250
<xsl:when test="$type2 = $id">
Apêndice C
140
251
<xsl:value-of select="key( ’dataTypeID’, $type1)/@name" /
>
252
<xsl:value-of select="key( ’classID’, $type1)/@name" />
253
</xsl:when>
254
</xsl:choose>
255
</xsl:variable>
256
<xsl:if
257
test="key( ’stereotypeID’, $associationStereotype)/@name = ’
range’ ">
258
<xsl:if test="($type1 = $id) or ($type2 = $id)">
259
<xsl:element name="owl:Class">
260
<xsl:attribute name="rdf:about">
261
<xsl:text>#</xsl:text>
262
<xsl:value-of select="$associationType" />
263
</xsl:attribute>
264
</xsl:element>
265
</xsl:if>
266
</xsl:if>
267
</xsl:if>
268
</xsl:for-each>
269
270
271
272
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:if>
273
274
275
<xsl:if
test="key( ’associationStereotypeID’, $RangeStereotype) and $range = ’DataType
’ and (key( ’associationEnd1’, $id) or key( ’associationEnd2’, $id))">
276
277
278
279
<xsl:element name="rdfs:range">
<xsl:for-each select="key( ’associationStereotypeID’, $RangeStereotype)">
<xsl:variable name="type1"
select="./UML:Association.connection/UML:AssociationEnd[1]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
280
281
<xsl:variable name="type2"
select="./UML:Association.connection/UML:AssociationEnd[2]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
282
283
284
285
286
<xsl:variable name="associationStereotype">
<xsl:value-of
select="./UML:ModelElement.stereotype/UML:Stereotype/@xmi.idref" />
</xsl:variable>
Apêndice C
287
288
141
<xsl:variable name="stereotype1"
select="key(’stereotypeID’, key(’classID’, $type1)/UML:ModelElement.
stereotype/UML:Stereotype/@xmi.idref)/@name" />
289
290
<xsl:variable name="stereotype2"
select="key(’stereotypeID’, key(’classID’, $type2)/UML:ModelElement.
stereotype/UML:Stereotype/@xmi.idref)/@name" />
291
292
293
294
<xsl:variable name="associationType">
<xsl:choose>
<xsl:when test="$type1 = $id">
295
<xsl:value-of select="key( ’dataTypeID’, $type2)/@name" />
296
<xsl:value-of select="key( ’classID’, $type2)/@name" />
297
</xsl:when>
298
<xsl:when test="$type2 = $id">
299
<xsl:value-of select="key( ’dataTypeID’, $type1)/@name" />
300
<xsl:value-of select="key( ’classID’, $type1)/@name" />
301
302
</xsl:when>
</xsl:choose>
303
</xsl:variable>
304
<xsl:if
305
test="key( ’stereotypeID’, $associationStereotype)/@name = ’range’ ">
306
<xsl:if test="($type1 = $id) or ($type2 = $id)">
307
<xsl:choose>
308
<xsl:when
309
test="not(($stereotype1 = ’DataRange’) or ($stereotype2 = ’
DataRange’))">
310
<xsl:attribute name="rdf:resource">
311
<xsl:variable name="xsdType">
312
313
314
<xsl:call-template name="xsdType">
<xsl:with-param name="type" select="$associationType" />
</xsl:call-template>
315
</xsl:variable>
316
<xsl:value-of select="$xsdType" />
317
</xsl:attribute>
318
</xsl:when>
319
<xsl:otherwise>
320
<xsl:call-template name="dataRange">
321
<xsl:with-param name="classID">
322
323
324
<xsl:if test="$stereotype1 = ’DataRange’">
<xsl:value-of select="$type1" />
</xsl:if>
Apêndice C
142
325
<xsl:if test="$stereotype2 = ’DataRange’">
326
<xsl:value-of select="$type2" />
327
</xsl:if>
328
</xsl:with-param>
329
</xsl:call-template>
330
</xsl:otherwise>
331
</xsl:choose>
332
333
</xsl:if>
334
</xsl:if>
335
</xsl:for-each>
336
337
338
</xsl:element>
</xsl:if>
339
340
341
342
343
<xsl:if
test="key( ’associationStereotypeID’, $DomainStereotype) and (key( ’
associationEnd1’, $id) or key( ’associationEnd2’, $id))">
344
345
346
347
348
349
350
<xsl:element name="rdfs:domain">
<xsl:element name="owl:Class">
<xsl:element name="owl:unionOf">
<xsl:attribute name="rdf:parseType">
<xsl:text>Collection</xsl:text>
</xsl:attribute>
<xsl:for-each
351
select="key( ’associationStereotypeID’, $DomainStereotype)">
352
<xsl:variable name="type1"
353
select="./UML:Association.connection/UML:AssociationEnd[1]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
354
355
<xsl:variable name="type2"
select="./UML:Association.connection/UML:AssociationEnd[2]/UML:
AssociationEnd.participant/UML:Class/@xmi.idref" />
356
357
358
<xsl:variable name="associationStereotype">
<xsl:value-of
select="./UML:ModelElement.stereotype/UML:Stereotype/@xmi.
idref" />
359
</xsl:variable>
360
<xsl:if
Apêndice C
143
361
test="key( ’stereotypeID’, $associationStereotype)/@name = ’
domain’ ">
362
<xsl:if test="($type1 = $id)">
363
<xsl:element name="owl:Class">
364
<xsl:attribute name="rdf:about">
365
<xsl:text>#</xsl:text>
366
<xsl:value-of select="key( ’classID’, $type2)/@name" />
367
</xsl:attribute>
368
</xsl:element>
369
</xsl:if>
370
<xsl:if test="($type2 = $id)">
371
<xsl:element name="owl:Class">
372
<xsl:attribute name="rdf:about">
373
<xsl:text>#</xsl:text>
374
<xsl:value-of select="key( ’classID’, $type1)/@name" />
375
</xsl:attribute>
376
</xsl:element>
377
</xsl:if>
378
</xsl:if>
379
</xsl:for-each>
380
381
382
</xsl:element>
</xsl:element>
</xsl:element>
383
</xsl:if>
384
</xsl:template>
385
386
<xsl:template name="enumeration">
387
<xsl:element name="owl:oneOf">
388
<xsl:attribute name="rdf:parseType">Collection</xsl:attribute>
389
<xsl:call-template name="collectionInverse">
390
<xsl:with-param name="stereotype">
391
<xsl:text>instanceOf</xsl:text>
392
</xsl:with-param>
393
</xsl:call-template>
394
395
</xsl:element>
</xsl:template>
396
397
398
399
400
<xsl:template name="generalization">
<xsl:param name="generalizationKind" />
Apêndice C
144
401
<xsl:param name="classOrProperty">
402
<xsl:text>property</xsl:text>
403
</xsl:param>
404
<xsl:if test="./UML:GeneralizableElement.generalization/UML:Generalization">
405
<xsl:for-each
406
select="./UML:GeneralizableElement.generalization/UML:Generalization">
407
<xsl:element name="{$generalizationKind}">
408
<xsl:variable name="generalization">
409
<xsl:value-of select="./@xmi.idref" />
410
</xsl:variable>
411
<xsl:variable name="parent">
412
413
<xsl:value-of
select="key( ’generalizationID’, $generalization)/UML:Generalization
.parent/UML:Class/@xmi.idref" />
414
</xsl:variable>
415
<xsl:variable name="taggedValueAnonymousID">
416
417
<xsl:choose>
<xsl:when test="key( ’classID’, $parent)/UML:ModelElement.
taggedValue">
418
419
<xsl:value-of
select="key( ’classID’,$parent)/UML:ModelElement.taggedValue/
UML:TaggedValue/UML:TaggedValue.type/UML:TagDefinition/@xmi
.idref" />
420
</xsl:when>
421
<xsl:otherwise>
422
423
424
<xsl:text>no</xsl:text>
</xsl:otherwise>
</xsl:choose>
425
</xsl:variable>
426
<xsl:choose>
427
<xsl:when
428
test="$taggedValueAnonymousID != ’no’ and key( ’tagDefinitionID’,
$taggedValueAnonymousID)/@name = ’odm.anonymous’">
429
430
431
432
<xsl:for-each select="key( ’classID’, $parent)">
<xsl:call-template name="Class">
<xsl:with-param name="anon">
<xsl:text>yes</xsl:text>
433
</xsl:with-param>
434
</xsl:call-template>
435
436
</xsl:for-each>
</xsl:when>
Apêndice C
437
145
<xsl:when test="$classOrProperty = ’class’">
438
<xsl:element name="owl:Class">
439
<xsl:attribute name="rdf:about"><xsl:text>#</xsl:text><xsl:valueof
440
select="key( ’classID’, $parent)/@name" /></xsl:attribute>
441
</xsl:element>
442
</xsl:when>
443
<xsl:otherwise>
444
<xsl:attribute name="rdf:resource"><xsl:text>#</xsl:text><xsl:valueof
445
select="key( ’classID’, $parent)/@name" /></xsl:attribute>
446
447
448
449
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:for-each>
450
</xsl:if>
451
</xsl:template>
452
453
454
455
456
457
<xsl:template name="taggedValues">
<xsl:if test="./UML:ModelElement.taggedValue">
<xsl:for-each select="./UML:ModelElement.taggedValue/UML:TaggedValue">
<xsl:variable name="taggedValueDefinitionID">
<xsl:value-of select="./UML:TaggedValue.type/UML:TagDefinition/@xmi.idref
" />
458
</xsl:variable>
459
<xsl:variable name="taggedValueName"
460
461
462
463
select="key( ’tagDefinitionID’, $taggedValueDefinitionID)/@name" />
<xsl:if test="./UML:TaggedValue.dataValue = ’true’">
<xsl:if
test="$taggedValueName = ’symmetric’ or $taggedValueName = ’functional
’ or $taggedValueName = ’transitive’ or $taggedValueName = ’
inverseFunctional’">
464
<xsl:variable name="propertyType">
465
<xsl:value-of select="$owlPrefix" />
466
<xsl:choose>
467
468
<xsl:when test="$taggedValueName = ’symmetric’">
<xsl:text>SymmetricProperty</xsl:text>
469
</xsl:when>
470
<xsl:when test="$taggedValueName = ’transitive’">
471
472
<xsl:text>TransitiveProperty</xsl:text>
</xsl:when>
Apêndice C
146
473
<xsl:when test="$taggedValueName = ’functional’">
474
<xsl:text>FunctionalProperty</xsl:text>
475
</xsl:when>
476
<xsl:when test="$taggedValueName = ’inverseFunctional’">
477
<xsl:text>InverseFunctionalProperty</xsl:text>
478
</xsl:when>
479
</xsl:choose>
480
</xsl:variable>
481
<xsl:element name="rdf:type">
482
<xsl:attribute name="rdf:resource"><xsl:value-of
483
select="$propertyType" /></xsl:attribute>
484
485
</xsl:element>
</xsl:if>
486
</xsl:if>
487
</xsl:for-each>
488
</xsl:if>
489
</xsl:template>
490
491
492 </xsl:stylesheet>
APÊNDICE D
Tranformação QVT
1 modeltype OWLS "strict" uses OWLS(’br.ufrn.consiste.owls’);
2 modeltype UML "strict" uses uml(’http://www.eclipse.org/uml2/3.0.0/UML’);
3
4 transformation UMLProfile2OWLS(in inUML:UML, out outOWLS:OWLS);
5
6 property namespaceId : String = "namespace";
7 property serviceName : String = "name";
8
9 main() {
10
//Procura todas as interfaces com o estereotipo SemanticWebService
11
inUML.objectsOfType(UML::Interface)->forEach(swsInterface) {
12
if(swsInterface.getAppliedStereotypes()->any(name=’SemanticWebService’)<>null)
then {
13
swsInterface.getOperations()->forEach(operation) {
14
//Para cada Operation cria-se uma modelo OWL-S
15
if(operation.getAppliedStereotypes()->any(name=’SWSOperation’)<>null)
then {
16
operation.map createOWLS();
17
}endif;
18
};
19
}endif;
20
};
21 }
22
23 mapping UML::Operation::createOWLS() : OWLS::OwlsOntology
24
25
26
27
when {self.interface.getAppliedStereotypes()->any(name=’SemanticWebService’)<>null
and self.getAppliedStereotypes()->any(name=’SWSOperation’)<>null} {
init {
log(’Building the OWL-S ’ + self.name + ’ Ontology’);
Apêndice D
28
148
this.namespaceId := getTaggedValue(self.interface, ’SemanticWebService’, ’
targetNamespace’);
29
30
this.serviceName := self.name;
}
31
32
has_namespaceDeclaration := createNamespaceDeclarations();// OK
33
has_ontologyImports := createOntologyImports(getDomainOntologies(self.interface))
;//FIXME: verificar pq não consegue pegar uma lista de String
34
35
var serviceProfile := object OWLS::Profile {
36
id := this.serviceName + ’Profile’;
37
textDescription := getTaggedValue(self.interface, ’SemanticWebService’, ’WSDL
Documentation’);
38
serviceName := this.serviceName;
39
serviceClassification := ’’;
40
serviceProduct := ’’;
41
};
42
var serviceGrounding := object OWLS::WsdlGrounding {
43
id := this.serviceName + ’Grounding’;
44
};
45
var serviceModel := object OWLS::AtomicProcess {
46
47
id := this.serviceName + ’Process’;
};
48
49
var service := object OWLS::Service {
50
id := this.serviceName;
51
presents := serviceProfile;
52
describes := serviceModel;
53
supports := serviceGrounding;
54
};
55
56
var wsdlAtomicGrounding:= object WsdlAtomicProcessGrounding {
57
id := this.serviceName + ’AtomicProcessGrounding’;
58
owlProcess := serviceModel;
59
wsdlDocument := getTaggedValue(self.interface, ’SemanticWebService’, ’URI WSDL
Document’);
60
//wsdlDocument=http://localhost:8080/axis2/services/WellDatabase?wsdl
61
wsdlInputMessage := getTaggedValue(self.interface, ’SemanticWebService’, ’
targetNamespace’) + ’#’ + serviceName + ’Request’;
62
// wsdlInputMessage="http://service/#subscribeBurdenAssyncServiceRequest"
Apêndice D
63
149
wsdlOutputMessage := getTaggedValue(self.interface, ’SemanticWebService’, ’
targetNamespace’) + ’#’ + serviceName + ’Response’;
64
// wsdlOutputMessage="http://service/#subscribeBurdenAssyncServiceResponse"
65
wsdlOperation := object WsdlOperationRef {
66
portType := getTaggedValue(self.interface, ’SemanticWebService’, ’URI WSDL
Document’) + ’#’+ self.interface.getValue(self.interface.
getAppliedStereotypes()->any(name = ’SemanticWebService’), ’endPoint’).
oclAsType(EnumerationLiteral).name + ’EndPoint’;
67
//http://localhost:8080/axis2/services/WellDatabase?wsdl#
WellDatabaseHttpSoap11Endpoint
68
operation := getTaggedValue(self.interface, ’SemanticWebService’, ’URI WSDL
Document’) + ’#’ + serviceName;
69
//http://localhost:8080/axis2/services/WellDatabase?wsdl#
subscribeBurdenAssyncService
70
71
};
};
72
73
serviceProfile.presentedBy := service;
74
serviceGrounding.supportedBy := service;
75
serviceGrounding.hasAtomicProcessGrounding := wsdlAtomicGrounding;
76
serviceModel.describedBy := service;
77
78
has_serviceProfile := serviceProfile;
79
has_serviceGrounding := serviceGrounding;
80
has_serviceModel := serviceModel;
81
has_service := service;
82
has_wsdlAtomicProcessGrounding += wsdlAtomicGrounding;
83
84
//TODO: criar WsdlInputMessage e WsdlOutputMessage
85
self.ownedParameter->forEach(parameter) {
86
87
if(parameter.direction = ParameterDirectionKind::_in) then {
var input := object OWLS::Input{
88
id := this.serviceName + parameter.type.name;
89
label := parameter.name;
90
parameterType := getParameterType(parameter);
91
};
92
serviceProfile.hasInput += input;
93
serviceModel.hasInput += input;
94
95
wsdlAtomicGrounding.wsdlInput += object WsdlInputMessageMap {
Apêndice D
96
150
wsdlMessagePart := getTaggedValue(parameter.operation.interface, ’
SemanticWebService’, ’targetNamespace’) + ’#’ + parameter.name;
97
//"http://localhost:8080/axis2/services/WellDatabase?wsdl#pumpUnit"
98
owlsParameter := input;
99
xsltTransformationString := buildXsltTransformation();
100
};
101
}endif;
102
103
if(parameter.direction = ParameterDirectionKind::_return) then {
104
var output := object OWLS::Output{
105
id := this.serviceName + parameter.type.name;
106
label := ’return’;
107
parameterType := getParameterType(parameter);
108
};
109
serviceProfile.hasOutput += output;
110
serviceModel.hasOutput += output;
111
wsdlAtomicGrounding.wsdlOutput += object WsdlOutputMessageMap {
112
owlsParameter := output;
113
wsdlMessagePart := getTaggedValue(parameter.operation.interface, ’
SemanticWebService’, ’targetNamespace’) + ’#’ + parameter.name;
114
//"http://localhost:8080/axis2/services/WellDatabase?wsdl#return"
115
xsltTransformationString := buildXsltTransformation();
116
}
117
}endif;
118
119
};
}
120 query buildXsltTransformation() : String {...}
121
122 /**
123
Retorna o tipo de um parametro.
124
Um parametro pode ser um tipo primitivo UML, um tipo definido no XML Schema ou uma
classe definida em uma ontologia.
125 **/
126 query getParameterType(in parameter: UML::Parameter) : String {
127
128
if(parameter.type.getAppliedStereotypes()->any(name=’owl:Class’)<>null) then {
return getTaggedValue(parameter.type.package,’owl:Ontology’,’xmlns’) + ’/’ +
parameter.type.package.name + ’.owl#’ + parameter.type.name;
129
130
131
132
//http://www.example.org/owls/OilMonitor.owl#OilWell
} else {
if (parameter.type.oclIsKindOf(UML::PrimitiveType)) then {
//TODO: Refatorar este trecho
Apêndice D
151
133
return ’http://www.w3.org/2001/XMLSchema#’ + parameter.type.name.toLower();
134
//http://www.w3.org/2001/XMLSchema#string
135
} else {
136
}endif;
137
}endif;
138 }
139
140 /**
141
Recupera o valor do tagged-value ontologies. Retorna na forma de um Set do tipo
String
142
FIXME: https://bugs.eclipse.org/bugs/show_bug.cgi?format=multiple&id=298020
143 **/
144 query getDomainOntologies(in inter: UML::Interface) : Set(String) {
145
var ontologies = inter.getValue(inter.getAppliedStereotypes()->any(name=’
SemanticWebService’), ’ontologies’)->asSet();
146
var setString : Set(String) = object Set(String){};
147
ontologies->forEach(aux) {
148
setString += aux.repr();
149
};
150
return setString;
151 }
152
153 query getTaggedValue(in inter: UML::Element, stereotypeName: String, taggedValue:
String): String{
154
return inter.getValue(inter.getAppliedStereotypes()->any(name=stereotypeName),
taggedValue).repr();
155 }
156
157 query createOntologyImports(ontologies:Set(String)) : OWLS::Ontology {
158
var importsSet: OrderedSet(OWLS::Imports);
159
importsSet += object OWLS::Imports{resource := "http://www.w3.org/2003/11/swrlb"};
160
importsSet += object OWLS::Imports{resource := "http://www.w3.org/2003/11/swrl"};
161
importsSet += object OWLS::Imports{resource := "http://www.daml.org/services/owl-s
/1.1/Profile.owl"};
162
importsSet += object OWLS::Imports{resource := "http://www.daml.org/services/owl-s
/1.1/Grounding.owl"};
163
importsSet += object OWLS::Imports{resource := "http://www.daml.org/services/owl-s
/1.1/Service.owl"};
164
importsSet += object OWLS::Imports{resource := "http://www.daml.org/services/owl-s
/1.1/Process.owl"};
Apêndice D
165
importsSet += object OWLS::Imports{resource := "http://www.daml.org/services/owl-s
/1.1/generic/Expression.owl"};
166
ontologies->forEach(ontology){
167
168
152
importsSet += object OWLS::Imports{resource := ontology};
};
169
170
var ontologyImport: OWLS::Ontology;
171
ontologyImport := object OWLS::Ontology {
172
id := this.serviceName;
173
imports := importsSet;
174
};
175
return ontologyImport;
176 }
177
178 query createNamespaceDeclarations() : OrderedSet(OWLS::Namespace) {
179
var namespaceDeclaration: OrderedSet(OWLS::Namespace);
180
namespaceDeclaration += object OWLS::Namespace{
181
name :="rdf";
182
value :="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
183
};
184
namespaceDeclaration += object OWLS::Namespace{
185
name :="rdfs";
186
value :="http://www.w3.org/2000/01/rdf-schema#";
187
};
188
namespaceDeclaration += object OWLS::Namespace{
189
name :="owl";
190
value :="http://www.w3.org/2002/07/owl#";
191
};
192
namespaceDeclaration += object OWLS::Namespace{
193
name :="swrl";
194
value :="http://www.w3.org/2003/11/swrl#";
195
};
196
namespaceDeclaration += object OWLS::Namespace{
197
name :="daml";
198
value :="http://www.daml.org/2001/03/daml+oil#";
199
};
200
namespaceDeclaration += object OWLS::Namespace{
201
name :="expression";
202
value :="http://www.daml.org/services/owl-s/1.1/generic/Expression.owl#";
203
};
204
namespaceDeclaration += object OWLS::Namespace{
Apêndice D
205
name :="service";
206
value :="http://www.daml.org/services/owl-s/1.1/Service.owl#";
207
};
208
namespaceDeclaration += object OWLS::Namespace{
209
name :="profile";
210
value :="http://www.daml.org/services/owl-s/1.1/Profile.owl#";
211
};
212
namespaceDeclaration += object OWLS::Namespace{
213
name :="grounding";
214
value :="http://www.daml.org/services/owl-s/1.1/Grounding.owl#";
215
};
216
namespaceDeclaration += object OWLS::Namespace{
217
name :="process";
218
value :="http://www.daml.org/services/owl-s/1.1/Process.owl#";
219
};
220
return namespaceDeclaration;
221 }
153
APÊNDICE E
Questionários do Experimento Controlado
E.1
Questionário do Perfil do Participante
Identificação
Nome:
E-mail:
Formação
Graduação ( ) Especialização ( ) Mestrado ( ) Doutorado ( )
Área de atuação da última formação:
Conhecimento a respeito das tecnologias
Assinale a opção que melhor representa o grau de conhecimento com as tecnologias listadas a
seguir:
1-nenhum; 2-básico; 3-intermediário; 4-avançado.
No
Tecnologia
1
serviços Web
2
Axis2
3
Web semântica
4
serviços Web semânticos
5
Ontologia
6
linguagem OWL
7
linguagem OWL-S
8
Protege
9
plugin OWL-S Editor do Protege
10
linguagem XSLT
11
UML
12
perfil UML
13
linguagem Java
14
IDE Eclipse
1
2
3
4
Apêndice E
E.2
155
Questionário para Análise Subjetiva da Ferramenta
e da Atividade
Identificação
Nome do participante:
Nome da atividade:
Ferramenta usada na atividade: AutoWebS( ) Axis2 + OWL-S Editor( )
Tempo de realização da atividade:
Em uma escala de 1 a 5 respondas as seguintes perguntas:
Sobre a Atividade
1. Quão cansativa foi realizar a atividade?
1-Muito cansativo ( ) 2-Cansativo ( ) 3-Normal ( ) 4-Pouco Cansaço () 5- Sem Cansaço ( )
2. Em sua opinião, a ferramenta contribuiu positivamente para realização da atividade? 1-Não
contribuiu ( ) 2-Contribuiu Pouco ( ) 3-Normal ( ) 4-Contribuiu ( ) 5-Contribuiu muito ( )
3. Você acredita que a ferramenta contribuiu para a sua confusão?
1-Não contribuiu ( ) 2-Contribuiu Pouco ( ) 3-Normal ( ) 4-Contribuiu ( ) 5-Contribuiu
muito ( )
4. Durante o desenvolvimento da atividade, você se sentiu confuso?
1-Nunca ( ) 2-Poucas Vezes ( ) 3-Normal ( ) 4-Algumas Vezes ( ) 5-Sempre ( )
5. Quão complexo foi a atividade?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
6. Você precisou recorrer a fontes de conhecimentos (livros, artigos, sites, etc) para realização
desta atividade? Com qual frequência?
1-Nunca ( ) 2-Poucas Vezes ( ) 3-Normal ( ) 4-Algumas Vezes ( ) 5-Sempre ( )
7. O objetivo da atividade foi o que você esperava?
1-Sim ( ) 2-Não ( )
8. Quão difícil foi criar o serviço Web?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
9. Quão difícil foi criar a ontologia do serviço Web?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
10. Você tem alguma observação a fazer a respeito da atividade?
1-Sim ( ) 2-Não ( ) Quais:
Sobre a Ferramenta
11. Os recursos oferecidos pela ferramenta foram suficientes para realização desta atividade?
1-Sim ( ) 2-Não ( )
12. Os recursos oferecidos pela ferramenta que foram usados por você para a realização desta
atividade, comportaram-se como esperado?
1-Sim ( ) 2-Não ( )
Apêndice E
156
13. O quão fácil foi encontrar esses recursos na ferramenta?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
14. Você acha que a abordagem implementada pela ferramenta contribuiu para o desenvolvimento desta atividade?
1-Sim ( ) 2-Não ( )
15. Você identificou algum erro ou bug na ferramenta? Se sim, quais?
1-Sim ( ) 2-Não ( )
16. Você tem alguma observação a fazer sobre a ferramenta usada na realização desta atividade?
17. Você tem alguma observação a fazer sobre a respeito da atividade?
E.3
Questionário para o AutoWebS
Identificação
Nome do participante:
Atividade:
1. Você aprova o layout da ferramenta?
1-Sim ( ) 2-Não ( )
2. Você tem alguma sugestão para melhorar o layout da ferramenta?
3. Quão fácil foi usa a ferramenta?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
4. Existem alguma funcionalidade da ferramenta que você propõe alterações? Se a resposta
for sim, então especifique.
5. Você propõe a adição de funcionalidades na ferramenta?
6. Apos realizar esta atividade, você consegue imaginar alguma outra atividade que não possa
ser realizada a partir do recursos oferecidos pela ferramenta?
7. Na sua opinião, quão fácil é o entendimento de um modelo UML que representa uma
ontologia?
1-Muito Fácil ( ) 2-Fácil ( ) 3-Normal ( ) 4-Difícil ( ) 5-Muito Difícil ( )
8. Você acha que os elementos (Estereótipos e propriedades) definidos no perfil UML são claros do ponto de vista semântico? Se a resposta for "não"ou "Parcialmente"então justifique
sua escolha.
1-Sim ( ) 2-Parcialmente ( ) 3-Não ( )
justificativa:
9. Você consegue imaginar alguma ontologia de domínio que não pode ser representada como
um diagrama de classes UML e com o perfil UML usado pelo AutoWebS? Se a resposta for
não, então descreva a ontologia ou partes da ontologia que não podem ser representadas.
descrição:
10. Na sua opinião, quão importante é a integração das funcionalidades usadas para o desenvolvimento de serviços Web semânticos?
Apêndice E
Muito importante ( ) Nada ( )
11. Alguma observação/comentário a respeito do AutoWebS?
157
APÊNDICE F
Quadrados Latino
Segundo Montgomery [Montgomery, 2009], o modelo experimental Quadrado Latino
é um modelo que utiliza o princípio de blocagem. Quando a fonte de perturbação de variabilidade é
conhecida e controlável, o modelo é chamado blocagem, e é usada para eliminar sistematicamente
seu efeito sobre comparações estatísticas entre tratamentos.
É usado para eliminar duas fontes de perturbação de variabilidade, isto é, permite
sistematicamente fazer blocagem em duas direções. Em geral, um quadrado latino para p fatores
(também chamado de p × p), contém p linhas e p colunas. Cada célula contém uma das p letras
que correspondem aos tratamentos, e cada letra ocorre somente uma vez em cada linha e coluna. O
arranjo quadrado de tratamentos (ou formulações) foi denotado inicialmente por letras latinas, por
isto o nome Quadrado Latino. Veja a Figura ??, um exemplo de um quadrado latino de tamanho 4.
4×4
A B C
B C A
C D B
D A C
D
D
A
B
Figura F.1: Exemplo de quadrado latino de tamanho 4
O modelo estatístico para um Quadrado Latino é:


 i = 1, 2, ..., p;
yi jk = µ + αi + τ j + βk + εi jk
j = 1, 2, ..., p;


k = 1, 2, ..., p;
(F-1)
onde yi jk é a observação da i-ésima linha e da j-ésima coluna para o k-ésimo tratamento, µ é a
média total, αi é a i-ésima linha, τ j é o j-ésimo tratamento, βk a k-ésimo coluna, e εi jk é o erro
aleatório. Neste modelo, não há interação entre as colunas, linhas e tratamentos, porque só existe
uma observação única em cada célula.
A análise da variância consiste no particionamento da soma total dos quadrados de
N=
p2
observações em componentes para linhas, colunas, tratamentos e erros. Por exemplo:
SST = SSLinhas + SSColunas + SSTratamentos + SSE ,
(F-2)
Apêndice F
159
com o respectivos graus de liberdade:
p2 − 1 = p − 1 + p − 1 + p − 1 + (p − 2)(p − 1).
(F-3)
Supondo que εi jk é NID(0, s2 ), s2 é a variância. Cada soma dos quadrados do lado direito
da equação F-2, dividindo por s2 , é uma variável aleatória qui-quadrada distribuída independente.
Esta técnica pode ser útil em situações onde linhas e colunas representam fatores que
se deseja estudar e investigar onde não estão as restrições aleatórias. Desta forma, três fatores
(linhas, colunas e letras), com p níveis, podem ser investigados com somente p2 execuções. O
modelo assume que não há interação entre os fatores.
Download

AutoWebS