SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
Semantic RESTful 
INterfaces 
Mestrando: 
Bruno de Azevedo Muniz 
Orientador: 
Prof. Dr. Pedro Porfírio Muniz Farias
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.
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
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.
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.
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.
Introdução 
Os serviços web tradicionais não possuem 
mecanismos para tratar desta padronização 
semântica explícita. 
Serviços Web
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.
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.
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.
! 
Anotações na Descrição 
dos Serviços
Ontologias Descrevendo 
Serviços 
!
Anotações em Ontologias 
Especificando Interfaces 
!
Semantic RESTful 
Interfaces
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.
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.
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()
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.
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.
Semantic RESTful 
Interfaces 
Interfaces Compartilhadas e 
Públicas 
Interface 1 Interface 3 Interface 2 
Host C Host B Host A
Semantic RESTful 
Interfaces 
GET 
Interface Pública 
Agente do 
paciente 
GET 
Get 
Clínica 1 
Clínica 2 
Clinic 
Clínica 3 
GET
Ontologias como 
Interfaces Semânticas
Por que utilizar Ontologias? 
Ontologias são definidas como: 
“Uma especificação explícita e formal de uma 
conceitualização compartilhada” 
(GRUBER, 1993)
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.
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.
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.
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.
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
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. 
.
Semântica das Operações
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.
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.
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
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.
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.
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
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
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.
Convenção de 
Endereçamento
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.
Convenção de 
Endereçamento 
http://example-serin.rhcloud.com/doutor 
http://www.activeontology.com.br/medico 
Agente do 
paciente 
GET 
GET
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
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.
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
Arquitetura SERIN
Tecnologias Envolvidas
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.
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
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.
Exemplo de Utilização 
CLINIC.owl 
<owl:Ontology rdf:about="http://www.unifor.br/clinic.owl"> 
<rdfs:comment>Clinic Ontology</rdfs:comment> 
<owl:imports rdf:resource="http://www.activeontology.com.br/serin.owl"/> 
</owl:Ontology> 
<owl:Class rdf:about="http://www.unifor.br/clinic.owl#Clinic"> 
<serin:get></serin:get> 
</owl:Class> 
<owl:Class rdf:about="http://www.unifor.br/clinic.owl#Doctor"> 
<serin:get></serin:get> 
<serin:post></serin:post> 
<serin:delete></serin:delete> 
<serin:put></serin:put> 
</owl:Class> 
<owl:Class rdf:about=“http://www.unifor.br/clinic.owl#Specialty"> 
</owl:Class>
Exemplo de Utilização 
SERIN.owl 
<owl:Ontology rdf:about="http://www.activeontology.com.br/serin.owl">... 
</owl:Ontology> 
<owl:AnnotationProperty rdf:about="&serin;get"> 
<rdfs:range rdf:resource="&xsd;string"/> 
</owl:AnnotationProperty> 
<owl:AnnotationProperty rdf:about="&serin;delete"> 
<rdfs:range rdf:resource="&xsd;string"/> 
</owl:AnnotationProperty> 
<owl:AnnotationProperty rdf:about="&serin;put"> 
<rdfs:range rdf:resource="&xsd;string"/> 
</owl:AnnotationProperty> 
<owl:AnnotationProperty rdf:about="&serin;post"> 
<rdfs:range rdf:resource="&xsd;string"/> 
</owl:AnnotationProperty>
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).
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns="http://www.unifor.br/clinic.owl#" 
… 
xmlns:serin="http://www.activeontology.com.br/serin.owl#"> 
<rdfs:Resource rdf:about="http://www.unifor.br/clinic.owl#"> 
<attendedBy rdf:resource= 
"www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Doctor/100"/> 
<patientScheduled rdf:resource= 
"www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Patient/112"/> 
<clinicLocation rdf:resource= 
"www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/101"/> 
<appointmentDate rdf:datatype="xsd:dateTime">12-28-2014 17:00:00 
</appointmentDate> 
<rdf:type rdf:resource="http://www.unifor.br/clinic.owl#Appointment"/> 
… 
Exemplo de Utilização 
Documento RDF enviado na requisição POST
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
… 
xmlns:j.0="http://www.unifor.br/clinic.owl#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
<Appointment rdf:about= 
"www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Appointment/113"> 
<appointmentDate rdf:datatype="xsd:dateTime">12-28-2014 17:00:00 
</appointmentDate> 
<clinicLocation rdf:resource= 
“www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/101"/> 
<patientScheduled rdf:resource= 
“www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Patient/112"/> 
<attendedBy rdf:resource= 
"www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Doctor/100"/> 
… 
Exemplo de Utilização 
Documento RDF retornado pela requisição POST
Análise Comparativa
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
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.
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;
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
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
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;
Conclusão
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.
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.
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.
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;
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.
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;
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.
Obrigado!

Mais conteúdo relacionado

Semelhante a Defesa da Dissertação de Mestrado em Informática Aplicada pela Universidade de Fortaleza

WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWSDextra
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
SOA e Web Services
SOA e Web ServicesSOA e Web Services
SOA e Web Servicessergiocrespo
 
Apresentação 9 challenge (1).pptx
Apresentação 9 challenge (1).pptxApresentação 9 challenge (1).pptx
Apresentação 9 challenge (1).pptxMariCristinaDeOlivei
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
SOA - Padrões Associados
SOA - Padrões AssociadosSOA - Padrões Associados
SOA - Padrões Associadosalinebicudo
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 

Semelhante a Defesa da Dissertação de Mestrado em Informática Aplicada pela Universidade de Fortaleza (20)

WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativos
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativos
 
Web service
Web serviceWeb service
Web service
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWS
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
SOA e Web Services
SOA e Web ServicesSOA e Web Services
SOA e Web Services
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
Apresentação 9 challenge (1).pptx
Apresentação 9 challenge (1).pptxApresentação 9 challenge (1).pptx
Apresentação 9 challenge (1).pptx
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
SOA - Padrões Associados
SOA - Padrões AssociadosSOA - Padrões Associados
SOA - Padrões Associados
 
Soa Woa Rest
Soa Woa RestSoa Woa Rest
Soa Woa Rest
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Rest
RestRest
Rest
 
Android + web service
Android + web serviceAndroid + web service
Android + web service
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
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.
  • 11. ! Anotações na Descrição dos Serviços
  • 13. Anotações em Ontologias Especificando Interfaces !
  • 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.
  • 50. Exemplo de Utilização CLINIC.owl <owl:Ontology rdf:about="http://www.unifor.br/clinic.owl"> <rdfs:comment>Clinic Ontology</rdfs:comment> <owl:imports rdf:resource="http://www.activeontology.com.br/serin.owl"/> </owl:Ontology> <owl:Class rdf:about="http://www.unifor.br/clinic.owl#Clinic"> <serin:get></serin:get> </owl:Class> <owl:Class rdf:about="http://www.unifor.br/clinic.owl#Doctor"> <serin:get></serin:get> <serin:post></serin:post> <serin:delete></serin:delete> <serin:put></serin:put> </owl:Class> <owl:Class rdf:about=“http://www.unifor.br/clinic.owl#Specialty"> </owl:Class>
  • 51. Exemplo de Utilização SERIN.owl <owl:Ontology rdf:about="http://www.activeontology.com.br/serin.owl">... </owl:Ontology> <owl:AnnotationProperty rdf:about="&serin;get"> <rdfs:range rdf:resource="&xsd;string"/> </owl:AnnotationProperty> <owl:AnnotationProperty rdf:about="&serin;delete"> <rdfs:range rdf:resource="&xsd;string"/> </owl:AnnotationProperty> <owl:AnnotationProperty rdf:about="&serin;put"> <rdfs:range rdf:resource="&xsd;string"/> </owl:AnnotationProperty> <owl:AnnotationProperty rdf:about="&serin;post"> <rdfs:range rdf:resource="&xsd;string"/> </owl:AnnotationProperty>
  • 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).
  • 53. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.unifor.br/clinic.owl#" … xmlns:serin="http://www.activeontology.com.br/serin.owl#"> <rdfs:Resource rdf:about="http://www.unifor.br/clinic.owl#"> <attendedBy rdf:resource= "www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Doctor/100"/> <patientScheduled rdf:resource= "www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Patient/112"/> <clinicLocation rdf:resource= "www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/101"/> <appointmentDate rdf:datatype="xsd:dateTime">12-28-2014 17:00:00 </appointmentDate> <rdf:type rdf:resource="http://www.unifor.br/clinic.owl#Appointment"/> … Exemplo de Utilização Documento RDF enviado na requisição POST
  • 54. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" … xmlns:j.0="http://www.unifor.br/clinic.owl#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <Appointment rdf:about= "www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Appointment/113"> <appointmentDate rdf:datatype="xsd:dateTime">12-28-2014 17:00:00 </appointmentDate> <clinicLocation rdf:resource= “www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/101"/> <patientScheduled rdf:resource= “www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Patient/112"/> <attendedBy rdf:resource= "www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Doctor/100"/> … Exemplo de Utilização Documento RDF retornado pela requisiçã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.