Minha questão é saber como o ser humano pode viver melhor, e isso só a filosofia é capaz de responder...
"
Como os gregos, nós hoje achamos que uma vida mortal bem-sucedida é melhor que ter uma imortalidade fracassada, uma vida infinita e sem sentido. Buscamos uma vida boa para quem aceita lucidamente a morte sem a ajuda de uma força superior." (Luc Ferry)

quarta-feira, 1 de dezembro de 2010

Um histórico sobre Ontologias Informacionais

Inspirado do verbete de Tom Gruber
na Enciclopédia de Sistemas de Banco de Dados, Ling Liu e M. Tamer Özsu (Eds.), Springer-Verlag, 2009.

O termo "ontologia" tem sua origem no campo da filosofia que se preocupa com o estudo do "ser" ou da "existência".  Em filosofia fala-se de uma ontologia como uma teoria da natureza da "existência" ou da natureza daquilo "que há" (no universo). Um exemplo é a ontologia de Aristóteles, que identifica categorias primitivas, tais como "substância" e "qualidade", que se presumia no passado dar conta da constituição fundamental de "Tudo Que É" ou de "Tudo Que Há".  Já na ciência da informação e da computação, ontologia é um termo técnico que indica um artefato que é projetado para uma finalidade, que é permitir a modelagem, o mais fielmente possível, do conhecimento sobre algum domínio, real ou imaginado. 

Para além da Filosofia, o termo foi adotado na área de Inteligência Artificial (IA) cujos pesquisadores reconheceram a aplicabilidade da lógica matemática [6] em seu trabalho, e criaram ontologias como modelos computacionais que permitiram certos tipos de raciocínio automatizado [5].  Nos anos 80, a comunidade de IA passou a usar o termo ontologia para se referir a uma dada teoria de um mundo modelado (por exemplo, Naive Física [5]) ou a um componente presente na arquitetura de todo sistema baseados em conhecimento (na época: sistemas especialistas). Alguns pesquisadores, inspirando-se na Filosofia, usaram o termo para designar a construção de  modelos segundo uma espécie de filosofia aplicada [10].

No início dos anos 90, um esforço para criar padrões de interoperabilidade entre sistemas -- antevendo-se provavelmente o futuro da Web --, identificou a conveniência em se usar uma pilha de tecnologias na qual uma camada identificada como ontológica devia ser componente padrão para a construção de sistemas baseados em conhecimento [8].  

Em [3] define-se ontologia como uma "especificação explícita de uma conceitualização", que é, por sua vez, formada dos "objetos, conceitos e outras entidades que se presume existir em alguma área de interesse e as relações que mantêm entre si."  Os  termos "especificação" e "conceituação" causaram e ainda causam muitos debates, entretanto, os pontos essenciais desta definição dada por T. Gruber são:
  • Uma ontologia define (especifica) os conceitos, relacionamentos e outras distinções que são relevantes para a modelagem de um domínio.
  • A especificação assume a forma das definições do vocabulário representacional (classes, relações, e assim por diante), que fornecem significados em um vocabulário e restrições formais que incidem sobre a sua utilização coerente. 
Uma objeção comum a esta definição é que ela é muito ampla, permitindo representar uma série de especificações desde glossários simples, até teorias lógicas expressas em Cálculo de Predicados [9].
Porém, Gruber responde que isso é verdade também para modelos de dados de qualquer complexidade, por exemplo, um banco de dados relacional de uma única tabela e coluna ainda é uma instância do modelo de dados relacional, embora seja extremamente simples. 

A acepção de Gruber assume uma posição pragmática, podendo-se dizer que uma ontologia informacional é uma ferramenta e/ou produto de engenharia e, assim, seria definida em função de seu uso. Nesta perspectiva, o que importa é o uso que se faz de ontologias para fornecer a representação com a qual pode-se instanciar modelos de domínio em bases de conhecimento, fazer consultas a serviços (baseados em conhecimento), e representar os resultados das chamadas a tais serviços. Por exemplo, uma API de um serviço de busca pode oferecer não mais do que um glossário textual de termos com os quais é feita a formulação de consultas, e este agiria como uma ontologia. Por outro lado, e isso parece corroborar o entendimento de Gruber, atualmente o padrão de Web Semântica do W3C sugere um formalismo específico para ontologias (OWL), em várias versões, que variam em poder de expressão [7].  Isso parece refletir a intenção de que uma ontologia é uma especificação de um modelo de dados abstrato (a conceituação de um domínio), que é independente da sua forma particular (ou de uma realidade possivelmente inatingível, mesmo pela ciência).

FUNDAMENTOS CIENTÍFICOS
De qualquer forma, o termo "ontologia" deve ser discutido no contexto aplicado da modelagem de vocabulários e da engenharia de software e bancos de dados, porém isso não dispensa uma forte fundamentação teórica.
Uma ontologia especifica um vocabulário com o qual se deseja fazer afirmações, que podem ser entradas ou saídas de agentes de software.  Como uma especificação de interface de comunicação, a ontologia fornece uma linguagem para se comunicar com o agente.  Um agente que suporte a interface não é obrigado a usar os termos da ontologia numa codificação interna de seu conhecimento. No entanto, as definições e restrições formais da ontologia vão restringir aquilo que pode ser significativamente afirmado na linguagem usada.  Em essência, comprometer-se com uma ontologia (e.g., suportar uma interface usando a ontologia do vocabulário) exige que as declarações que são feitas nas entradas e saídas sejam logicamente consistentes com as definições e as restrições da ontologia [3].  
Isso é análogo à exigência de que as linhas de uma tabela do banco de dados (ou instruções de inserção em SQL) devem ser consistentes com as restrições de integridade, que são colocadas de forma declarativa e independentemente do formato interno dos dados.

Da mesma forma, enquanto uma ontologia deve ser formulada por alguma linguagem de representação, a especificação deve ser construída no nível semântico - ou seja, independente da estratégia de modelagem de dados ou da implementação.  Por exemplo, um modelo de banco de dados convencional pode representar a identidade dos indivíduos usando uma chave primária, que atribui um identificador único para cada indivíduo.  No entanto, o identificador de chave primária é um artefato próprio ao processo de modelagem física/lógica e não denota algo explícito no domínio.  Ontologias são tipicamente formuladas em linguagens que estão mais próximos do poder expressivo de formalismos lógicos como o cálculo de predicados.  Isso permite que o projetista da ontologia seja capaz de indicar abstrações e restrições semânticas sobre abstrações, sem forçar a representação a seguir uma ou outra estratégia de codificação específica. Por exemplo, um formalismo típico de ontologias seria capaz de dizer que um indivíduo é um membro de uma determinada classe ou tem algum valor de atributo sem se referir diretamente a quaisquer padrões de implementação (pattern), como por exemplo a utilização ou explicitação de identificadores de chave primária.  Similarmente, em uma ontologia pode-se representar restrições que valem para relações simples (A é uma subclasse de B), que podem ser codificadas como um join em chaves estrangeiras no modelo relacional.

A engenharia de ontologias se preocupa em sistematizar o processo de como fazer escolhas de representação que capturem as distinções relevantes de um domínio em seu mais alto nível de abstração, deixando os significados dos termos o mais claro possível.  Como em outras formas de modelagem de dados, são necessários muitos conhecimentos e habilidades do analista ou engenheiro. Vale notar que a herança das ontologias informacionais na filosofia acaba sendo um rico acervo de teorias que indicam sobre como fazer escolhas (compromissos) ontológicas de forma sistemática e coerente. Por exemplo, muitos dos insights vindos das "ontologias formais" motivadas pela compreensão "do mundo real" podem ser aplicados na construção de ontologias informacionais para os mundos de dados [4].  
Quando ontologias são codificados em formalismos padrão, torna-se possível a sua reutilização, o que é motivado pelo custo e pela dificuldade da consideração sistemática do conhecimento humano ou da linguagem [11].  Com efeito, ontologias devem incorporar os resultados das pesquisas acadêmicas feitas no domínio modelado. Elas oferecem um método operacional para colocar as teorias dos domínios para funcionarem na prática em sistemas de banco de dados.

PRINCIPAIS APLICAÇÕES
Ontologias são parte da pilha de padrões do W3C para a Web Semântica, e são usadas para especificar vocabulários conceituais padrão para a troca de dados entre sistemas, prestação de serviços de atendimento para consultas, publicar bases de conhecimento reutilizáveis, e ofertar serviços para facilitar a interoperabilidade entre múltiplos e heterogêneos, sistemas e bancos de dados.  
O papel fundamental das ontologias no que diz respeito a sistemas de banco de dados é especificar uma representação de modelagem de dados em um nível de mais abstração, acima daqueles específicos que compõem os projetos de banco de dados (lógico ou físico). Assim, com base na ontologia do domínio os dados podem ser exportados, traduzidos para outras línguas, consultados e unificados por sistemas e serviços desenvolvidos de forma independente. Aplicações bem sucedidas até o momento incluem a interoperabilidade de banco de dados, pesquisas em múltiplos bancos de dados, e a integração de serviços web.

LEITURA RECOMENDADA
[1] Berners-Lee, T., Hendler, J. and Lassila, O.  The Semantic Web,Scientific American, May 2001.  Also http://www.w3.org/2001/sw/
[3] Gruber, T. R., Toward Principles for the Design of Ontologies Used for Knowledge SharingInternational Journal Human-Computer Studies, 43(5-6):907-928, 1995.
[4] Guarino, N. Formal Ontology, Conceptual Analysis and Knowledge Representation, International Journal of Human-Computer Studies, 43(5-6):625–640, 1995.
[5] Hayes, P. J. The Second Naive Physics Manifesto, in Hobbs and Moore (eds.), Formal Theories of the Common-Sense World, Norwood:Ablex, 1985.
Artificial Intelligence, 5(13): 27-39, 1980.
[7] McGuinness, D. L. and van Harmelen, F.  OWL Web Ontology Language.  W3C Recommendation 10 February 2004. http://www.w3.org/TR/owl-features/
[8] Neches, R., Fikes, R. E., Finin, T., Gruber, T. R., Patil, R., Senator, T., & Swartout, W. R. Enabling technology for knowledge sharingAI Magazine, 12(3):16-36, 1991.
[9] Smith, B. and Welty, C.  Ontology---towards a new synthesis. Proceedings of the International Conference on Formal Ontology in Information Systems (FOIS2001). ACM Press, 2001.
[10] Sowa, J. F. Conceptual Structures. Information Processing in Mind and Machine, Reading, MA: Addison Wesley, 1984.
[11] Standard Upper Ontology Working Group (SUO) IEEE P1600.1, http://suo.ieee.org/

Ontologias informacionais

Inspirado de Tom Gruber
na Enciclopédia de Sistemas de Banco de Dados, Ling Liu e M. Tamer Özsu (Eds.), Springer-Verlag, 2009.

DEFINIÇÃO
No contexto das ciências da informação e da computação, uma ontologia define um conjunto de primitivas de representação para modelar um domínio de conhecimento ou de discurso.  As primitivas são tipicamente classes (ou conjuntos), atributos (ou propriedades), e relações (ou relações entre membros de classes).  

As definições das primitivas incluem a descrição textual de seus significados, mas também várias restrições à sua aplicação de forma logicamente coerente. 

No contexto dos sistemas de banco de dados, as ontologias podem ser vistas como representando um nível de abstração acima dos modelos de dados (hierárquico ou relacional), mas destinada a modelagem do conhecimento sobre os indivíduos representados no sistema, seus atributos e suas relações com outros indivíduos.

Ontologias são tipicamente especificadas em linguagens que permitem abstrair estruturas de dados e estratégias de implementação. Na prática, as linguagens de ontologias estão mais próximas do poder expressivo da lógica de primeira ordem do que as linguagens utilizadas para modelar bancos de dados.

Por esta razão, as ontologias estariam em um nível dito "semântico", enquanto os modelos ou esquemas de dados pertenceriam ao nível "lógico", logo acima do nível "físico" (que é como os dados estão organizados fisicamente).  

Devido à sua independência de modelos de dados de níveis mais baixos, as ontologias são usadas para integrar bancos de dados heterogêneos, permitindo a interoperabilidade entre sistemas distintos, e a especificação de interfaces para serviços baseados em conhecimento independentes.  

Na pilha de tecnologias da Web Semântica [1], as ontologias são localizadas em uma camada explícita de alto nível.  Existem hoje várias linguagens e ferramentas de código aberto (open source) e comerciais para criar e trabalhar com ontologias.