defesa da dissertação de mestrado em informática aplicada pela universidade de fortaleza
TRANSCRIPT
Semantic RESTful INterfaces
Mestrando: Bruno de Azevedo Muniz
Orientador: Prof. Dr. Pedro Porfírio Muniz Farias
ResumoEste 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.
Agenda1. 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.
Serviço
s Web
Introdução
Os serviços web tradicionais não possuem mecanismos para tratar desta padronização semântica explícita.
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.
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.
Serviços Web Semânticos
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
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()
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.
Interfaces Semânticas Abstratas
Semantic RESTful Interfaces
Host AHost BHost C
Interface 1 Interface 2Interface 3
Interfaces Compartilhadas e Públicas
Semantic RESTful Interfaces
GET
Agente do paciente
GET
Get
Interface Pública
Clínica 1
Clínica 2
Clinic
Clínica 3GET
Por que utilizar Ontologias?
Ontologias são definidas como:
“Uma especificação explícita e formal de uma conceitualização compartilhada”
(GRUBER, 1993)
Uma ontologia é composta de um conjunto de
conceitos: indivíduos, classes, propriedades, etc,
cujo significado é, previamente, conhecido por
todos que desejam compartilhar informações.
Por que utilizar Ontologias?
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 c o n h e c i m e n t o 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.
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.
Conhecimento Compartilhado X Particular
GET
Name
Specialty
Conhecimento compatilhado
Serviços
RES
TFul
Recursos do Host A
Doctor
Doctor: 1; Name: PedroDoctor: 2; Name: Laura
Serviços
RES
TFul
Recursosdo Host B
Doctor: 100; Name: RenatoDoctor: 101; Name: Hermano
MedicalSpecialty
String
Conhecimento especifico
Cardiology
Nephroogy
….
Interface Clinic.owl
Conhecimento Compartilhado X Particular
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.
.
Ontologias como Interfaces Semânticas
Essa padronização é particularmente interessante pois minimiza a complexidade da descrição de uma semântica formal das operações disponíveis nos hosts.
A arquitetura REST, reaproveita os verbos do HTTP e preconiza um conjunto de operações padronizadas, para manipular os recursos existente em um host;
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
Class B
String
Class A
Semantic RESTful Interfaces - SERIN
RESTful Web Services
Resource A
GETPUT
POSTDELETE
HostOntology
Semântica das Operações
As anotações semânticas devem ser aplicadas, exclusivamente, sobre as classes de uma ontologia;
Semântica das Operações
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
Parâmetro: RDF com as informações da nova instância
Retorno: Código 201 + Representação do Novo Recurso
Cliente web service
POST http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic
HTTP 201 +
Novo Individuo
RDF/XML
Operação DELETE
Parâmetro: identificador da instância que será removida
Retorno: Código 200
Cliente web service
DELETE http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/100
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
Entretanto, não existe uma padronização da URL quando recursos possuem semântica similar.
Segundo a arquitetura REST, todo recurso disponível em um host deve ser identificados por uma URL;
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:
http://www.activeontology.com.br/serin/www.unifor.br/clinic.owl/Clinic/{resourceID}
Host Recurso
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 ::= www.unifor.br/clinic.owl
GetPutPostDelete
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
MedicalSpeciality
Clinic
Get
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
Client Side Server Side
<<JAX-RS>>Web Service
<<Framework>>SERIN Server
<<API>>SerinClient
RDF Graph StoreRDF Graph Store
<<Agent>>Client
<<RDF Parser>>Jena
<<Provider>>Graph Store
<<Provider>>Relational Database
RDBSRDBS
PersistenceLayer
Semantic Restful
Web Service Layer
Internet
SerinOntology
ClInic Ontology
<<Imports>>
<<Knows>><<Knows>>
RDF Messages
Arquitetura SERIN
Client Side Server Side
<<JAX-RS>>Web Service
<<Framework>>SERIN Server
<<API>>SerinClient
RDF Graph StoreRDF Graph Store
<<Agent>>Client
<<RDF Parser>>Jena
<<Provider>>Graph Store
<<Provider>>Relational Database
RDBSRDBS
PersistenceLayer
Semantic Restful
Web Service Layer
Internet
SerinOntology
ClInic Ontology
<<Imports>>
<<Knows>><<Knows>>
RDF Messages
1
23
1. Construção da Ontologia;2. Construção do SWS SERIN;3. Construção do Agente Cliente.
<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>
CLINIC.owl
Exemplo de Utilização
<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>
SERIN.owl
Exemplo de Utilização
Exemplo de UtilizaçãoUm 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çãoDocumento 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çãoDocumento RDF retornado pela requisição POST
Análise ComparativaA 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ãoAdicionar 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ãoIntegraçã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
MicroWSMO
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
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;
Análise Comparativa
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
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ãoApesar 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.