Introdução aos Agentes Inteligentes Aula: Ontologias – Uma breve introdução Aula original de Fred Freitas e Patrícia Tedesco Revisada por Flávia Barros 1 Plano da aula Conceitos básicos - Definições Elementos de uma ontologia Tipos de Ontologias Usos das Ontologias Como projetar/desenvolver uma ontologia 2 Formalismos de Representação de Conhecimento Objetivo: Prover teorias e sistemas para expressar e manipular conhecimento declarativo de forma tratável e eficiente computacionalmente Formalismos orientados a predicados regras e programação em lógica Foco no processo, funcionamento Formalismos orientados a domínios Ontologias, sistemasframes, redes semânticas... Classes, relações e restrições Facilitam a estruturação de conhecimento disponível sobre um domínio de aplicação 3 Sistemas baseados em conhecimento Principais sistemas de raciocínio declarativos/dedutivos lógica regras Provadores de teorema objetos híbridos Sistemas Redes Semânticas Sistemas Frames Sistemas de Lógica descritiva Sistemas OO, Ontologias Programação em lógica Sistemas de produção Sistemas de manutenção da verdade regras+objetos lógica+objetos lógica+objetos+funções 4 Algumas definições... 5 Ontologias Termo oriundo da filosofia Ramo da filosofia que lida com a natureza e organização da realidade Categorias de Aristóteles taxonomia para os objetos do mundo Em Ciência da computação e Inteligência artificial, ganha um senso mais prático Organização do conhecimento manipulável 6 Ontologias Em CC e IA Corpo de conhecimento declarativo sobre um dado domínio, assunto ou área de conhecimento Na prática, são hierarquias de conceitos (classes) com suas relações, restrições, axiomas e terminologia associada Servem para estruturar e compartilhar o conhecimento disponível sobre um dado domínio 7 Ontologias Exemplo: publicações e eventos científicos 8 Relacionamentos na Ontologia sobre pesquisa científica 9 Definições de Ontologia (cont.) “Uma ontologia é uma especificação explícita e formal de uma conceitualização compartilhada” [Studer et al 98] Especificação explícita: definições declarativas de conceitos, instâncias, relações, restrições e axiomas Formal: declarativamente definida, sendo compreensível e manipulável para agentes e sistemas Conceitualização: modelo abstrato de uma área de conhecimento ou de um universo limitado de discurso Compartilhada: conhecimento consensual, seja uma terminologia comum da área modelada, ou acordada entre os desenvolvedores dos agentes que se comunicam 10 Afinal, pra que servem as ontologias? Servem para estruturar e compartilhar o conhecimento disponível sobre um dado domínio: Para compartilhar conhecimento comum – conceitos e vocabulário Entre pessoas Entre agentes de software Para permitir a reutilização do conhecimento Evitando a “reinvenção da roda” Introduzindo padrões que permitam a interoperabilidade entre aplicações Onde Aplicar Ontologias? Recuperação de informações, Sistemas de Integração de Informação, Gestão de conhecimento, Processamento da linguagem natural, Comércio eletrônico, Sistemas multiagentes... Um Exemplo: Integração de dados Relembrando... Etapas de desenvolvimento dos SBCs Ontologias Materialização do nível de conhecimento em um sistema BC Muito útil na fase de Aquisição do conhecimento 14 Etapas de desenvolvimento de SBCs Nível de Conhecimento Nível Lógico Nível de Implementação AQUISIÇÃO FORMALIZAÇÃO IMPLEMENTAÇÃO REFINAMENTO Linguagem natural Linguagens de representação do conhecimento Linguagens de programação BC Elementos de uma Ontologia 16 Elementos de uma Ontologia Conjunto de conceitos Entidades Relações (que podem ser hierárquicas ou não) Instâncias de Conceitos Restrições Regras Conjunto de Conceitos Entidades Cada entidade tem um nome associado Cada entidade é definida por conjunto de pares atributo-valor E.g., Automóvel (tem-motor=sim; num-rodas=4) Correspondem aos termos no modelo lógico Constantes e variáveis Conjunto de Conceitos Relações Podem ser hierárquicas ou não E.g., is-a, part-of, mae-de, etc... Triciclo is-a Ciclo Correspondem aos predicados do modelo lógico Conjunto de Conceitos Instâncias de Conceitos Definição de entidades e relações específicas (indivíduos) E.g., meu-triciclo (num-rodas=3, cor=rosa) Relação: meu-triciclo is-a triciclo Correspondem aos fatos no modelo lógico Restrições Impõem restrições sobre valores possíveis dos atributos dos conceitos E.g., num-rodas Valor numérico, entre 2 e 4. Correspondem aos axiomas universalmente quantificados nos modelos lógicos Regras Permitem inferência automática (dedução) de instâncias de conceitos a partir de outras instâncias E.g., Se veículoTipo=ciclo E num-rodas=3 E motor=não Então veículo=Triciclo Correspondem às regras do modelo lógico Sistemas baseados em regras de produção e programação em lógica Tipos de Ontologias Ontologias de topo (upper ontologies) Ontologias centrais ou genéricas de domínio (core ontologies) Ontologias de Aplicação (específicas) 23 Ontologias de topo (upper ontologies) Modelos dos objetos comuns que são geralmente aplicáveis a uma grande variedade de ontologias de domínio. Tipicamente contém um glossário central que permite descrever termos em vários domínios. Exemplos de upper ontologies padrão são: Dublin Core, GFO, OpenCyc/ResearchCyc, SUMO e DOLCE. 24 Ontologias centrais ou genéricas de domínio (core ontologies) Definem os ramos de estudo de uma área e/ou conceitos mais genéricos e abstratos desta área Serve de base para a construção de ontologias de ramos mais específicos de um domínio 25 Ontologias centrais ou genéricas de domínio (core ontologies) Ex: a ontologia central de direito [Valente & Breuker 96] Conhecimentos meta-legal, definicional, causal, normativo, de responsabilidade, reativos, criativo, de agências legais, reação legal, comportamentos permitidos, etc Servirá para criar ontologias de direito tributário, de família e outras... 26 Ontologias de Aplicação Ontologias de ramos mais específicos de um domínio Procuram solucionar um problema específico de um domínio Utilizam termos de uma ontologia de domínio Ex: Ontologia para identificar doenças do coração, a partir de uma ontologia de domínio de cardiologia 27 Usos de ontologias Realizar inferência Servir como vocabulário compartilhado numa comunicação entre agentes inteligentes Codificar conhecimento interoperável entre linguagens (F-logic, Prolog, Jess) entre formalismos de representação de conhecimento (frames, redes semânticas, lógica de descrições) 28 Como projetar uma ontologia 29 Mas, como projetar a minha ontologia? Processo iterativo Não existe uma única maneira correta de modelar um domínio depende da aplicação Sugestão: Sempre discutir a estrutura com o especialista Classes = nomes-substantivos devem estar próximos ao conceito de um objeto físico ou lógico Relações = verbos Desenvolvimento de Ontologias [Noy &McGuiness 2001] 1. 2. 3. 4. 5. 6. 7. Determinar o Domínio e o Escopo da Ontologia Reutilizar Ontologias Existentes Levantar termos importantes Definir classes e sua hierarquia Definir propriedades das classes Restrições das Propriedades Criação de instâncias Determinar o Domínio e o Escopo da Ontologia Qual o domínio que será coberto ? Representação de vinhos e comidas Onde a ontologia será utilizada ? Sugerir boas combinações de vinhos e comidas Determinar o Domínio e o Escopo da Ontologia A ontologia deverá fornecer respostas para que perguntas ? “Cabernet Sauvignon” é adequado com frutos do mar ? Qual a melhor opção para acompanhar carnes grelhadas ? Que características de um vinho devem ser analisadas para associá-lo com determinados pratos. Etc... Determinar o Domínio e o Escopo da Ontologia Quem irá utilizar e manter a ontologia ? Clientes de um restaurante Leitores de revistas especializadas Clientes em lojas Reutilizar Ontologias Existentes Verificar se alguém já criou a ontologia É possível refinar ou estender ontologias existentes Muitas fontes disponíveis na Internet – vamos perguntar ao Google? Levantar termos importantes Quais são os termos que serão abordados na ontologia ? Quais propriedades esses termos possuem ? Enumerar todos esses termos: Vinho; Tipo de Uva Fabricante Região de origem Coloração (branco, tinto, rosé) Tipo de comidas (peixes, grelhados, massas) Definir classes e sua hierarquia Abordagem “Top-Down”, “Bottom-up” ou combinadas. Termos do passo 03, selecionar somente aqueles que representam objetos. Desconsiderar propriedades Herança múltipla Esboçar hierarquia Classes disjuntas (Vinho Branco e Tinto) Definir classes e sua hierarquia Como detectar erros na hierarquia de classes: Relação “is-a” (se A é subclasse de B, então uma instância de A também será uma instância de B) Incluir classes singulares e coletivas (“vinho” como subclasse de “vinhos”) Transitividade (A subclasse de B e B subclasse de C, então A subclasse de C) Definir classes e sua hierarquia Como detectar erros na hierarquia de classes (cont.): Distinguir entre classes e seu nomes (sinônimos representam a mesma classe) Ciclos (A subclasse de B e B subclasse de A) Classes irmãs devem estar no mesmo nível (Chardonay e Vinhos Brancos não devem estar no mesmo nível, pois não são irmãs) Definir classes e sua hierarquia Como detectar erros na hierarquia de classes (cont.): Classes com somente uma subclasse pode ser um problema Classes com muitas subclasses também Definir classes e sua hierarquia Quando introduzir uma nova classe ? Propriedades diferentes Restrições diferentes Participa em relações diferentes Nova classe ou nova propriedade ? i.e. Tipo de Vinho Instância ou classe ? Depende da aplicação Tipo de vinho (“Sterling Vineyards Merlot”) pode ser instância ou classe. Qual o escopo ? Não especializar além do que sua aplicação precisa Definir as propriedades das classes – também conhecidas por “slots” A partir da lista de termos do passo 03, selecionar aqueles que representam propriedades. Propriedades (intrínsecas, extrínsecas, partes e relações com outros indivíduos) Propriedades são adicionadas à classe mais genérica Definir as restrições das propriedades Tipo da propriedade String, número, boleano, instancias, etc... Valores permitidos Cardinalidade Range classes permitidas na propriedade Domínio classes em que a propriedade está presente Ufaaaa... Só falta agora criar as instâncias! É necessário escolher uma classe, criar uma instância e preencher os valores das propriedades Base de Conhecimento Cuidado com os nomes... Evitar erros e confusões Maiúsculas ou Minúsculas ? Classes (maiúsculas) Propriedades (minúsculas) Plural ou singular ? Padronizar prefixos e sufixos “has-” (has-maker) e “-of” (producer-of) Evitar abreviações Usos e Benefícios das Ontologias Incorporação de conhecimento é facilitada, inclusive de linguagem natural Permitir reuso massivo de conhecimento (de representações) entre formalismos de representação diferentes Codificar conhecimento interoperável entre linguagens (F-logic, Prolog, Jess) entre formalismos de representação de conhecimento (frames, redes semânticas, lógica de descrições) 46 Próxima aula Agentes baseados em Lógica 47