Os serviços web RESTful se tornaram um padrão de larga utilização que permitem manipular dados, denominados recursos, disponibilizados em servidores distribuídos na web, denominados hosts. Neste contexto, várias propostas têm sido feitas para tentar formalizar a semântica de recursos e dos serviços web que os manipulam e, desta forma, tentar integrar os serviços web RESTful ao cenário da Web Semântica. Entretanto, estas propostas se aplicam a serviços web concretos e não a uma interface abstrata que possa ser reutilizada por várias implementações concretas. Este trabalho apresenta as Semantic RESTful INterfaces - SERIN, especificação que propõe a utilização de interfaces semânticas abstratas na descrição de recursos e serviços web RESTful. Interfaces semânticas são ontologias anotadas, escritas em OWL, cujas classes descrevem, formalmente, a semântica de recursos REST, e cujas anotações indicam quais serviços web estarão disponíveis, para manipular os recursos de um host. O SERIN, analogamente as interfaces da Programação Orientada a Objetos, especifica interfaces abstratas, isto é, desconectadas de qualquer implementação concreta, logo, representam um contrato que determina recursos e serviços web que devem estar disponíveis por todo host que implementa.
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Defesa da Dissertação de Mestrado em Informática Aplicada pela Universidade de Fortaleza
1. Semantic RESTful
INterfaces
Mestrando:
Bruno de Azevedo Muniz
Orientador:
Prof. Dr. Pedro Porfírio Muniz Farias
2. Resumo
Este trabalho apresenta as Semantic RESTful
Interfaces - SERIN, especificação que propõe a
utilização de interfaces semânticas abstratas para
descrição de recursos e serviços web RESTful;
Interfaces semânticas são ontologias anotadas,
escritas em OWL, cujas classes descrevem,
formalmente, a semântica de recursos REST, e
cujas anotações indicam os serviços web RESTful
que estarão presentes para manipular os recursos.
3. Agenda
1. Introdução
2. Semantic RESTful Interfaces
3. Ontologias como Interfaces Semânticas
4. Semântica das Operações
5. Convenção de Endereçamento
6. Arquitetura SERIN
7. Análise Comparativa
8. Conclusão
4. Introdução
Para possibilitar a troca de informações na web,
são utilizados serviços web baseados em
tecnologias como SOAP e REST;
Dentre estas propostas, os serviços web RESTful
vêm ganhando notoriedade em todo o meio
computacional, visto que seus conceitos são
simples e funcionais.
5. Introdução
Novos serviços web são disponibilizados todos os
dias, porém, normalmente, o intercâmbio dos
dados, não ocorre de forma automática, isto é:
O desenvolvedor de um agente que pretende
interagir com um serviço web precisa, antes,
comunicar-se com o autor do conteúdo publicado,
para entender a semântica implícita ao serviço.
6. Introdução
Para que a troca de informações seja automática,
é essencial uma padronização semântica explícita
do conteúdo publicado;
Esta padronização deve ser construída em um
formato capaz de ser interpretado por máquinas,
sem a intervenção humana.
7. Introdução
Os serviços web tradicionais não possuem
mecanismos para tratar desta padronização
semântica explícita.
Serviços Web
8. Web Semântica
Neste contexto, a Web Semântica surge como
uma proposta que objetiva a troca de informações
entre agentes de software, de forma automática, a
partir da atribuição de uma semântica formal para
o conteúdo publicado na web.
9. Serviços Web Semânticos
Desta forma, para permitir uma interação dinâmica
e automática entre sistemas, os serviços web
semânticos surgem, dotando os serviços web de
uma descrição formal, nos moldes prescritos pela
Web Semântica.
10. Serviços Web Semânticos
Existem diversas propostas para Serviços Web
Semânticos e estas podem ser classificadas, de
acordo com a estratégia para atribuir semântica
formal aos serviços web.
15. Semantic RESTful
Interfaces
Semantic RESTful Interfaces (SERIN), de forma
geral, são interfaces semânticas abstratas que
possibilitam a construção de serviços web
semânticos, unindo os preceitos da arquitetura
REST e da Web Semântica.
16. Semantic RESTful
Interfaces
A proposta SERIN concentra-se na especificação
de conceitos compartilhados, representados por
ontologias que, posteriormente, irão guiar a
construção de recursos REST e das operações;
O conceito representado tem um papel maior do
que uma descrição semântica para serviços web.
Esta ontologia irá representar uma Interface
Semântica Abstrata.
17. Interfaces Semânticas
Abstratas
A Programação Orientada a
Objetos preconiza que interfaces
representam contratos entre um
agente e o mundo externo.
<<interface>>
A
+ GET()
+ PUT()
+ POST()
+ DELETE()
B
+ GET()
+ PUT()
+ POST()
+ DELETE()
C
+ GET()
+ PUT()
+ POST()
+ DELETE()
18. Interfaces Semânticas
Abstratas
Semântica: destaca que as interfaces definidas
estão em conformidade com a Web Semântica,
consequentemente, devem ser, explicitamente,
representadas por ontologias.
19. Interfaces Semânticas
Abstratas
Abstrata: define que a interface não possui
nenhuma indicação da implementação concreta,
muito menos está vinculada a qualquer host que
concretize a interface.
20. Semantic RESTful
Interfaces
Interfaces Compartilhadas e
Públicas
Interface 1 Interface 3 Interface 2
Host C Host B Host A
21. Semantic RESTful
Interfaces
GET
Interface Pública
Agente do
paciente
GET
Get
Clínica 1
Clínica 2
Clinic
Clínica 3
GET
23. Por que utilizar Ontologias?
Ontologias são definidas como:
“Uma especificação explícita e formal de uma
conceitualização compartilhada”
(GRUBER, 1993)
24. Por que utilizar Ontologias?
Uma ontologia é composta de um conjunto de
conceitos: indivíduos, classes, propriedades, etc,
cujo significado é, previamente, conhecido por
todos que desejam compartilhar informações.
25. Conhecimento
Compartilhado X Particular
A ontologia especifica um conhecimento
compartilhado, logo presume-se também a
e x i s t ê n c i a d e u m conhecimento não
compartilhado;
e.g.: Quando um interlocutor A pergunta a um
interlocutor B sua idade, ambos devem conhecer
o conceito de “idade”. O conceito “idade” deve
pertencer à ontologia, entretanto, o valor da idade
do interlocutor B, não pertence.
26. Conhecimento
Compartilhado X Particular
A ontologia não possui o conhecimento particular
de cada agente, contudo, é possível analisar
como este conhecimento será representado;
No contexto dos serviços web RESTful, o
conhecimento particular de cada agente servidor
é composto pelos recursos disponíveis em um
host, representados por triplas RDF.
27. Conhecimento
Compartilhado X Particular
O conhecimento compartilhado é uma ontologia
anotada, descrita em OWL, que descreve classes
e propriedades, representando recursos e seus
atributos, e anotações semânticas, indicando
serviços web RESTful disponíveis.
28. Compartilhado X Particular
GET
Specialty
Name
Conhecimento
Conhecimento compatilhado
Serviços
RESTFul
Recursos
do Host A
Doctor
Doctor: 1; Name: Pedro
Doctor: 2; Name: Laura
Serviços
RESTFul
Doctor: 100; Name: Renato
Doctor: 101; Name: Hermano
Recursos
do Host B
MedicalSpecialty
String
Conhecimento especifico
Nephroogy
Cardiology
….
Interface Clinic.owl
29. Ontologias como Interfaces
Semânticas
Uma Semantic RESTful Interface (SERIN) é uma
ontologia de domínio anotada, descrita em OWL,
que representa uma interface semântica abstrata,
pública e compartilhada com todos aqueles que
tenham interesse na sua descrição.
.
31. Semântica das Operações
A arquitetura REST, reaproveita os verbos do
HTTP e preconiza um conjunto de operações
padronizadas, para manipular os recursos
existente em um host;
Essa padronização é particularmente interessante
pois minimiza a complexidade da descrição de
uma semântica formal das operações disponíveis
nos hosts.
32. Semântica das Operações
SERIN estabelece quatro anotações semânticas
que podem ser utilizadas para anotar classes de
uma ontologia;
Cada anotação representa um serviço web
RESTful que deverá estar disponível no host para
manipular o recurso.
33. Semântica das Operações
String
Class B
Class A
RESTful Web Services
Resource
A
Semantic RESTful Interfaces - SERIN
GET
PUT
POST
DELETE
Ontology Host
34. Semântica das Operações
As anotações semânticas devem ser aplicadas,
exclusivamente, sobre as classes de uma
ontologia;
As quatro operações estão mapeadas nos quatro
métodos do HTTP para manter conformidade com
a especificação REST.
35. Operação GET
Cliente web service
GET http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic
Lista com todos os individuos "Clinic"
Parâmetro: identificador de uma instância (opcional)
Retorno: Lista de instâncias ou uma única instância,
caso o identificador seja informado como parâmetro.
36. Operação POST
RDF/XML
Cliente web service
POST http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic
HTTP 201
+
Novo Individuo
Parâmetro: RDF com as informações da nova instância
Retorno: Código 201 + Representação do Novo Recurso
37. Operação DELETE
Cliente web service
DELETE http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/100
Parâmetro: identificador da instância que será removida
Retorno: Código 200
HTTP 200
38. Operação PUT
Atualiza as informações de uma instância do
servidor;
Possui similaridade com a operação POST,
contudo, o identificador da instância deve ser
informado na requisição para atualizar as
informações.
40. Convenção de
Endereçamento
Segundo a arquitetura REST, todo recurso
disponível em um host deve ser identificados por
uma URL;
Entretanto, não existe uma padronização da URL
quando recursos possuem semântica similar.
41. Convenção de
Endereçamento
http://example-serin.rhcloud.com/doutor
http://www.activeontology.com.br/medico
Agente do
paciente
GET
GET
42. Convenção de
Endereçamento
A convenção proposta por SERIN é baseada na
decomposição da URL em duas partes:
Host Recurso
http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/{resourceID}
Ontologia Classe Identificador
43. Benefícios da Convenção
de Endereçamento
1. Um agente pode identificar quais interfaces
semânticas um determinado host implementa;
2. Um agente pode identificar hosts que se
utilizam de uma mesma interface semântica;
3. É possível a construção de um crawler para
indexar os hosts que utilizam interfaces
semânticas abstratas.
44. Convenção de
Endereçamento
Doctor
SERIN URI ::=
Get
Put
Post
Delete
www.unifor.br/clinic.owl
GET
http://semantic-interfaces.rhcloud.com
/serin/www.unifor.br/clinic.owl/doctor
http://example-serin.rhcloud.com/
serin/www.unifor.br/clinic.owl/doctor
http://www.activeontology.com.br/
serin/www.unifor.br/clinic.owl/doctor
get
get
get
Patient
Agent
GET
GET
Medical
Speciality
Clinic
Get
47. SERIN Framework
O SERIN Framework é uma biblioteca JAVA
desenvolvida para auxiliar na publicação de
serviços web semântico RESTful, empregando as
interfaces semânticas SERIN;
Não existe obrigatoriedade quanto ao seu uso. É
possível publicar aplicações que sigam os
mesmos preceitos descritos pelas interfaces
SERIN, sem a utilização do arcabouço.
48. Arquitetura SERIN
<<Imports>>
Client Side Server Side
<<JAX-RS>>
Web Service
<<Framework>>
SERIN Server
<<API>>
SerinClient
RRDDFF GGrraapphh SSttoorree
<<Agent>>
Client
<<RDF Parser>>
Jena
<<Provider>>
Graph Store
<<Provider>>
Relational
Database
RRDDBBSS
Semantic Restful
Web Service Layer
Persistence
Layer
Internet
Serin
Ontology
ClInic
Ontology
<<Knows>> <<Knows>>
RDF Messages
49. Arquitetura SERIN
<<Imports>>
Client Side Server Side
<<JAX-RS>>
Web Service
<<Framework>>
SERIN Server
<<API>>
SerinClient
RRDDFF GGrraapphh SSttoorree
<<Agent>>
Client
<<RDF Parser>>
Jena
<<Provider>>
Graph Store
<<Provider>>
Relational
Database
RRDDBBSS
Semantic Restful
Web Service Layer
Persistence
Layer
Internet
Serin
Ontology
ClInic
Ontology
<<Knows>> <<Knows>>
RDF Messages
1
3 2
1. Construção da Ontologia;
2. Construção do SWS SERIN;
3. Construção do Agente Cliente.
52. Exemplo de Utilização
Um agente paciente deseja agendar uma consulta
com um médico, disponível em uma clínica. Para
isso, os seguintes passos são realizados:
1. Agente consulta os agendamentos (Appointment)
previamente existentes em um servidor
(operação GET);
2. Agente agenda a consulta, adicionando uma
nova instância no servidor (operação POST).
56. Análise Comparativa
A Análise realizada verifica elementos comuns
entre SERIN e os trabalhos relacionados, com o
objetivo de apresentar vantagens e desvantagens
entre as propostas;
Esta Análise foi segmentada em duas etapas:
1. SERIN x Serviços Web Tradicionais
2. SERIN x Serviços Web Semânticos
57. SERIN x Serviços Web
Tradicionais
A tabela apresenta os critérios utilizados para a
comparação e a posição de cada tecnologia, de
acordo com o parâmetro apresentado.
58. SERIN x Serviços Web
Semânticos
Para comparar a especificação SERIN com as
propostas para Serviços Web Semânticos, foram
realizadas duas avaliações distintas, de acordo com a
estratégia para atribuir semântica aos serviços web:
1. SERIN x Anotações na descrição de serviços; e
2. SERIN x Ontologias descrevendo serviços;
59. SERIN x Anotações na
Descrição dos Serviços (SWS)
Especificam
Interfaces
Semânticas
Objetivo da
especificação
Representação
Semântica
Matching
Semântico
SA-REST Não
Adicionar meta-dados
semânticos para
descrição de serviços
Anotações
semântica sobre
HTML/XHTML
Aproximado,
"Humans first and
machines second"
SBWS Não
Integração de dados
entre endpoints
SPARQL
Anotações
semântica sobre
WADL
Aproximado,
baseado na definição
das entradas e saídas
SERIN Sim
Definir Interfaces
Abstradas
Ontologia de
domínio anotada
Exato, baseado nas
interfaces
60. SERIN x Ontologias
Descrevendo Serviços (SWS)
Representação
semântica
Processamento adicional
da descrição semântica
Padrão de URL
para acessar o
recurso
Micro
WSMO
HTML apontando
para Ontologias
WSMO-lite
Sim, para extrair as
ontologias
Não
EXPRESS Ontologia OWL
Sim, para gerar os serviços
web
URL gerada pelo
motor EXPRESS
SERIN Ontologia OWL Não
Convenção de
Endereçamento
61. Análise Comparativa
A diferença predominante entre SERIN e os trabalhos
relacionados a serviços web semânticos é a
importância atribuída à interface que descreve o
serviço;
Para a maioria das propostas, a descrição semântica
deriva-se de um serviço web concreto, sem a devida
preocupação com outros serviços com semântica
similar ou com os futuros serviços que poderão surgir;
63. Conclusão
Este trabalho apresenta a especificação SERIN, que
introduz as Interfaces Semânticas Abstratas,
aplicadas na descrição semântica e sintática de
recursos e serviços web RESTful.
64. Conclusão
Apesar de existirem como proposta, as descrições
de serviços web RESTful são pouco adotadas na
prática;
Os serviços web RESTful não exigem, de forma
alguma, qualquer descrição, seja sintática ou
semântica;
Este é um forte motivo adicional para se preferir
anotar as ontologias.
65. Conclusão
Entre as propostas para Serviços Web RESTful
Semânticos, SERIN é a representação mais
sucinta, visto que anota o único elemento
indispensável para representar a semântica - as
ontologias de domínio.
66. Conclusão
Algumas contribuições de SERIN no cenário da
interligação de dados e dos SWS:
1. Apresenta um modelo que separa interfaces
semânticas abstratas de implementações
concretas de serviços web RESTful;
2. Estabelece uma descrição semântica e
sintática para serviços web RESTful;
67. Conclusão
3. Especifica uma semântica precisa dos
recursos disponibilizados por cada host;
4. Especifica as operações disponíveis para
operar os recursos de um host;
5. Especifica um convenção de endereçamento
que permite identificar quais servidores atendem
a uma interface.
68. Trabalhos Futuros
1. Navegação semântica, buscando mecanismos
para orquestração e composição de serviços web
semânticos SERIN, utilizando BPMN;
2. Novas anotações semânticas, a fim de facilitar o
acesso e manipulação de dados, por agentes de
software associados a modelos relacionais;
69. Trabalhos Futuros
3. Máquina de busca que irá aproveitar a convenção
de endereçamento para identificar e indexar os hosts
seguem uma determinada interface semântica e
identificar quais interfaces estão disponíveis em um
único host.