Como dito no post “Para que serve uma ontologia?”, as ontologias são uma forma de representação do conhecimento em um domínio(ex: biblioteca, vinhos, doenças) com o intuito de facilitar a troca de informações, efetuar inferências a respeito do domínio e permitir o compartilhamento e reutilização do conhecimento do contexto. Em outras palavras, ontologia é um vocabulário representativo, geralmente especializado em algum domínio ou determinado assunto. O vocabulário em si não define a importância de uma ontologia, o que define são os conceitos que os termos do vocabulário têm intenção de capturar.
No post de hoje vamos falar sobre a linguagem de representação de ontologias conhecida como OWL (Web Ontology Language) e as mudanças que ocorreram desde sua criação em 2004 até sua versão atual publicada em 2009, a OWL 2. Linguagens voltadas para representação de ontologias tem como objetivo permitir que usuários descrevam de forma clara e explícita a conceitualização formal de um modelo de domínio. Para isso, é necessário que a linguagem atenda alguns requisitos como: uma sintaxe bem definida, uma semântica bem definida, suporte eficiente a inferências e um bom nível de expressividade.
A Web Semântica
A internet possui uma quantidade vasta de informações, no entanto, estas informações possuem pouca organização e padronização, os dados são criados de humanos para humanos e essa falta de estrutura formal dificulta a busca e processamento por máquinas e dispositivos automatizados. Neste contexto surge a Web Semântica. Segundo Tim Berners-Lee, o pai da internet um dos seus idealizadores, a Web Semântica, a partir do uso intensivo de metadados, visa construir uma rede que seja capaz de reconhecer o significado dos documentos e, por meio de um processamento via máquina, inferir novos conhecimentos.
Figura 1: Representação de uma possível arquitetura para a web semântica.
Uma das possíveis arquiteturas da Web Semântica pode ser dividida em três grandes camadas, como mostra a Figura 1. A camada de estrutura, é responsável por estruturar os dados e definir seu significado. Ela é implementada utilizando as tecnologias XML (eXtensible Markup Language) e RDF (Resource Description Framework). As ontologias ficam se enquadram na camada de esquema e possibilitam a representação de conceitos através de uma taxonomia(classes, objetos, propriedades) e um conjunto de regras sobre um domínio, estas definições de conceitos e seus relacionamentos são processáveis por computadores e são expressas em linguagens baseadas em lógica. A camada lógica, é responsável por definir mecanismos para se fazer inferência sobre os dados geralmente utilizando softwares de processamento lógico (reasoning) como o FACT++.
OWL 1
Diferentes linguagens de ontologias provêem diferentes facilidades. Dentre estas linguagens pode-se citar: a SHOE (Simple HTML Ontology Extensions), XOL (Ontology Exchange Language), OIL (Ontology Inference Layer) e DAML (DARPA Agent Markup Language). Estas duas últimas foram combinadas e formaram a DAML+OIL. A mais recente linguagem de ontologia desenvolvida é a OWL Web Ontology Language
A OWL foi criada para aplicações que necessitem processar informação ao invés de apenas apresentá-la para humanos, a OWL faz parte de um grupo de tecnologias recomendadas pelo OWL Working Group do W3C (World Wide Consortioum) relacionadas a web semântica, dentre elas o XML (Extensible Markup Language) e RDF (Resource Description Framework). Antes de falar sobre as novidades da OWL 2 vamos falar um pouco sobre suas subdivisões e sintaxe, a OWL é dividida em três sublinguagens:
- OWL Lite – suporte a usuários que necessitam de uma hierarquia de classificação e restrições simples.
- OWL DL – suporte a usuários que necessitam do máximo de expressividade da linguagem sem perder a plenitude computacional e o poder de decidibilidade e raciocínio da linguagem.
- OWL Full – suporte a usuários que necessitam do máximo de expressividade da linguagem, com uma liberdade sintática maior, mas sem garantias computacionais.
A utilização de cada uma depende da aplicação em que será utilizada, ou seja depende das necessidades da ontologia, a OWL-DL permite um nível maior de expressividade nas construções, assim como a OWL Full traz um melhor detalhamento, no entanto, a sublinguagem OWL Full é menos previsível ao se fazer inferências pois não existem implementações que façam uso completo de suas estruturas.
OWL 2
A nova versão da OWL diciona tanto poder quanto velocidade à linguagem: padroniza as características mais requisitadas por usuários desde a primeira versão e introduz o conceito de perfis(profiles), subconjuntos da linguagem que tem como intuito de melhorar a escalabilidade em aplicações específicas.
3.1. Tipo de Sintaxe
Existem várias sintaxes disponíveis para OWL e que servem para diferentes propósitos.
- Funcional: A sintaxe funcional foi criada para ser mais fácil quando se deseja especificar algo e para servir como base na criação de ferramentas como APIs e processadores de inferência(reasoners).
- RDF/XML: A sintaxe RDF/XML é simplesmente o padrão no formato RDF/XML, é a única das sintaxes que deve ser suportada obrigatoriamente por toda ferramenta OWL 2.
- Manchester: A sintaxe Manchester foi desenhada para ser mais fácil de ler por usuários com pouca afinidade com construções lógicas.
- XML: A sintaxe OWL XML é simplesmente a linguagem definida pelo esquema XML.
Através do uso de ferramentas existentes é possível converter de uma sintaxe para outra com relativa facilidade. Veja abaixo alguns trechos de exemplo da OWL 2 usando cada sintaxe mencionada.
OWL2 Functional Syntax
Ontology(<http://example.com/tea.owl>
Declaration( Class( :Tea ) )
)
OWL2 XML Syntax
<Ontology ontologyIRI=“http://example.com/tea.owl” …>
<Prefix name=“owl” IRI=“http://www.w3.org/2002/07/owl#”/>
<Declaration>
<Class IRI=“Tea”/>
</Declaration>
</Ontology>
3.2. Profiles
No OWL 2 existe o conceito de Profiles, que são sublinguagens (subconjuntos sintáticos) que oferecem vantagens dependendo do cenário em que será aplicado. Existem três diferentes profiles:
- OWL 2 EL: é mais adequado para aplicações onde ontologias muito grandes são necessárias, e onde o poder de expressividade pode ser trocado por garantias de performance. Permite a execução dos algoritmos de inferência com complexidade polinomial.
- OWL 2 QL: é adequado para casos de ontologias relativamente leves e voltadas à organização de um grande número de indivíduos. Útil para casos onde é necessário acessar os dados diretamente através de consultas relacionais (ex: SQL) . Complexidade logarítimica – LogSpace.
- OWL 2 RL: é adequado para casos de ontologias relativamente leves e voltadas à organização de um grande número de indivíduos. Útil para casos onde é necessário acessar os dados diretamente na forma de construções RDF. Permite a execução dos algoritmos de inferência com complexidade polinomial.
Qualquer uma destas sub linguagens é também uma ontologia OWL 2 e pode ser interpretada usando a semântica direta ou via RDF. Cada uma é mais restritiva que a OWL DL e definem diferentes aspectos do poder de expressão da OWL com diferentes benefícios computacionais e de implementação.
3.3. Relações com OWL 1
A estrutura geral da OWL 1 foi mantida, os principais blocos de construção da linguagem foram mantidos ou apenas renomeados. Mais importante, a compatibilidade com o padrão anterior foi pensado, ou seja, todas ontologias criadas em OWL 1 permanecem válidas com relação a OWL 2, com inferências praticamente idênticas em quase todos os casos.
A OWL 2 adiciona algumas melhorias e funcionalidades em comparação com OWL 1. Algumas delas trazem mais poder de expressividade, ajustes na sintaxe e poder de interoperabilidade, veja abaixo alguns exemplos de problemas da OWL 1 que foram resolvidos com a nova versão:
Qualified Cardinality Restrictions(QCR): OWL 1 permite a definição de uma entidade pessoa com pelo menos 3 filhos mas não permite especificar que uma pessoa com pelo menos 3 filhos do sexo masculino.
Chaves(Keys): não provê meios para especificar chaves primárias em propriedades, que é uma característica comum em bancos de dados.Por exemplo, em OWL 1 DL não é possível dizer que o cidadão BR é identificado unicamente por seu CPF.
Annotations: são pedaços de informação extra-lógica que descrevem a entidade ou ontologia. Na OWL 1 não era permitido a adição de anotações em axiomas, o que poderia ser necessário, por exemplo, para adicionar uma informação sobre quem criou o axioma.
Imports and Versioning: importação na OWL 1 é feita por “nome e local” onde está a OWL. O URI deve ter o mesmo nome da OWL mas como muitas vezes era necessário mudar de local isso trazia problemas.
Deu para perceber que o assunto é bem extenso e olha que o que comentei acima é apenas um resumão do negócio rsrsrs. No próximo post sobre ontologia espero poder trazer algo mais concreto e uma possível ontologia voltada a ambientes inteligentes. Até a próxima.
Referências
https://www.w3.org/2009/10/owl2-pr
https://www.w3.org/TR/2012/REC-owl2-primer-20121211/
Ontologias – OWL (Web Ontology Language) – Lima, Júnio César De;Carvalho, Cedric L. De; 2005.