# Sistemas de Informação Distribuídos/SID na Web/Ontologias
## RESUMO

Neste capítulo serão abordados aspectos referentes a definição, construção, classificação e tipos de utilização de Ontologias, como também suas aplicações.

## DEFINIÇÕES

Na literatura, existem diversos formalismos para caracterizar o que é uma Ontologia, pois o significado do termo é muito amplo, antecedendo a própria computação. Por esta razão, Guarino argumenta que a definição de uma Ontologia tende a variar conforme o objetivo de sua utilização.
Por outro lado, Swartout e Perez propõe a Ontologia como um conjunto de termos, com ordenação hierárquica, descrevendo um domínio específico para ser utilizado em bases de conhecimento.
Um domínio pode ser descrito através de um conjunto de conceitos e termos fornecidos através de uma Ontologia, enquanto que a base de conhecimentos se responsabiliza por descrever uma realidade. Entretanto, o principal problema enfrentado ainda é sua construção, cujo custo é muito elevado. Outro aspecto importante é que uma realidade e domínio jamais são estáticos, isto é, novas informações constantemente passam a compor esta base, todavia, os mecanismos para identificar esta expansão ainda são muitos primitivos.

## RAZÕES PARA UTILIZAR

A utilização de uma ontologia pode ocorrer por diferentes motivos ou necessidades, estão listadas abaixo algumas das razões, segundo Swartout, que levam muitas pessoas a utilizarem ontologias na área da ciência da computação:
* As ontologias fornecem um vocabulário sustentado por uma completa conceitualização dos termos, evitando interpretações equivocadas e contribuindo para uma maior confiabilidade da representação do conhecimento.
* Elas também permitem a modelagem adequada para compartilhar o conhecimento de um domínio, deixando-o acessível para outras pessoas que desenvolvam aplicações dentro do mesmo. Um exemplo seria uma ontologia criada para descrever o domínio de uma livraria, que uma vez compartilhada permitiria a outras livrarias construir novos catálogos sem a necessidade de refazer uma análise de seu domínio.
* A descrição do conhecimento é exata, ao contrário das linguagens naturais em que as palavras podem ter a semântica totalmente diferente conforme o seu contexto. Neste sentido, as ontologias costumam ser escritas em linguagem formal. Um exemplo da confusão que a linguagem natural pode causar é quando duas pessoas conversam a respeito de um "banco", pois podem estar se referindo a uma instituição financeira, um repositório de informações ou até mesmo do corpo material em que as pessoas se sentam. A interpretação poderá variar de pessoa para pessoa. Entretanto, se houver uma conceitualização comum entre elas, então a possibilidade de um mal entendido é reduzida drasticamente.

## ÁREAS DE APLICAÇÃO

* Recuperação de informações
* Bibliotecas digitais
* Web semântica
* Gestão de conhecimento
* Processamento da linguagem natural
* Comércio eletrônico
* Sistemas multiagentes

## A ESTRUTURA DE UMA ONTOLOGIA

Segundo Perez, a estrutura de uma ontologia pode ser formada através dos seguintes elementos:
* Um conjunto de conceitos e uma hierarquia entre esses conceitos, ou seja, uma taxonomia. Os conceitos podem ser abstratos (por ex.: força) ou concretos (por ex.: carro), elementares (por ex.: elétron) ou compostos (por ex.: átomo), reais ou fictícios. Um exemplo de taxonomia é o conceito homem ser um subconceito do conceito pessoa.
* Um conjunto de relacionamentos entre esses conceitos. Um exemplo de relacionamento entre os conceitos de pessoa e carro é o relacionamento de ser-dono.
* Um conjunto de funções. Uma função é um caso especial de relacionamento em que um conjunto de elementos tem uma relação única com um outro elemento. Um exemplo de função é ser-pais-biológicos, onde um conceito homem e um conceito mulher estão relacionados a um conceito pessoa.
* Um conjunto de axiomas, ou seja, regras que são sempre verdade. Um exemplo de axioma é afirmar que toda pessoa tem uma mãe.
* Um conjunto de instâncias que são um conhecimento prévio existente na ontologia.

## CLASSIFICAÇÃO
### Ontologias de domínio

Descrevem o vocabulário relacionado a um domínio genérico, através da especialização de conceitos introduzidos nas ontologias de alto-nível. São exemplos de ontologia de domínio ontologias de veículos, documentos, computação, medicina, etc.

### Ontologias de alto-nivel

Descrevem conceitos muito gerais como espaço, tempo, evento, etc. Esses conceitos tipicamente são independentes de um problema particular ou domínio. Sendo assim, é bem razoável ter-se uma ontologia de alto-nível compartilhada por grandes comunidades de usuários.

### Ontologias de tarefa

Descrevem um vocabulário relacionado a uma tarefa ou atividade genérica, através da especialização de conceitos introduzidos nas ontologias de alto-nível.

### Ontologias de aplicação

São as ontologias mais específicas por serem utilizadas dentro das aplicações. Esse tipo de ontologia especializa conceito tanto das ontologias de domínio, como também das de tarefas. Um exemplo é uma ontologia para uma aplicação que trabalhe com carros de luxo. Essa ontologia especializará conceito da ontologia de veículos (que é uma ontologia de domínio).

## CONSTRUÇÃO
### Dificuldades

A criação de uma ontologia se torna problemática por exigir um grande esforço de profissionais especializados, pois somente estes têm o conhecimento adequado do domínio que está tentando ser formalmente representado. Embora existam ferramentas que auxiliem neste processo, ainda é tarefa dos especialistas selecionar os documentos de treino e relacionar os termos mais relevantes e suas ponderações. Por fim, o profissional necessita revisar a ontologia gerada, procurando por erros ou ambigüidades. A grande dificuldade encontrada para construir uma ontologia, junto à necessidade de um especialista em um domínio, fez com que o processo de construção dessas ontologias encontrasse diversos problemas durante o seu desenvolvimento.
Por ser uma tarefa extremamente trabalhosa, muitas pessoas esquecem de adotar uma metodologia adequada, partindo direto para a implementação sem antes adquirir conhecimento sobre o domínio, o que gera os seguintes problemas:
* O código da implementação acaba descrevendo os modelos conceituais da ontologia.
* Baixa reusabilidade, pois a estruturação da ontologia e as decisões de projeto ficam implícitas no código.
* Nem sempre o especialista do domínio da ontologia é capacitado para entender o código da implementação, podendo gerar problemas de comunicação. Isto deve ser evitado, pois ele tende a ser a principal fonte de informação sobre o domínio.
* A passagem da aquisição de conhecimento para a implementação ocorre de maneira repentina, gerando dificuldade para o desenvolvimento de ontologias mais complexas.
* A linguagem escolhida pode limitar a capacidade de descrição conceitual do domínio da ontologia.
Além disso, ainda restam outros conceitos cujas perguntas precisam ser respondidas, tais como:
* Divisão:
    Como delimitar as classes e atributos?
    Quais distinções possuem um valor agregado?
* Granularidade:
    Qual o grau de detalhamento o domínio em questão deverá ter?
    Como seria tratado o limite de ramificações?
* Escopo:
    Que tipo de conhecimento deve ser representado?
    Quais as fronteiras deste conhecimento/domínio?
* Validação:
    Qual o tipo de modelagem que se deve optar em utilizar? Existe um melhor?
    Como detectar aspectos importantes que foram esquecidos?
    Como avaliar a qualidade da Ontologia ou modelo proposto?

### Metodologia

Pensando nas dificuldades de criação de ontologias, alguns autores propuseram a adoção de algumas metodologias para minimizar tais problemas. Em Ushold encontra-se uma metodologia dividida nos seguintes estágios:
* Identificação do propósito:
Tenta identificar o porquê da construção da ontologia e as suas intenções de uso, isto é, sua competência. A competência de uma representação diz respeito à cobertura de questões que essa representação pode responder ou de tarefas que ela pode suportar. Ao se estabelecer a competência, temos um meio eficaz de delimitar o que é relevante para a ontologia e o que não é.

#### Construção da Ontologia

* Captura da ontologia: Realiza a descoberta de conceitos e relacionamentos de um determinado domínio para produzir uma definição adequada dos mesmos. A escolha dos termos a serem usados para referenciar as categorias de conhecimento deve ser feita cuidadosamente, evitando-se termos com interpretação duvidosa. Conceitos passíveis de descrição em termos de outros conceitos, devem ser definidos com referências claras a estes, com o objetivo de facilitar a formalização.
* Codificação: Utiliza uma linguagem formal para codificação da ontologia. À primeira vista, qualquer linguagem de representação formal do conhecimento, ou mesmo informal, poderia ser usada para representar ontologias. Na prática, entretanto, apenas poucas linguagens têm sido usadas para este propósito, entre elas: lógica de primeira ordem, KIF (Knowledge Interchange Format), Ontolingua, CML (Conceptual Modelling Language) e Description Logic. É importante ressaltar que todas essas linguagens possuem vantagens específicas e assumem compromissos ontológicos em níveis variados, e portanto a escolha de que linguagem usar depende diretamente do propósito da ontologia.
* Integração com ontologias existentes: Integrar a nova ontologia com outras ontologias existentes, este processo é importantíssimo nos casos em que se deseja comparar duas ou mais ontologias ou aproveitar conceituações previamente estabelecidas.
* Avaliação: O processo de avaliação da ontologia busca validar sua satisfabilidade em relação as competências definidas durante a identificação de propósitos. Segundo Gruber, a extensibilidade, clareza, coerência e compromissos ontológicos são os principais critérios a serem utilizados.
* Documentação: A documentação da ontologia pode ocorrer de diversas formas, propõe a utilização de hipertextos como a principal abordagem nesta tarefa. Neste sentido, o universo deve ser descrito em um dicionário de termos que deve ser o menor possível e sempre que possível, sem ambigüidades.