410 likes | 560 Views
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
E N D
HyperDEFramework e Ambiente de Desenvolvimento dirigido por Ontologias para Aplicações Hipermídia Demetrius Arraes NunesDissertaçã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
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 é “code-oriented”: • 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 D S L S H D M MDA Web Semântica
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 “quasi-abstrata”
HyperDE Demonstração
Pessoa Alunos Alunos Alunos por Professor Aluno Alunos Professores por Área Professor Professores Alfa Alfa por Área por Professor por Publicação Publicação por Pessoa Área de Pesquisa Áreas de Pesquisa Alfa Áreas de Pesquisa por Pessoa
Professor E-mail Nome Titulação Nome: José E-mail: jose@example.edu Titulação: Doutor Nome: Maria E-mail: maria@example.edu Titulação: Mestre Nome: Maria E-mail: maria@example.edu Titulação: Mestre Nome: João E-mail: joao@example.edu Titulação: Mestre SeRQLLinguagem de Consulta para RDF
SeRQL - exemplo variáveis que irão aparecer no resultado 1º caminho: Nó do tipo “Professor” SELECT node FROM {node} rdf:type {<sr:Professor>},{link} sr:source_node {node}; rdf:type {<sr:Trabalha>}; sr:target_node {?} rdf:type {AreaDePesquisa} 2º caminho (I): Elo com origem no nó e do tipo “Trabalha” 2º caminho (II): Elo com destino em um nó X cujo tipo é “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( "amanda_cartwright@example.org" ) ) { 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 == “amanda@ex.org” and vc.fn? then print vc.fn end end end
Ruby / HyperDE-DSL • Métodos de persistência: • find, find_all, find_by_* • create, save, destroy Classes nativas 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 Métodos de acesso aos elos Métodos de acesso aos elos Métodos de 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 == “amanda@ex.org” 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
Desenvolvendo uma aplicação SHDM com HyperDE (I) • Definição de classes navegacionais e elos
Desenvolvendo uma aplicação SHDM com HyperDE (II) • Definição de contextos navegacionais
Desenvolvendo uma aplicação SHDM com HyperDE (III) • Definição de estruturas de acesso
Desenvolvendo uma aplicação SHDM com HyperDE (IV) • Definição de Landmarks
Desenvolvendo uma aplicação SHDM com HyperDE (V) • Definiçao de Nós
Desenvolvendo uma aplicação SHDM com HyperDE (VI) • Definição de templates customizados
Pessoa Alunos Alunos Alunos por Professor Aluno Alunos Professores por Área Professor Professores Alfa Alfa por Área por Professor por Publicação Publicação por Pessoa Área de Pesquisa Áreas de Pesquisa Alfa Áreas de Pesquisa 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