Post on 14-Jan-2016
description
Representação de ConhecimentoObject-Oriented Knowledge
Representation
Fabio MouraJacques Robin
CIn-UFPE
Agenda
Categorias Famílias de Linguagens OOKR
Redes semânticas Frames Linguagens de programação orientadas a objetos Lógicas descritivas Lógicas de frames UML
UML Introdução Diagramas Diagrama de classes Diagrama de atividades
Categorias
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 taxonomia ou hierarquia taxonômica
Características das Categorias (1)
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 (2)
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
Famílias de Linguagens OOKR
Famílias de Linguagens OOKR
Categorias são os principais blocos de construção de qualquer esquema de representação de conhecimento em grande escala
Limitações da lógica como formalismo para representação do conhecimento Representação complexa Inadequada para representação do conhecimento em aplicações IA
Sistemas especialmente projetados para organizar e raciocinar com categorias Da IA: redes semânticas, frames, lógicas descritivas e lógicas de
frames Da ES: OOPL e UML
Cada família reusou conceitos introduzidos em famílias precedentes buscando superar suas limitações Removendo ou modificando problemas existentes, usando maior
rigor e acrescentando novos conceitos
Redes Semânticas
Oferecem auxílios gráficos para visualização de uma base de conhecimento e
Algoritmos eficientes para dedução de propriedades de um objeto, de acordo com sua pertinência a uma categoria
Forma mais flexível e intuitiva de representar conhecimento
É uma representação na qual existem nós que representam entidades e links
(predicados) que representam relacionamentos entre essas entidades
cada link conecta um nó origem até um nó destino normalmente, os nós e links denotam entidades de
domínio específico
Redes Semânticas
Base de conhecimento Nós e links da rede
Máquina de inferência Busca e casamento de padrões A busca se dá para frente e para trás através dos links
A busca pode ser usada de várias maneiras para se extrair informações Como uma ferramenta explicativa Para explorar exaustivamente um tópico Para encontrar o relacionamento entre dois objetos
Redes Semânticas – Exemplo
AnimalAnimal
AveAve PeixePeixe
CanárioCanário AvestruzAvestruz TubarãoTubarão . . .. . .
-tem pele-pode se mover-come-respira
-tem asas-pode voar-tem penas
-tem barbatanas-pode nadar-tem brânquias
-pode cantar-é amarelo
-tem pernas longas e finas-é alta-não pode voar
-pode morder-é perigoso
Redes Semânticas – Limitações
Principais limitações1) Computacionalmente incompletos para implementar a maioria
dos sistemas inteligentes2) 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 Hereditariedade pode causar dificuldades no tratamento de
exceções Pode haver conflito entre características herdadas É difícil representar conhecimento procedimental –
sequenciamento e tempo não estão definidos Menos expressiva que a Lógica de Primeira Ordem – não há
quantificadores
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) procedimentos podem ser anexados a um frame
Descrevem conhecimento ou algum procedimento relativo ao atributo
Frames
Propriedades Valor: especifica o único valor possível Valor default: especifica o valor assumido pelo atributo
caso não haja nenhuma informação a esse respeito Tipo: indica o tipo de dado do valor Domínio: descreve os valores possíveis para o atributo
Gatilhos São procedimentos anexados aos frames, disparados por
consultas ou atualizações Podem inferir valores para atributos a partir de valores de
outros atributos especificados anteriormente em qualquer frame do sistema
Frames – Exemplo
Frame: Course in KB University MemberSlot: enrolls ValueClass: Student Cardinality.Min: 2 Cardinality.Max: 30 MemberSlot: taughtby ValueClass: (UNION GradStudent Professor) Cardinality.Min: 1 Cardinality.Max: 1
Frame: Course in KB University MemberSlot: enrolls ValueClass: Student Cardinality.Min: 2 Cardinality.Max: 30 MemberSlot: taughtby ValueClass: (UNION GradStudent Professor) Cardinality.Min: 1 Cardinality.Max: 1
Frame: AdvCourse in KB University SuperClasses: Course MemberSlot: enrolls ValueClass: (INTERSECTION GradStudent (NOT Undergrad)) Cardinality.Max: 20
Frame: AdvCourse in KB University SuperClasses: Course MemberSlot: enrolls ValueClass: (INTERSECTION GradStudent (NOT Undergrad)) Cardinality.Max: 20
Frame: BasCourse in KB University SuperClasses: Course MemberSlot: taughtby ValueClass: Professor
Frame: BasCourse in KB University SuperClasses: Course MemberSlot: taughtby ValueClass: Professor
Frame: Professor in KB UniversityFrame: Professor in KB University
Frame: Student in KB UniversityFrame: Student in KB University
Frame: GradStudent in KB University SuperClasses: Student MemberSlot: degree ValueClass: String Cardinality.Min: 1 Cardinality.Max: 1
Frame: GradStudent in KB University SuperClasses: Student MemberSlot: degree ValueClass: String Cardinality.Min: 1 Cardinality.Max: 1
Frame: Undergrad in KB University SuperClasses: Student
Frame: Undergrad in KB University SuperClasses: 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
Linguagens de Programação Orientadas a Objetos
Rico em termos de estrutura, pobre em termos de inferência
Inferência – Herança (você não programa herança) Ex.: Implementar maquina de inferência em Java
Trabalhoso, lento, limitado
Jeops: um sistema de produção embutido em Java
Lógicas Descritivas
Fornecem uma linguagem formal para construção e combinação de definições de categorias e
Algoritmos eficientes para definir relacionamentos de subconjuntos e superconjuntos entre categorias
Princípios Usar lógica para definir formalmente semântica de
formalismos de representação de conhecimento OO Estudar computabilidade e complexidade das linguagens
e serviços de inferência antes de implementá-los Limitar expressividade para garantir que esses serviços
sejam computacionalmente tratáveis
Lógicas Descritivas
Aplicações práticas Modelagem de Aplicações - entendimento retirando
inconsistências Engenharia de Software - uma das primeiras aplicações :
usar DL para um sistema de software Configuração - incluem aplicações que suportam o design
de sistemas complexos criados pela combinação de componentes
Medicina - construção de ontologias de conhecimento médico
Limitações DL não trata bem de conceitos quantitativos tais como
ordem, quantidade, tempo e taxas Limita expressividade para garantir que esses serviços
sejam computacionalmente tratáveis
Lógicas de Frames (F-logic)
Fundação lógica para prover linguagens baseadas em orientação a objetos e em frames
Problemas que tenta solucionar A falta de lógica semântica da abordagem OO – papel importante
nas linguagens de programação de BD BDs dedutivos não dão suporte a abstração de dados Várias abordagens tentaram combinar as duas abordagens sem
sucesso Restringem a estrutura dos objetos e as consultas Sacrificam a declaratividade adicionando características extra-lógicas Omitem importantes aspectos dos sistemas OOs, como tipagem e
herança
Mais Pode ser utilizada para definir, consultar e manipular esquemas de
BDs Está relacionada à orientação a objetos da mesma forma que o
cálculo de predicados clássico está relacionado à programação relacional
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
UML
Famílias de Linguagens OOKRQuadro Comparativo
RedesSemântic
as
Frames OOPL Lógicas Descritiv
as
Lógicas de
Frames
UML
Origem IA IA ES IA IA ES
Máquina de Inferência para raciocínio automático
Sim Sim Não Sim Sim Não
Semântica formal bem definida, completa e declarativa
Não Não Não Sim Sim Não
Linguagem de Programação Turing-complete executável
Não Sim Sim Não Sim Não
Representa Conhecimento
Estrutural
Estrut. Declar.Compor
t. Procedu
-ralment
e
Estrut. Declar.
Comport. Procedu-ralmente
Estrutural
Estrut. e Comport.Declarati-vamente
Estrut. Declar.
Comport. Procedu-ralmente
Sintaxe visual intuitiva
Sim Não Não Não Não Sim
UMLUnified Modeling Language
Introdução
Empresa de Software de sucesso ↔ desenvolve software de qualidade e atende aos usuários
Modelagem é uma tarefa fundamental nas atividades iniciais do desenvolvimento do software Comunicar a estrutura e comportamento desejados para
o sistema Visualizar e controlar a arquitetura do software Melhor entendimento do sistema Gerenciar os riscos ...
É preciso utilizar uma linguagem expressiva, simples e padrão
Introdução
UML é uma linguagem para especificação, visualização, construção e documentação de artefatos de sistemas de software Linguagem padrão adotada e recomendada pela OMG
Extensível Apenas uma linguagem Independente de processo Amplamente utilizada pelo mercado e pela
academia Inter-disciplinar Não possui semântica formal bem definida Abrange modelagem estrutural e comportamental Sub-dividida em diagramas
Introdução
Parte estrutural Diagrama de classes
Diagrama de objetos
Diagrama de Componentes
Diagrama de Desenvolvimento
Classes, interfaces e relacionamentos
Objetos e relacionamentos
Componentes e dependências
Nodos e configurações
Introdução
Parte comportamental Diagrama de Colaboração Diagrama de Seqüência
Diagrama de Casos de Uso
Diagrama de estados Diagrama de atividades
Diagramas de Interação: Objetos, relacionamentos e
mensagens
Casos de uso, atores e relacionamentos
Máquina de estados: Estados, transições, eventos e atividades
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
Diagrama de Classes
Rectangle Circle Polygon
display()
Square
Shape
origin
display()move()resize()
ShapeInterface
display()move()resize()
Tipo especial de Rectangle que possui os lados de mesmo tamanho
ShapePackage
Diagrama de Classes
Adornos aplicados às classes, atributos e operações: Visibilidade – especifica se ela pode ser usada por outros
classificadores Public (+) Protected (#) Private (-)
Escopo – especifica se a propriedade aparece em cada instância do classificador ou se existe apenas uma instância da característica para todas as instâncias do classificador
Instance (default) Classifier (propriedade sublinhada)
Diagrama de Classes
Um relacionamento é uma conexão entre classes Dependência – indica que a mudança na
especificação de uma classe deve afetar uma outra classe
Generalização – relacionamento entre uma classe geral (super-classe) e uma mais específica (sub-classe)
FilmClip
name
playOn(c : Channel)
Channel
Shape
Rectangle Circle Polygon
Square
Diagrama de Classes
Associação é um relacionamento estrutural, que especifica que objetos de uma classe são conectados com objetos de uma outra classe
Associação entre todo-parte é conhecida como agregação
Composição é um tipo especial de agregação que ocorre quando o tempo de vida do todo e da parte são iguais
CompanyPerson
Company
1
*
Department
*
1 1
1..*1..*
1
Company
Department
Diagrama de Classes
Vários adornos aplicados às associações Nome, Papéis, Multiplicidade, etc.
Uma associação entre duas classes pode possuir propriedades: classes-associação
Person
+employer
0..* 1..*
+employee
1..*0..* CompanyWorks for
Person Company1..*0..*Works for
+employee+employer
1..*0..*
Job
descriptiondateHiredsalary
Diagrama de Classes
Realização é um relacionamento entre classificadores onde um especifica um contrato e outro garante cumpri-lo
Rectangle Circle {leaf} Polygon
display()
Square
Shape
origin : Point = (0,0)id : Integer {addOnly}
display()move()resize()
ShapeInterface
display()move()resize()
Tipo especial de Rectangle que possui os lados de mesmo tamanho
Diagrama de Classes
Classe abstrata
Rectangle Circle {leaf} Polygon
display()
Square
Shape
origin : Point = (0,0)id : Integer {addOnly}
display()move()resize()
ShapeInterface
display()move()resize()
Tipo especial de Rectangle que possui os lados de mesmo tamanho
Burning Earning
Transactionpoints : Integerdate : Date
program()
LoyaltyAccountpoints : Integer
earn()burn()isEmpty()
0..n+transactions 0..n
CustomerCardvalid : BooleanvalidFrom : DategoodThru : Datecolor : enum{silver, gold}printedName : String
0..n
+transactions
0..n
+cardService
condition : BooleanpointsEarned : IntegerpointsBurned : Integerdescription : String
0..n
+transactions
0..n
Membership
0..10..1 +card
Customername : Stringtitle : Stringismale : BooleandateOfBirth : Date
age()
0..n+cards 0..n
+owner
ProgramPartnernumberOfCustomers : Integer
0..n +deliveredServices0..n
LoyaltyProgram
enroll()0..n0..n 0..n
+program
0..n1..n
1..n
1..n
+partners 1..n
ServiceLevelname : String
0..n
+availableServices
0..n
0..n0..n
+actualLevel
1..n1..n
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
Diagrama de Atividade
A implementação de uma operação pode ser descrita como um conjunto de ações relacionadas, posteriormente traduzidas em linhas de código
Mostra as ações e seus relacionamentos e pode ter ponto inicial e final
Diagrama de Atividade
Setas de atividades podem conter condições de guarda, uma cláusula de envio ou uma expressão de ação, ou nada (a próxima ação é executada assim q a ação anterior termina)
Diagrama de Atividade
Um símbolo na forma de um diamante é usado para mostrar um nó de decisão
A condição de decisão é mostrada através de uma nota com o estereótipo <<decisionInput>>
O nó de decisão pode ter uma ou mais linhas de entrada e duas ou mais linhas de saída
Diagrama de Atividade
Ações podem ainda serem executadas de forma concorrente
O diagrama deve conter pontos de ramificação e de unificação
Diagrama de Atividade
Conectores podem ser utilizados quando o conjunto de setas torna o diagrama muito complicado
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
Diagrama de Atividade
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
Referências
Referências
Pimentel, A. Robin, J. Ontologias e Representação do Conhecimento Orientada a Objetos. Disponível em: <http://www.cin.ufpe.br/~in1006/2003/OntologiesOOKR.ppt>
Ramalho, F. UML-OCL. Disponível em: <http://www.cin. ufpe.br/~in1006/2003/UMLOCL.ppt>
Kifer, M. Lausen, G. Wu, J. Logical Foundations of Object and Frame-Based Languages. Journal of ACM, May 1995. Disponível em: <ftp://ftp.cs.sunysb.edu/ pub/TechReports/kifer/flogic.pdf>
Eriksson, H. Penker, M. Lyons, B. Fado, D. UML 2 Toolkit. Wiley, 2004.