terça-feira, 30 de outubro de 2012

TUTORIAL PROTÉGÉ - PARTE 3

baseado no guia prático para construir ontologias OWL usando Protégé dos autores Horridge & Knublauch et al 

PARTE 3: CLASSES

As classes definem um grupo de indivíduos que partilham as mesmas propriedades. No Protégé a edição de classes é realizada usando a "Classes Tab", como mostrado na Figura 1. Toda ontologia contém uma classe chamada Thing. A classe Thing representa um conjunto de todos os indivíduos. Todas as classes são subclasses de Thing. Vamos adicionar a classe "Pizza" a nossa ontologia.

Figura 1 - Classes TAB

A Figura 2 ilustra a barra de ferramenta para trabalhar com adição/exclusão de classes.

Figura 2 - Barra de ferramenta


Adicione as classes PizzaTopping e PizzaBase. Embora não seja obrigatório , é recomendado que todas as classes devem iniciar com letra maícula e não deve conter espaços. Alternativamente pode ser usado underline "_" para unir palavras, por exemplo Pizza_Topping.

Depois de adicionar essas 3 classes na ontologia, precisamos dizer que as classes são DISJUNTAS, para que um indivíduo ( instâncias ou objetos) não possa ser instânciado por mais de uma das 3 classes. Para isso selecione a classe Pizza. Depois clique em Disjoint Pizza. A janela ilustrada na Figura 3 abrirá. Selecione PizzaBase e PizzaTopping e por final clique em OK.




Figura 3 - Disjoint Pizza


As classes OWL são consideradas "sobrepostas" (Como conjuntos que há interseção) Portanto não podemos assumir que um indíviduo não é um membro de uma classe particular simplesmente porque não tem sido afirmada como membro da classe. A fim de "separar" um grupo de classes deve explicitá-las como disjuntas. Isso assegura que um indivíduo é membro de apenas uma classe. Não faz sentido no mundo real um indivíduo pertencer a classe Pizza e PizzaBase.

Existe um atalho no protegé que torna mais rápido a criação de classes e a disjunção de clases. Clique no menu edita para " Remove ou Add Disjoint classe".


No próximo curso falaremos sobre hierarquia de classes, ou melhor criaremos uma taxonomia para nossa ontologia. Na literatura muitos autores denominam como ontologias lightweight.


terça-feira, 23 de outubro de 2012

TUTORIAL PROTÉGÉ - PARTE 2

Continuação do curso de protégé. Esse curso é baseado nas seguintes literaturas:
1) Revolutionizing Knowledge Discovery in the life sciences. Autores: Baher e Cheung. Ano: 2007
2) Handbook on Ontologies. Autores: Staab e Studer. Ano: 2009
3) A Pratical Guide To Building OWL Ontologies Using Protégé 4. Autores: Horridge e Matthew et al.

PARTE 2: Expressividade 

No curso anterior falamos sobre a aba "DL metrics" do Protégé. Essa aba exibe a expressividade DL (Lógica de Descrição) da ontologia. Por exemplo: A ontologia permite propriedades inversas da lógica de descrição? Mas o que é expressividade de uma linguagem? É a habilidade da linguagem exprimir ou descrever algo.
Muitas pessoas argumentam que o principal benefício de usar ontologias para modelar o conhecimento torna-se mais evidentes em aplicações baseadas em raciocínio. Inferir novos conhecimentos e extrair conclusões além das afirmações explícitas é um aspecto de aplicações "inteligentes". Entretanto, o poder do raciocínio depende da expressividade da representação do conhecimento formalizado.

À luz de um equilíbrio entre a expressividade alta e o custo computacional, destacamos a alta expressividade manifestada em linguagens baseadas em lógica de primeira ordem (FOL), OWL FULL etc. Enfatizamos também linguaguens que minimizam o custo computacional, tais como: OWL-Lite, OWL-DL e outras de lógica descritiva.
Qualquer avaliação de uma ontologia leva em consideração a expressividade da linguagem. Uma forma de avaliar é transformar a ontologia em uma linguagem canônica(Que segue a estrutura mais usual ou mais neutra na língua). A figura 1 ilustra essa transformação:

Figura 1

Voltemos ao Protégé que é o alvo do curso. No Protégé a janela DL metrics (Figura 2) exibe a expressividade. A medida que novos construtos são adicionados a ontologia , o Protégé atualiza o DL metrics. Cada letra do DL metrics possui um significado.

Figura 2


Por exemplo a letra F simboliza que está sendo utilizado propriedades funcionais na ontologia.

No próximo curso falaremos sobre criação de classes e classes disjuntas. see you soon!

terça-feira, 16 de outubro de 2012

TUTORIAL PROTÉGÉ - PARTE 1

Vamos iniciar um mini-curso de criação de ontologia utilizando o Protégé 4.2 como apoio. o mini-curso será baseado no guia prático para contruir ontologias OWL usando Protégé dos autores Horridge & Knublauch et al. Nesse tutorial trataremos do básico até ao avançado. As postagens não serão regulares, ou seja, pode ser que a próxima postagem seja de outro assunto e não consecutiva ao tutorial.

PARTE 1: Construindo uma ontologia OWL 

Neste tutorial descreveremos a criação de uma ontologia de Pizzas. Vamos usar a ontologia de Pizza porque encontramos muitos exemplos úteis, entretanto apresentaremos ao longo desse tutorial outros exemplos.

Exercício 1 : Criar uma nova ontoologia OWL
1-  Iniciar o Protégé 4.2;
2 - Escolha a opção "Create new OWL ontology";
3 - Substitua a IRI default pela http://www.semanticweb.org/ontologies/pizza.owl e clique no botão Continue;
4 - Selecione o caminho local do computador onde que salvar sua ontologia e depois clique em continue;

5 - Selecione o formato da sua ontologia RDF/XML;
6 - Clique no botão Finish;
7- Será aberta uma nova janela com uma aba chamada "Active Ontology".

--------------------------------INÍCIO NOTA EXPLICATIVA-----------------------------------------
Vamos entender melhor o que é IRI e o que é o formato RDF/XML.


A URI(Uniform Resource Identifier)  é um conjunto de caracteres usado para identificar um nome ou recurso. Essa identificação permite a interação com outros recursos da rede (ou da WWW) usando protocolo específicos.
Na internet o IRI (Internationalized Resource Identifier) é a generalização da URI. Enquanto URI é limitado ao subconjunto de caracteres ASCII, a IRI pode conter um conjunto de caracteres universais (Unicode/ISO 10646), incluindo Chinês ou Japonês, entre outros. Para ampliar seus conhecimentos em URI acessa a página da W3C (http://www.w3.org/International/O-URL-and-ident.html).

Existe bastante variabilidade de como os dados são formatados. Por exemplo, existe 6 trechos de códigos e todos significam a mesma coisa:

<!-- 1 -->
<foaf:Person rdf:ID="bob" foaf:name="Bob" />

<!-- 2 -->
<foaf:Person rdf:about="#bob">
  <foaf:name>Bob</foaf:name>
</foaf:Person>

<!-- 3 -->
<rdf:Description rdf:ID="bob" rdf:type="http://xmlns.com/foaf/0.1/Person">
  <foaf:name>Bob</foaf:name>
</rdf:Description>

<!-- 4 -->
<rdf:Description rdf:ID="bob" rdf:type="http://xmlns.com/foaf/0.1/Person" />
<rdf:Description rdf:about="#bob" foaf:name="Bob" />

<!-- 5 -->
<rdf:Description rdf:about="#bob" foaf:name="Bob">
  <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person" />
</rdf:Description>

<!-- 6 -->
<rdf:Description rdf:about="#bob">
  <foaf:name>Bob</foaf:name>
  <rdf:type>
    <rdf:Description rdf:about="http://xmlns.com/foaf/0.1/Person" />
  </rdf:type>
</rdf:Description>

Os formatos mais utilizados são:RDF/XML, OWL/XML e RDF/XML-ABBREV. O OWL/XML não pode ser serializado em um grafo. O formato RDF/XML-ABBREV é mais compacto e portanto menos eficaz que o formato RDF/XML format.
--------------------------------FIM DA NOTA EXPLICATIVA-----------------------------------------

Vamos usar em nossa ontologia o formato RDF/XML.

A seguinte tela ilustra o protégé com aba ativa "Active Ontology"


Clicando em annotations você adiciona um comentário explicativo a sua ontologia. Veja na tela seguinte:



A janela DL metrics mostra a expressidade de sua ontologia. No próximo curso continuaremos nessa janela. Explicaremos em mais detalhes o que é expressividade de uma ontologia e como é medido no protégé.

quarta-feira, 10 de outubro de 2012

METAS

NOVA METAS

Nós próximos artigos falarei mais sobre:

1) Raciocínio baseado em casos (case-based  reasoning) que usam ontologia. Para isso busquei o framework JColibri e vou implementar algo.

2) Lógica e raciocício lógico

3) Uso do protegé 4.2.

4) Recuperação da informação

Aguardem novidades em breve. Boas ideias são bem vindas.


O que é uma ontologia? segundo McGuinness & Noy


baseado no artigo McGuinness & Noy - Um guia para criar sua primeira Ontologia.

O que é uma ontologia?


A literatura de inteligência artificial contém muitas definições de uma ontologia, e muitas  se contradizem. Para o propósito deste artigo uma ontologia é uma descrição formal explicíta dos conceitos do domínio do discurso (classes (algumas vezes chamadas de conceitos)), propriedades de cada conceito descrevendo várias características e atributos do conceito (slots (algumas vezes chamados de roles ou propriedades)), e restrições nos slots ( facets ( algumas vez chamado de restrições aos role)). Uma ontologia juntamente com um conjunto de instâncias das classes constituem uma base de conhecimento. Na realidade, existe uma linha tênue onde termina a ontologia e inicia a base de conhecimento.

As classes são o foco da maioria das ontologias. Classes descrevem conceitos do domínio. Por exemplo: classes de vinhos representam todos os vinhos. Vinhos específicos são instâncias das classes. O copo de vinho Bordeaux é uma instância da classe vinho Bordeaux. Uma classe pode ter subclasses que representam conceitos que são mais específicos que uma superclasse. Por exemplo, podemos dividir as classes de todos os vinhos em tinto, branco e rosé. Alternativamente, podemos dividir em uma classe de vinhos espumante e não espumantes.

Slots descrevem propriedades das classes e instâncias: O vinho  Château Lafite Rothschild Pauillac é muito encorpado; é produzido pela vinícula Château Lafite Rothschild. Temos 2 slotes descrevendo o vinho desse exemplo: o slot encorpado com os valores muito e o slote produtor com o valor vinícula Château Lafite Rothschild. Ao nível de classes, podemos dizer que as instâncias das classes Vinho terão slots descrevendo seus  sabor, corpo,nível de açúcar, o produtor do vinho e assim por diante.

Todas as instâncias da classe Vinho, e suas subclasses Pauillac, tem um slot da qual é uma instância da classe Vinícula (Figura 1). Todas as instâncias da classe Vinícula tem um slot produtor que refere-se a todos o vinhos (instâncias das classe Vinho e suas subclasses) que são produzidos por um vinícula. 

Em termos práticos, desenvolver um ontologia inclui:
·
Definir as classes na ontologia.

· Organizar as classes em uma taxonomia (subclasse-superclasses).
·
Definir e descrever valores permitidos para os slots. 

· Preencher valores para slotes instanciados
Figura 1

Não existe uma forma ou metodologia correta para desenvolver ontologias. Descreveremos uma abordagem iterativa para desenvolvimento de ontologia: Iniciamos com um primeiro passo:

Primeiro, gostaríamos de enfatizar algumas regras fundamentais no projeto de ontologias.  Essas regras podem parecer dogmáticas.Entranto podem ajudar em muitas decisões de projeto:
1) Não existe uma maniera correta para modelar o domínio - Existem várias alternativas. A melhor solução quase sempre depende das necessidades da ontologia e do que você pretende fazer.
2) O desenvolvimento de ontologia é necessariamente um processo iterativo.
3) Os Conceitos devem ser próximos a objetos(físicos ou lógicos) e relacionamento do domínio de interesse. Esses serão muito provavelmente  substantivos (objetos) ou verbos (relacionamento) em frases que descrevem o domínio.

O primeiro passo é determinar o domínio e escopo da ontologia. As seguintes perguntas podem ser feitas:
·
Qual é o domínio que a ontologia deverá cobrir?

· Para que iremos usar essa ontologia?
· Para quais tipos de pergunta a ontologia deve fornecer resposta?
· Quem usará e manterá a ontologia?

Uma maneira de determinar o escopo da ontologia é esboçar uma lista de perguntas na qual uma ontologia deve estar apta a responder, também chamada de questões de competência (Gruninger and Fox 1995). Estas questões servirão de teste a ontologia criada. 

sábado, 6 de outubro de 2012

Por que desenvolver uma ontologia?

baseado no artigo McGuinness & Noy - Um guia para criar sua primeira Ontologia.

Por que desenvolver uma ontologia?


Nos últimos anos o desenvolvimento de ontologia - especificações formais e explicitas dos conceitos do domínio e relações entre os conceitos (Gruber, 1993) - foi movido da esfera dos laboratórios de Inteligência Artificial para os computadores de especialistas do domínio. Ontologias tem se tornado comum na Web. As ontologias na Web variam em categorizar grandes taxonomias em sites na Web (tais como Yahoo!) para categorização de produtos de vendas(tais como Amazon.com). O consórcio WWW (W3C) está desenvolvendo RDF (Resource Descriptions Framwework ), uma linguagem para codificação do conhecimento nas páginas Web para tornar compreensível a agentes eletrônicos em busca de informações.A DARPA (Agência Americana de Pesquisas) em conjunto com a W3C está desenvolvendo o DAML pela extensão do RDF com mais expressividades do construtos visando facilitar a interações de agentes na Web.  Atualmente muitas disciplinas desenvolvem ontologias padronizadas que especialistas do domínio podem usar para compartilhar e anotar informação. Por exemplo: Na medicina tem produzido vasto, padronizado, vocabulário estruturado como o SNOMED  (Price and Spackman 2000) e a rede semântica da UMLS (Unified Medical Language System) (Humphreys and Lindberg 1993). Outros amplos propósitos para as ontologias estão surgindo. Por exemplo: Programa de desenvolvimento das Nações Unidas e Dun & Bradstreet uniram esforços para desenvolver o UNSPSC, que é uma ontologia na qual fornece terminologia para produtos e serviços (www.unspsc.org).
Uma ontologia define um vocabulário comum para pesquisadores que precisam compartilhar informação de um domínio. Isso inclui definições que são interpretáveis por máquinas. Essas definições são conceitos básicos do domínio e relações entre os conceitos
Por que alguém desenvolveria uma ontologia?Algumas razões são:
* Para compartilhar entendimento comum da estrutura da informação entre as pessoas ou agentes de software.
* Permitir o reuso do domínio do conhecimento.
* Para tornar explicita hipóteses do domínio.
* Para analisar conhecimento do domínio.

Compartilhar entendimento comum da estrutura da informação entre pessoas ou agentes de software é uma dos mais comuns objetivos no desenvolvimento de ontologias(Musen 1992; Gruber 1993).  Por exemplo,
imagine vários web sites diferentes que contém informação médica ou fornecem serviços de e-commerce. Se esses sites compartilham e publicam fundamentalmente a mesma ontologia dos termos, então os agentes de software podem extrair e agregar informações dos diferentes sites. Os agentes podem usar essa informação agregada para responder consultas dos usuário ou como dados de entrada para outras aplicações.
Permitir reutilizar conhecimento do domínio foi uma das forces motrizes da recentes onda da pesquisa de ontologia. Por exemplo, modelos de domínios muito diferentes precisam representar a noção de tempo. Essas representação inclui a noção de intervalos de tempo, pontos nos tempo, medidas relativas do tempo, e assim por diante. Se um grupo de pesquisadores desenvolvem uma ontologia em detalhes, outras podem ser reutilizadas em outros domínios. Adicionalmente, se precisamos construir um ontologia grande, podemos integrar muitas ontologias existentes. Podemos também reutilizar ontologias gerais, tais como a ontologia UNSPSC, e estende-la para descrever seu domínio de interesse.

Tornar explicito as hipóteses fundamentais do domínio - Em uma implementação é possível mudar essas hipóteses facilmente se nosso conhecimento do domínio mudar. A codificação das hipóteses sobre o mundo usando uma linguagem de programação torna essas hipóteses não apenas difícil de verificar e entender , mas também é difícil de mudar para alguém sem conhecimento em programação e lógica. Além disso, especificação explícita do conhecimento do domínio são úteis para novos usuários que devem aprender o que os termos do domínio significam.







segunda-feira, 1 de outubro de 2012

O que é ontologia segundo Guarino




Texto baseado no artigo Formal Ontology and Information Systems de Nicola Guarino


O que é ontologia

Podemos agora esclarecer o papel de uma ontologia, considerado como um conjunto de axiomas lógicos concebidos para explicar o significado de um vocabulário pretendido. Dada uma linguagem L com compromisso ontológico K, uma ontologia para L é um conjunto de axiomas de forma que o conjunto de seus modelos se aproxima da melhor forma possível do conjunto de modelos pretendidos de L de acordo com K (Fig. 1). Em geral, não é fácil (nem sempre conveniente)  encontrar o correto conjunto de axiomas, de modo que uma ontologia irá admitir outros modelos, além dos que se pretendiam. Portanto, uma ontologia pode "especificar" uma conceituação de forma indireta, desde vez que i) tenha um conjunto aproximado dos modelos pretendidos; ii) um conjunto desses modelos é apenas uma fraca caracterização de um conceitualização. Diremos que uma ontologia O para uma linguagem L aproxima de uma conceituação C se existe um compromisso ontológico K = <C,a> , de tal forma que os modelos pretendidos de L segundo K são incluídas nos modelos de O. Uma ontologia comprometida com C deve ser i)  concebida com o objetivo de caracterizar C, e ii) se aproxima de C. Uma linguagem L compromete-se com uma ontologia O que se compromete  com uma conceituação C, tal que O concorda com C. Com esses esclarecimentos, chegamos à seguinte definição, que refina a definição de Gruber, fazendo uma clara diferença entre uma ontologia e uma conceituação:
Uma ontologia é uma teoria lógica que representa o significado pretendido de um vocabulário formal, isto é, o seu comprometimento ontológico com uma conceituação particular do mundo. Os modelos pretendidos de uma linguagem lógica são limitados por seu compromisso ontológico. Uma ontologia reflete indiretamente esse compromisso (E conceituação fundamental). Pela aproximação destes modelos pretendidos.
As relações entre o vocabulário, conceituação, o compromisso ontológico e a ontologia são ilustrados na fig. 1. É importante salientar que uma ontologia é uma linguagem dependente, enquanto a conceituação é independente de linguagem
Figura 1: O modelo pretendido de uma linguagem lógica reflete o seu compromisso de uma conceituação.