580 likes | 754 Views
Representação de Conhecimento Orientada a Objetos. Fabio Moura Jacques Robin CIn-UFPE. Roteiro. Linguagens orientadas a objetos Lembrete: conceitos da orientação a objetos Histórico Motivações para engenharia de software e representação do conhecimento Primeiros formalismos de RCOO
E N D
Representação de ConhecimentoOrientada a Objetos Fabio Moura Jacques Robin CIn-UFPE
Roteiro • Linguagens orientadas a objetos • Lembrete: conceitos da orientação a objetos • Histórico • Motivações para engenharia de software e representação do conhecimento • Primeiros formalismos de RCOO • Redes semânticas • Frames • Comparação com a lógica dos predicados • UML • Diagramas de classes • Diagramas de atividades • Ontologias • Definição, histórico e motivações • Elementos de uma ontologia • Tipologias das ontologias • Problemática geral e questões sobre ontologias • OCL • Motivação e histórico • Expressões OCL • Tipos básicos OCL • Enumerações e coleções • OCL para representação de conhecimento • Transformar diagramas de classes UML em ontologias • Declarar conhecimento comportamental em diagramas de atividades UML
Lembrete: conceitos de linguagens orientadas a objetos • Classes e Objetos • Classe: fábrica + depósito de objetos • Tipos • Objeto = Interface + Implementação (Dados + Procedimentos) • Interface • Especificação do conjunto de operações que o objeto pode realizar • Dados • Representação do estado do objeto • Procedimentos • Implementação de cada operação • Objetos complexos • Identidade de objetos • Um objeto possui existência independente de seus valores • Objetos idênticos X objetos iguais • Encapsulamento • A Interface é a única parte visível do objeto
Lembrete: conceitos de linguagens orientadas a objetos • Herança • Permite uma descrição concisa e precisa do mundo poderosa ferramenta de modelagem • Permite o compartilhamento de especificações e implementações em uma aplicação • Tipos de herança: substituição, inclusão, restrição e especialização • Substituição • Baseada em comportamento e não em valores • Um tipo t herda de um tipo t’ se podemos realizar mais operações em objetos do tipo t do que em objetos do tipo t’ • Qualquer objeto do tipo t’ pode ser substituído por um objeto do tipo t • Inclusão • Baseada em estrutura e não em operações • Corresponde à noção de classificação • t é subtipo de t’ se todo objeto do tipo té também um objeto do tipo t’ • Ex: square com os métodos get e set(size) e filled-square com os métodos get, set(size) e fill(color)
Lembrete: conceitos de linguagens orientadas a objetos • Herança (cont.) • Restrição • Subcaso de herança por inclusão • Um tipo t é subtipo de t’ se ele consiste de todos os objetos do tipo t’ que satisfazem uma determinada condição • Ex: teenager é uma subclasse de person – não possui nenhum atributo adicional, mas sua idade está restrita entre 13 e 18 • Especialização • Um tipo t é subtipo de t’ se objetos do tipo t são objetos do tipo t’ que contém mais informações específicas • Ex.: objetos do tipo person e employee • Polimorfismo e ligação tardia (late binding) • Herança múltipla
Histórico da orientação a objetos Engenharia de Software Programação Banco de Dados Representação do Conhecimento Sistemas Distribuídos 1965 hoje Simula Redes Semânticas Sketchpad Smalltalk Frames hoje C++ OQL eletivas de IA hoje UML1.0 Lógicas Descritivas SQL’99 Java OCL Lógicas de Frames eletivas de IA MOF última aula C# Linguagens deWeb Semântica UML2.0 hoje 2005
Lembrete: motivações da orientação a objetos para engenharia de software • Maior produtividade, qualidade, legibilidade e manutenibilidade no desenvolvimento de software • Reuso de software e não reescrita • Mais natural • Combina com a maneira como as pessoas pensam • Fácil aprendizado • Notação única • Fácil locomoção entre fases do software • Linguagem unificada de modelagem (UML) • Design X programação • Foco no modelo
Motivação inicial da orientação a objetos para representação do conhecimento • Raciocinar a nível de categorias • Herança como tarefa de raciocínio • Representar conhecimento estrutural de maneira mais concisa e intuitiva do que com lógica • Mas fácil de se adquirir, compreender, manter, etc. • Raciocínio de classificação e herança pode reutilizar provador de teorema da lógica, no entanto de uma maneira transparente para o usuário • Benefícios comuns da orientação a objetos para a engenharia de software e representação do conhecimento
Categorias • A organização de objetos em categoriasé uma parte vital da representação de conhecimento • Uma grande parte do raciocínio tem lugar no nível de categorias • Servem para fazer prognósticos sobre objetos, uma vez que eles são classificados • Ex.: grande tamanho, casca verde e rajada e forma ovóide? • Servem para organizar e simplificar a base de conhecimento por herança • Ex.: todas as instâncias da categoria Alimento são comestíveis, Fruta é uma subclasse de Alimento, Maçãs é uma subclasse de Fruta, então toda maçã é comestível • Formam uma taxonomiaou hierarquia taxonômica
Características das Categorias • Categorias disjuntas • Não tem elementos em comum • Ex.: Macho e Fêmea • Decomposição exaustiva • Um elemento que não é membro de um conjunto, deve ser de outro • Ex.: um animal que não é um macho tem de ser uma fêmea • Partição • Decomposição exaustiva de disjuntos • Contra-exemplo: nacionalidade (decomposição exaustiva de não disjuntos) • Composição física • Um objeto faz parte de outro • Ex.: Romênia faz parte da Europa, um Capítulo faz parte do Livro • Grupo • Conjunto de objetos de uma mesma categoria
Características das Categorias • Medidas • Propriedades dos objetos • Ex.: altura, massa, custo, ... • Material • Categorias que não podem ser divididas em objetos distintos • Ex.: manteiga, leite, ... • Propriedades intrínsecas • São pertinentes à substância do objeto, e não ao objeto como um todo • Ex.: densidade, ponto de ebulição, sabor, cor, ... • Propriedades extrínsecas • Pertinentes ao objeto • Ex.: peso, comprimento, forma, função, ... • Não são retidas depois da subdivisão
Redes Semânticas • Modelagem visual de conhecimento orientado a categorias • Cada categoria e objeto representado por um nó da rede • Cada relacionamento entre categorias representado por um link na rede • Relacionamentos hierárquicos especiais is-a (para herança) e parte-de • Algoritmos eficientes para derivação de propriedades de um objeto, de acordo com sua pertinência a uma categoria • Derivação por herança de valor de • Derivação por consulta sobre caminho de links
Redes Semânticas – Exemplo Asserção lógica n-ária Voar - Fly Rede semântica com quatro objetos e quatro categorias
Redes Semânticas – Limitações • Principais limitações • Computacionalmente incompletos para implementar a maioria dos sistemas inteligentes • Sem semântica declarativa formal bem-definida (atalho entre nível do conhecimento e nível da implementação sem lógica) • Frames são sucessores das redes semânticas visando a superar a 1a limitação • Lógicas descritivas são sucessores das redes semânticas visando a superar a 2a limitação • Outras limitações • Busca em redes semânticas grandes pode ser muito ineficiente • Não há homogeneidade na definição de nós e links • Herança pode causar dificuldades no tratamento de exceções • Pode haver conflito entre características herdadas • É difícil representar conhecimento comportamental e procedimental – sequenciamento e tempo não estão definidos • Menos expressiva que a Lógica de Primeira Ordem – não há quantificadores
<<enum>> CertaintyLevel Known Default Sintaxe abstrata das redes semânticasem UML OOP/OOSE Classes & Objects OOP/OOSE subclass & instance relationships OOSE aggregation & composition associations • OOP/OOSE attributes & other associations Node Link * * IS-A PART-OF Attribute Specification Single Value Specification Multiple Value Specification
Frames • Um frame é identificado por um nome e descreve um objeto complexo através de um conjunto de atributos • Um Sistema de Frames é um conjunto de frames organizados hierarquicamente • São uma evolução das Redes Semânticas • nós são substituídos por frames • arcos são substituídos por atributos (slots) • Implementa raciocínio monotônico (ex, herança sem sobre-escrita) e não monotônico (ex, herança com sobre-escrita) • procedimentos podem ser anexados a um frame • Descrevem conhecimento ou algum procedimento relativo ao atributo
Frames • Categorias (classes) e instâncias (objetos) representadas por Frames • Um frame é composto de slots • Um slot é composto de facetas • Facetas podem ser: • Especificação de valor (conhecida ou por default) • Restrição sobre valor (tipo, cardinalidade) • Procedimentos (gatilhos a disparar quando slot é acessado, modificado ou faltando para derivar algum fato durante o raciocínio) • Frames organizados em hierarquia com herança múltipla de slots • Semântica da herança é complexa (e na verdade sem definição formal) devida a variedade de facetas e suas interações • Raciocínio implementado por combinação de herança e de disparo de gatilhos • Frames usados tanto para: • Representação do conhecimento • Implementação da máquina de inferência • Implementação da interface de aquisição do conhecimento • Implementação da interface de explicação do raciocínio • Frames sempre extensão de alguma linguagem hóspede de programação de propósito geral (Lisp, C++, Prolog, etc.)
<<enum>> Trigger Missing Read Write <<enum>> CertaintyLevel Known Default Sintaxe abstrata de Frames em UML OOP/OOSE subclass & instance relationships OOP/OOSE Classes & Objects • OOP/OOSE Attributes & Associations No corresponding concepts in OOP/OOSE OOSEConstraints OOP/OOSE Methods & Activities IS-A * Frame * Slot * Facet Host Language Procedure Value Specification Constraint Procedural Attachment Cardinality Constraint Single Value Specification Min: Int Max: Int Multiple Value Specification Type Constraint Return Value Input Parameter
Frames: exemplo Frame: Course in KB University Slot: enrolls Type: Student Cardinality.Min: 2 Cardinality.Max: 30 Slot: taughtby Type: (UNION GradStudent Professor) Cardinality.Min: 1 Cardinality.Max: 1 Frame: BasCourse in KB University Is-a: Course Slot: taughtby Type: Professor Frame: Professor in KB University Slot: degree Default: PhD. Frame: Student in KB University Frame: AdvCourse in KB University Is-a: Course Slot: enrolls Type: (INTERSECTION GradStudent (NOT Undergrad)) Cardinality.Max: 20 Frame: GradStudent in KB University Is-a: Student Slot: degree Default: Bachelor Frame: Undergrad in KB University Is-a: Student
Frames: limitações • Conhecimento comportamental não declarativo impede codificação direita por especialista do domínio que não é programador • Sem semântica formal • Implementação ad-hoc de dedução e adbução, geralmente ineficientes • Não existe máquina de inferência indutivas para aprendizagem • Não inclui noções de encapsulamento e componentes das linguagens de programação OO modernas
MaryFemalePersons SisterOf (Mary, John) x x Persons [yHasMother(x, y) FemalePersons] x x Persons Legs (x, 2) p, s HasSister (p, s) SisterOf (s, p) Comparação com a lógica dos predicados: exemplos
Fly (Shankar, NewYork, NewDelhi, Yesterday) Comparação com a lógica dos predicados: exemplos
UML como linguagem de representação do conhecimento • Diagramas de classes: • Aperfeiçoamento de redes semânticas • Diagramas de atividades • Representação gráfica de procedimentos • Diagramas de classes + diagramas de atividades: • Representação gráfica de poder expressivo equivalente a frames • Vantagens: • Padrão universalmente divulgado com suportado por ferramentas CASE • Convergência entre engenharia de software e do conhecimento • Limitações: • Ainda não existe máquinas de inferência para raciocinar diretamente sobre diagramas UML nem compilador de UML para linguagem executável • Ainda não possui semântica formal bem definida • Consequentemente: • Útil apenas a nível do conhecimento • Precisa sem utilizado em conjunção com outras linguagens atuando aos níveis da formalização e da implementação
Diagrama de Classes • É um diagrama que mostra um conjunto de classes, interfaces e relacionamentos. • Responsável por modelar a parte estática do sistema • Uma classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica • Interface é uma coleção de operações que são usadas para especificar um serviço de uma classe • Um relacionamento é uma conexão entre classes • Pode conter notas, restrições e pacotes
Sintaxe de diagramas de classes UML representada em UML (metamodelagem) !
Diagrama de Atividade • Captura ações e seus resultados • É similar a uma máquina de estados, mas com finalidade diferente – capturar ações e resultados em termos de mudanças no estado dos objetos • O próximo estágio pode mudar automaticamente após o término da ação, sem requerer nenhum evento como em máquinas de estados • Descreve o fluxo do sistema • Como as ações são executadas • O que elas fazem – mudança dos estados do objeto • Quando elas são realizadas – seqüência de ações • Onde elas são executadas – partições de atividades • A implementação de uma operação pode ser descrita como um conjunto de ações relacionadas, posteriormente traduzidas em linhas de código • Pode ter ponto inicial e final
Diagrama de Atividade • Partições de Atividade • Agrupa ações, normalmente com respeito à responsabilidade • Mostra explicitamente onde as ações são executadas (em qual objeto) • Ou mostra qual parte do trabalho está sendo realizado • Objetos • Podem ser vistos em diagramas de atividades • Representam tanto uma entrada como uma saída de uma ação, ou simplesmente mostra que o objeto é afetado pela ação
Diagrama de Atividade • Sinais • Podem ser enviados ou recebidos em diagramas de atividades
Diagrama de Atividade • Pin (alfinete) • A semântica de inicialização da atividade pode ser formalizada através do uso de pins • Mostra valores que uma atividade aceita (pré-requisitos) e valores que ela produz
Sintaxe de diagramas de atividades UML representada em UML (metamodelagem) !
Rede semântica Diagrama de classe correspondente UML x Redes Semântica: Exemplo
Rede semântica Diagrama de classe correspondente UML x Redes Semântica: Exemplo
UML x Frames: Exemplo Frame: Course in KB University Slot: enrolls Type: Student Cardinality.Min: 2 Cardinality.Max: 30 Slot: taughtby Type: (UNION GradStudent Professor) Cardinality.Min: 1 Cardinality.Max: 1 Frame: Student in KB University Frame: GradStudent in KB University Is-a: Student Slot: degree Default: Bachelor Frame: Undergrad in KB University Is-a: Student Frame: Professor in KB University Slot: degree Default: PhD. Frame: AdvCourse in KB University Is-a: Course Slot: enrolls Type: (INTERSECTION GradStudent (NOT Undergrad)) Cardinality.Max: 20 Frame: BasCourse in KB University Is-a: Course Slot: taughtby Type: Professor
UML – Unified Modeling Language • Vantagens da UML como linguagem para representação de conhecimento • Padrão – notação e ferramentas de edição • Links bem definidos – composição, agregação, herança, ... • Trabalha a nível de conhecimento • Gráfico – bom pra modelar
O que é uma ontologia? • Definição: especificação (semi-)formal explícita de uma concepção compartilhada • Concepção: modelo das entidades, relações, axiomas e regras de algum domínio • Formal: • processável por máquina • permitindo raciocínio automático • com semântica lógica formal • Compartilhada: por uma comunidade, permitindo entendimento • Conceitos de computação relacionados: • Base de conhecimento reutilizável • Esquema de banco de dados
Elementos de uma ontologia • Hierarquia de conceitos: • entidades • cada entidade definida por conjunto de pares atributo-valor • correspondem: • as classes dos modelos orientado a objetos • as entidades do modelo relacional • aos termos do modelo lógico • atributos propriedades x atributos relações • preenchidos por valores atômicas (tipos primitivos) x por outros conceitos • Status epistemológico do valor • Exatamente conhecida, default, probabilista • relações • sem hierarquia x em hierarquia paralela a hierarquia de entidades • correspondem: • associações, agregações e atributos dos modelos OO cujos valores são objetos • as relações do modelo relacional • aos predicados do modelo lógico
Elementos de uma ontologia • Restrições: • sobre valores possíveis dos atributos dos conceitos • correspondem: • as assinaturas de classes em modelos OO • as axiomas universalmente quantificados em modelos lógicos • as restrições de integridade nos esquema de BD • Regras dedutivas: • sobre atributos de (conjunto de) conceitos • permitem inferência automática da existência de instâncias de conceitos a partir da existência de outras instâncias • correspondem: • as regras dos sistemas especialistas e programação em lógica • aos métodos dos modelos OO • as visões em BD
Elementos de uma ontologia • Instâncias de conceitos: • definição de entidade e relações específicos (indivíduos) • correspondem: • aos fatos de sistemas especialistas e programação em lógica • aos objetos dos modelos OO • aos dados dos BD
Serviços suportados por uma ontologia • Consultas e manipulação: • correspondem: • métodos de acesso a valor e de reflexão em linguagens OO • consultas de interrogação e manipulação em BD • ask, tell e retract das bases de conhecimento • sobre conceitos: • Quais são as entidades E relacionadas a entidade 0 via relações r1, r2? • Quais são as relações R mais gerais que r1? • Definição d de entidade E é consistente com o resto da ontologia? • sobre instâncias • um indivíduo I com propriedades P1, ..., Pn é instância de quais conceitos? • Raciocínio automático • geralmente dedutivo
Sistemas Especialistas desde 80 Psicologia Cognitiva desde 60 Lingüística desde 60 Processamento de Linguagem Natural desde 80 Origem e motivação para ontologias Gerenciamento do Conhecimento em Organizações desde 90 Integração de Dados desde 95 Ontologias Engenharia de Software: requisitos e reuso desde 90 Filosofia desde 350 A.C. Sistemas Multi-agentes desde 95 Recuperação de Informação na Web desde 00
Tipologia das ontologias • Especialista: modela um domínio particular restrito • Geral: • modela o conhecimento de senso comum compartilhado por todos os seres humanos • parte de mais alto nível, reutilizável em vários domínios • Conceitual: fundamentada na capacidade de raciocinar • Lingüística: fundamenta no vocabulário de uma(s) língua(s) • De meta-dados: “especializada” na descrição de recursos on-line, no entanto sobre qualquer domínio • De tarefas e métodos: modela procedimentos e comportamentos abstratos no lugar de entidades ou relações
Sub-problemas de modelagem de uma ontologia geral • Categorias e conjuntos • Medidas • Objetos compostos • Tempo • Espaço • Mudanças • Eventos e processos • Objetos físicos • Substâncias • Objetos mentais e crenças
Problemática geral e questões sobre ontologias • Divisão: • como delimito as classes e os atributos? • quais são as distinções que trazem valor agregado? • Escopo: • qual conhecimento incluir? • qual a fronteira do meu domínio? • Granularidade: • até que nível de detalhe modelar os domínio? • problema da ramificação? • Validação: • como avalio a qualidade do modelo? • como escolho entre várias modelagem alternativas (as vezes propostas por pessoas diferentes)?] • como identificar aspectos importantes que estão faltando?
Problemática geral e questões sobre ontologias • Muito difícil responder a essas perguntas porque: • Almejados reuso e relativa independência de aplicação impedem ser guiado completamente pelos requisitos de uma aplicação restrita • Para ontologias gerais de senso comum pior devido a imensidão em largura e profundidade do conhecimento a modelar • Metodologias ainda incipientes • Methontology: • Sensus: http://www.isi.edu/natural-language/resources/sensus.html • No entanto, já existe tentativa de padronização: http://suo.ieee.org/ http://www.fipa.org/
Object Constraint Language (OCL) • OCL 1.0: • Formalização de relacionamento e restrições complexas entre elementos de diagrama de classes • Diagrama de classes anotado com restrições OCL é uma ontologia • Integra lógica dos predicados com algorítmica em uma notação intuitiva derivada das linguagens de programação orientada a objetos • Linguagem declarativa de pura especificação de restrições, não de execução das mesmas • Especifica os invariantes, pré-condições e pós-condições de uma operação, i.e., o que ela deve fazer • Não executa nem especifica como executar tal operação • OCL 2.0: • Substitui linguagem natural para rotular elementos de todos os diagramas UML (não apenas o de classe) • Poder expressivo estendido • Permite fazer ligação explícita entre vários diagramas • Primeiro passo para usar UML ao nível da formalização
Anotações OCL para diagrama de classes: exemplos • Expressões OCL podem referenciar: • Classificadores UML: Classes, Interfaces, Associações e Tipos • Atributos, Operações, Papéis • Sintaxe: classificador.propriedade • OCL permite a navegação através do diagrama de classes • Sintaxe: classe.papel.propriedade ou classe.tipo_de_objeto_associado.propriedade • Exemplos: • LoyaltyProgram.participants.name • Customer.programs.enroll(c) • LoyaltyProgram.participants.cards