HyperDE
Framework e Ambiente de
Desenvolvimento dirigido por Ontologias
para Aplicações Hipermídia
Demetrius Arraes Nunes
Dissertação de Mestrado
Orientador: Daniel Schwabe
Departamento de Informática – PUC-Rio
Rio de Janeiro, 30 de março de 2005
Tópicos
Motivação
 Objetivos
 O que é o HyperDE?
 Criando uma aplicação com o HyperDE
 Trabalhos relacionados
 Trabalhos futuros
 Contribuições

A Web atual
Páginas em código HTML com objetivo de
orientar o navegador a gerar uma
apresentação das informações
 Texto, Imagens, etc, compreensível
apenas por pessoas
 Conteúdo + Apresentação misturados
 “No separation of concerns”
 Mecanismos de busca se utilizam de
algoritmos basicamente estatísticos

A Web Semântica
Extensão da Web atual
 Objetivo principal é adicionar significado
às informações disponíveis na Web de
forma a ser processável por máquinas
 Interoperabilidade: possibilitará a
integração entre aplicações
 Automação: agentes de software serão
capazes de executar muitas tarefas que
necessitam de cognição e que hoje só
podem ser executadas por pessoas

Web Semântica



HTML, CSS, XUL, XAML e outras linguagens
serão usadas para guiar diversos tipos de
navegadores a gerarem apresentações
diferenciadas
RDF/RDF(s)/OWL (todos com representação
em XML) serão usados para descrever o
conteúdo de forma semântica, i.e., com
significado para humanos E máquinas
Possibilitará mecanismos de busca semântica
com inferências e uso de inteligência artificial
A Onda da Web Semântica
(na visão de Tim Berners-Lee)
MDA – Model Driven Architecture





Produção de software através apenas de
modelagem
Toda fase de implementação é feita de forma
automatizada, processando o modelo
Por isso, os sistemas são construídos
independente de plataforma
A idéia é antiga: OOHDM (1995) é um exemplo
de MDA para aplicação hipermídia
Agora a OMG está “padronizando” e muitas
empresas (IBM, Microsoft, Sun, ...) estão
apoiando
Domain Specific Languages (DSL)


“Little languages”: linguagens de
programação criadas para utilização
dentro de um domínio de problema
específico
É, de certa forma, um conceito
antagônico a MDA, porque é “codeoriented”:
1.
2.
Cria-se uma linguagem de programação e
Implementa-se o sistema usando essa
linguagem
Ruby/DSL
Ruby: linguagem dinamicamente tipada,
interpretada, orientada a objetos
 Pouca ou nenhuma distinção entre tempo
de “compilação” e de execução
 Sintaxe tolerante e concisa
 Indicada para gerar DSLs baseadas em
modelos OO

10.times do
print “Hello HyperDE!”
end
SHDM





Versão semântica do OOHDM original
Define processo e arquitetura
Orientada a modelos:
 Conceitual
 Navegacional
 Interface Abstrata
Metamodelos e Modelos são definidos através
de ontologias
Implementação pode ser feita artesanalmente
ou automatizada por ferramentas/ambientes
HyperDE
O que é o HyperDE? (I)
Uma arquitetura de software, um ambiente
de desenvolvimento e ferramentas de
apoio
 Permite

Desenvolvimento através de uma Interface
Web
 Desenvolvimento interativo
 Prototipação rápida de uma aplicação SHDM,
sem necessidade de programação (ou quase)

O que é o HyperDE? (II)

Um framework MVC

Camada de (M)odelo fornece primitivas
baseadas no SHDM (classes navegacionais,
contextos, índices, nós, elos, ...)
 Metamodelo
e Modelo é persistido em RDF(S)
 Geração dinâmica de DSL para manipulação do
modelo e codificação de lógica de negócios
Camada de (C)ontrole implementa a lógica
definida pelo modelo navegacional
 Camada de (V)isão fornece funções de
auxílio para uma implementação “quasiabstrata”

HyperDE
Demonstração
Pessoa
Aluno
por Área
Alunos
Alunos
Alfa
Alunos por Professor
Alunos
Professores
por Professor
Professor
Professores
Alfa
por Área
por Publicação
Publicação
por Pessoa
Áreas de Pesquisa
Área de Pesquisa
Áreas de Pesquisa
Alfa
por Pessoa
HyperDE
Arquitetura de Implementação
Interface Web
Usuário /
Desenvolvedor
Visão
View Helpers &
Components
View Templates
Controle
Navigation
Controller
Interface de Console
Modelo
tool
Importação/Exportação
de Modelos
Metamodelo
SHDM
Model
Generator
Modelo
Navegacional
SemanticRecord Mapper
Database Backend
CRUD
Controllers
SeRQL
Linguagem de Consulta para RDF
Professor
E-mail
Nome
Titulação
Nome: José
E-mail: [email protected]
Titulação: Doutor
Nome: Maria
E-mail: [email protected]
Titulação: Mestre
Nome: João
E-mail: [email protected]
Titulação: Mestre
SeRQL - exemplo
1º caminho:
Nó do tipo
“Professor”
SELECT node FROM
variáveis que irão
aparecer no
resultado
2º caminho (I):
Elo com origem no nó
e do tipo “Trabalha”
{node} rdf:type {<sr:Professor>},
2º caminho (II):
{link} sr:source_node {node};
Elo com destino em um nó X cujo
rdf:type {<sr:Trabalha>};
tipo é “AreaDePesquisa”
sr:target_node {?}
rdf:type {AreaDePesquisa}
rdf:type
sr:Professor
Nó
sr:source_node
Elo
rdf:type
Sr:Trabalha
sr:target_node
Nó X
rdf:type
sr:AreaDePesquisa
SQL?
SELECT n.*
FROM nodes n, node_links l, nodes n2
WHERE n.all_types LIKE “%Professor%"
AND n.id = l.node_id
AND l.type = “Trabalha"
AND l.target_node_id = n2.id
AND n2.all_types LIKE “%AreaDePesquisa%"
AND n2.id = ?
SeRQL – exemplo 2
SELECT subclass
FROM
{subclass}
rdfs:subClassOf
{<sr:Pessoa>}
Ruby / HyperDE-DSL
schwabe = Professor.find_by_nome
“Daniel Schwabe”
hipermidia = AreaDePesquisa.find_by_nome
“Hipermidia”
schwabe.orienta.each do |aluno|
unless aluno.trabalha.include?(hipermidia)
aluno.trabalha << hipermidia
end
end
Java/Jena?
DAMLModel model = … // code that loads the VCARD ontology
// and some data based on that ontology
DAMLClass vcardClass =
(DAMLClass) model.getDAMLValue(vcardBaseURI+"#VCARD");
DAMLProperty fnProp =
(DAMLProperty) model.getDAMLValue(vcardBaseURI+"#FN");
DAMLProperty emailProp =
(DAMLProperty) model.getDAMLValue(vcardBaseURI+"#EMAIL");
Iterator i = vcardClass.getInstances();
while (i.hasNext()) {
DAMLInstance vcard = (DAMLInstance) i.next();
Iterator i2 =
vcard.accessProperty(emailProp).getAll(true);
while (i2.hasNext()) {
DAMLInstance email = (DAMLInstance) i2.next();
if (email.getProperty(RDF.value).getString().equals(
"[email protected]" ) ) {
DAMLDataInstance fullname =
(DAMLDataInstance) vcard.accessProperty(fnProp).getDAMLValue();
if ( fullname != null )
System.out.println("Name: "+ fullname.getValue().getString());
}
}
}
Ruby / HyperDE-DSL
VCard.find_all.each do |vc|
vc.emails.each do |email|
if email.value == “[email protected]”
and vc.fn? then
print vc.fn
end
end
end
Métodos de persistência:
RubyClasses
/ HyperDE-DSL
nativas
• find, find_all, find_by_*
• create, save, destroy
schwabe = Professor.find_by_nome
“Daniel Schwabe”
Métodos de
hipermidia
= elos
AreaDePesquisa.find_by_nome
acesso aos
Métodos de
“Hipermidia”
acesso aos elos
schwabe.orienta.each do |aluno|
unless aluno.trabalha.include?(hipermidia)
aluno.trabalha << hipermidia
end
Métodos de
end
atribuição de valor
de elos
Ruby / HyperDE-DSL
VCard.find_all.each do |vc|
vc.emails.each do |email|
print vc.fn if email == “[email protected]”
and vc.fn?
end
end
Métodos de acesso de
leitura e escrita para os
valores das
propriedades dos nós
Métodos de
verificação de
existência de valor em
propriedade
Exemplo: Mini-Orkut
Pessoas
Pessoa
nome: String
email: Email
foto: Image
humor: Computed
amigos: Index(Amigos(_THIS))
AmigoDe
Pessoa
Pessoas
Alfa
PorAmigo
Desenvolvendo uma aplicação
SHDM com HyperDE (I)

Definição de classes navegacionais e elos
instância
NavClass
Pessoa
instâncias
NavAttribute
Link
nome: String
homepage: Url
foto: Image
MatriculadoEm
renovar_matricula
cancelar_matricula
TemDepartamento
NavOperation
instâncias
instâncias
Desenvolvendo uma aplicação
SHDM com HyperDE (II)

Definição de contextos navegacionais
Context
ContextParameter
Parameter
NavClass
Desenvolvendo uma aplicação
SHDM com HyperDE (III)

Definição de estruturas de acesso
Index
IndexAttribute
Departamento
Engenheria
Informática
Letras
...
Ano de
Fundação
1920
1960
1945
...
Alunos
Professores
242
199
121
...
Ver
Ver
Ver
...
IndexEntryAttribute
IndexEntry
Desenvolvendo uma aplicação
SHDM com HyperDE (IV)

Definição de Landmarks
Landmark
ContextLandmark
target
Context
IndexLandmark
target
Index
Desenvolvendo uma aplicação
SHDM com HyperDE (V)

Definiçao de Nós
Metaclasses
generate
Professor
generate
generate
NavClass
Pessoa
inverse
Node
Link
Aluno
target
NodeLink
Orienta
generate
inverse
OrientadoPor
generate
Desenvolvendo uma aplicação
SHDM com HyperDE (VI)

Definição de templates customizados
View
NavClass
GenericView
IndexView
ContextView
layout
Context
Index
action: show_index
action: context
layout
NavigationController
Pessoa
Aluno
por Área
Alunos
Alunos
Alfa
Alunos por Professor
Alunos
Professores
por Professor
Professor
Professores
Alfa
por Área
por Publicação
Publicação
por Pessoa
Áreas de Pesquisa
Área de Pesquisa
Áreas de Pesquisa
Alfa
por Pessoa
Template – exemplo
<B>Titulacao:</B><br>
<%= attr(“titulacao”) %><BR>
<%= attr(“ano_titulacao”) %> - <%=
attr(“origem_titulacao”) %><BR><BR>
<B>Areas de Atuacao Tecnologica:</B><BR>
<TABLE>
<% index(@node.areas) do |template| %>
<% template.entry do |entry| %>
<TR VALIGN=TOP><TD><IMG SRC='…'></TD>
<TD><%= entry.nome.ahref %></TD></TR>
<% end %>
<% end %>
</TABLE>
Desenvolvendo uma aplicação
SHDM com HyperDE (VII)

Definição e execução de Operações
<%= op "mudar_nome",
{ :label => "Alterar Nome",
:view => "attributes",
:update => "node_attributes",
:label_loading => "Aguarde..." },
[ '<input type=button value="%s"
onclick="%s">', :label, :onclick ] %>
Trabalhos Relacionados

Toda a série de linguagens, ambientes e
frameworks destinados ao suporte dos
métodos OOHDM e SHDM
OOHDM-Web (1 e 2) e OOHDM-Java (1 e 2)
 OOHDM-ML, OOHDM-Xweb
 Lima, 2003; Szundy, 2004; Moura, 2004


Outros

Hera, VisualWADE (OOH-Method), ArgoUWE
e WebML
Trabalhos Futuros

Melhorias de implementação do HyperDE




Aplicação compilada => Performance
Mecanismos de Segurança
Suporte a Regras de inferência
Extensões ao modelo do ambiente





Inclusão de facetas e outras primitivas e recursos do
método SHDM que foram deixadas de fora
Mapeamento de modelo conceitual/navegacional
como em Szundy, 2004.
Mapeamento de interfaces abstratas e interfaces
concretas como em Moura, 2004.
Capacidades de navegação adaptativa
Possibilitar o uso de ontologias pré-definidas
Contribuições





Ambiente de desenvolvimento e framework
MVC integrados (de ponta-a-ponta) para
prototipação de aplicações OOHDM e SHDM
Enriquecimento do SHDM através de modelo
para implementação e execução de operações
e atributos computados
Harmonização de MDA e DSL
Geração dinâmica de DSL para manipulação de
ontologias
Possibilita processo ágil e incremental
Download

HyperDE - TecWeb - PUC-Rio