defesa da dissertação de mestrado em informática aplicada pela universidade de fortaleza

70
Semantic RESTful INterfaces Mestrando: Bruno de Azevedo Muniz Orientador: Prof. Dr. Pedro Porfírio Muniz Farias

Upload: bruno-muniz

Post on 23-Jul-2015

63 views

Category:

Technology


0 download

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

!

Anotações na Descrição dos Serviços

Ontologias Descrevendo Serviços

!

Anotações em Ontologias Especificando 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

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

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)

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

Semântica das Operações

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

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

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

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 Comparativa

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

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.

Obrigado!