Manipulação de uma ontologia desenvolvida em OWL através da

Propaganda
Manipulação de uma ontologia desenvolvida em OWL
através da utilização da API JENA 2 Ontology
Paulo Roberto Gonçalves1, Parcilene Fernandes de Brito1
1
Laboratorio de Inteligência Computacional – Centro Universitário Luterano de Palmas
(CEULP-ULBRA)
Qd. 1501-Sul – 77.000-000 – Palmas – TO – Brazil
{prg,pfb}@ulbra-to.br
Abstract. This article describes a theoretical recital on the language for
representation of OWL ontology and on the API Jena Ontology of the Java. It
demonstrates as the manipulation of a ontology developed in OWL in the Java
environment is made and describes the implementation of a module for a Web
Portal of Universities. It presents, still, methods for the inclusion of classes
and the creation of axioms.
Resumo. Este artigo descreve uma fundamentação teórica sobre a linguagem
para representação de ontologias OWL e sobre a API Jena Ontology do Java.
Demonstra como é feita a manipulação de uma ontologia desenvolvida em
OWL no ambiente Java e descreve a implementação de um módulo para um
portal Web de Universidades. Apresenta, ainda, métodos para a inclusão de
classes e para a criação de axiomas.
1. Introdução
O grande aumento da utilização da Web tem desencadeado o surgimento de novas
tecnologias. Com isso, procura-se melhorar a forma de representar e posteriormente
manipular as informações contidas nessa rede para atender seus usuários de uma forma
mais eficiente. A Web Semântica surge como um novo conceito para organização de
dados, tendo como objetivo a busca de um padrão capaz de suportar o entendimento
semântico das informações. Portanto, os documentos Web teriam, além da informação,
a estrutura do documento e as informações referentes ao seu contexto.
A descrição desse contexto é feita por meio do conceito de metadados. Como os
documentos Web precisam de metadados para expressar o seu valor semântico, é
preciso utilizar uma linguagem que faça a descrição de tais informações. Tem-se assim
o padrão RDF (Resource Description Framework) [Beckett e McBride 2004], que foi
criada para definir uma padronização da representação e do uso de metadados na Web.
Mas a padronização dos dados não é o bastante para a Web Semântica. É preciso que
se tenha fontes comuns de informações, sendo um vocabulário de dados organizado para cada
domínio de aplicação. Por isso surge a necessidade de compreender o conceito de Ontologias.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
O objetivo desse artigo é a manipulação de uma ontologia desenvolvida em
OWL utilizando a API Jena da Linguagem de Programação Java. Para isso, serão
tratados especificamente os métodos da API Jena 2 Ontology. Esta linguagem permite
que os documentos sejam estruturados utilizando todos os recursos do padrão RDF,
acrescentando, ainda, outras propriedades. Assim, é possível a criação de classes mais
complexas, ou seja, é possível representar classes disjuntas, intersecção de classes,
dentre outras propriedades.
Este artigo está estruturado da seguinte forma: a seção 2 exibe os principais
conceitos da linguagem OWL; a seção 3 descreve a API Jena utilizada para o
desenvolvimento; a seção 4 apresenta como é feita a manipulação de ontologias. Na
seção 5 são apresentados a definição dos métodos e axiomas criados para a
manipulação, na seção 6 encontra-se as considerações finais acerca do trabalho.
2. OWL (Web Ontology Language)
Segundo uma visão filosófica, o termo ontologia é definido por Aristóteles como sendo
uma concepção de tudo aquilo que pode “existir” ou “ser”. Mas na área da Informática,
mais precisamente em Inteligência Artificial, Grubber (1999) define uma ontologia como
sendo “a especificação de uma conceitualização”. Guarino (1998) já estende essa definição ao
afirmar que uma ontologia é na verdade “uma especificação parcial e explícita que tenta, da
melhor forma possível, aproximar a estrutura de mundo definida por uma conceituação”.
Assim, uma ontologia é uma descrição explícita de conceitos e relações referentes a um
determinado domínio. Essa conceitualização refere-se ao conjunto de conceitos, relações,
objetos e restrições que são definidos para um modelo semântico de algum domínio de
interesse [Lustosa 2003].
A OWL é uma especificação de uma linguagem para ontologias desenvolvida
pela W3C, faz parte da crescente lista de recomendações da W3C relacionadas ao
desenvolvimento da Web Semântica. Esta linguagem oferece mecanismos para
representar explicitamente o significado dos termos e dos relacionamentos entre estes
termos [Smith et al. 2004].
A OWL deriva de outras duas linguagens, a OIL (Ontology Inference Layer) e a
DAML (DARPA Agent Markup Language). A OIL foi a primeira destas linguagens, e teve
como principal requisito a facilidade de adoção por parte dos desenvolvedores, servindo
principalmente à comunidade ligada à Web semântica [Horrocks et al. 2000]. Mais adiante as
duas foram unidas, criando a linguagem DAML+OIL. A figura 1 mostra a origem da
linguagem OWL.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Figura 1. Origem da Linguagem OWL
Na figura 1 pode-se observar que a linguagem OWL possui as características do RDF e
um vocabulário maior que a DAML+OIL, oferecendo assim mais recursos para utilização.
Com isso, a OWL é projetada para ser utilizada por aplicações que necessitam realizar o
processamento do significado das informações antes de apresentá-las aos usuários
[Smith et al. 2004]. A OWL é utilizada para representar vocabulários e os
relacionamentos existentes entre as entidades desses vocabulários, permitindo a
descrição de classes e propriedades.
Os recursos que a linguagem OWL oferece são divididos em três sublinguagens
[Smith et al. 2004]:
•
OWL Lite suporta usuários que precisam de uma hierarquia de
classificação e funcionalidades de restrições simples. Por exemplo: a
OWL Lite suporta cardinalidade, mas só permite os valores 0 e 1. Ela se
torna mais fácil de ser implementada em uma ferramenta e faz com que a
transição de outros modelos de vocabulários e taxonomias para OWL
seja mais rápida.
•
OWL DL suporta usuários que precisam de máxima expressividade ao
mesmo tempo em que seus sistemas mantêm a completude (garantia que
todas as conclusões serão executadas) e decidibilidade (todos os cálculos
terminarão em tempo finito) do sistema. A OWL DL inclui todos os
artefatos da linguagem OWL, mas impõem restrições quanto a utilização.
•
OWL Full para usuários que desejam a máxima expressividade e a
liberdade sintática do RDF. A OWL Full permite que uma ontologia
aumente o significado do vocabulário (RDF ou OWL) predefinido. Não é
esperado que nenhum software suporte todas as características da OWL
Full.
OWL Full pode ser vista como uma extensão da RDF, enquanto OWL Lite e
OWL DL são extensões de uma visão delimitada de RDF. Portanto, cada uma destas
sublinguagens é uma extensão de seu predecessor mais simples.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
3. Jena
Jena é uma API para a linguagem de programação Java, desenvolvida por Brian
McBride da Hewlett-Packard, usada na criação e manipulação de grafos RDF.
A API Jena possui objetos, classes para representar os modelos, recursos,
propriedades e literais do RDF. As interfaces representando recursos, propriedades e
literais são chamadas Resource, Property e Literal, respectivamente. Em Jena, um grafo
RDF é chamado de modelo e é representado pela interface Model.
A primeira versão da API Jena possui métodos para a manipulação de ontologias
em DAML+OIL, enquanto que na segunda versão foram desenvolvidos métodos que
permitem a manipulação em ontologias RDFS e OWL. A API DAML da Jena teve
muito pouco suporte para desenvolvimento de ontologias com a semântica da linguagem
DAML.
Para o suporte a manipulação de ontologias, a segunda versão da API Jena
possui um pacote específico, chamado: API Jena 2 Ontology. Nesse pacote existem
classes para a manipulação de ontologias em RDFS, DAML+OIL e OWL. Para o
suporte a essas linguagens de ontologias a API possui as seguintes classes: OntClass e
ObjectProperty.
Para cada uma das linguagens de ontologias existe um parâmetro que permite a
construção de URI’s de classes e propriedades. Cada parâmetro possui uma sintaxe
diferente, por exemplo, no parâmetro da linguagem DAML, o URI para uma
propriedade do objeto é daml:ObjectProperty e na linguagem OWL é
owl:ObjectProperty. Já no RDFS, o parâmetro é nulo, pois neste padrão não se definem
propriedades para os objetos. Cada linguagem de ontologia possui suas próprias
características, limitada ao seu modelo de ontologia, mas todas estendem a versão do
modelo de classes da Jena.
Um modelo de ontologia é uma extensão do modelo RDF da Jena que fornece
capacidades para a manipulação de ontologias. Os modelos de ontologia são criados por
meio do Jena ModelFactory. A maneira mais simples de se criar um modelo de
ontologia é utilizando a classe OntModel proveniente do pacote de ontologias da Jena.
Além da capacidade simples de ler documentos, o modelo de ontologias possui
algumas capacidades adicionais, como fazer o tratamento de reusabilidade e importar
diferentes tipos de documentos. Na OWL e na DAML tem-se uma classe individual
Ontology que contém meta-dados sobre o documento. A figura 2 mostra o exemplo da
classe Ontology em um documento OWL.
Figura 2. Exemplo da Classe Ontology
Para o acesso e manipulação de ontologias, a Jena possui o pacote
com.hp.hpl.jena.ontology que faz a representação da ontologia em RDF. As linguagens
de ontologias trabalhadas nesse pacote são a OWL e a DAML+OIL.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Os recursos oferecidos por esse pacote para a manipulação de ontologias podem
ser encontrados em [Jena 2003].
4. Manipulação de Ontologias
A ontologia utilizada está relacionada com um módulo para um portal Web de
Universidades. Essa ontologia apresenta os relacionamentos existentes entre os cursos,
disciplinas e turmas. Para que se tenha um melhor entendimento acerca da ontologia
utilizada, a figura 3 apresenta a modelagem feita por [Lustosa 2003] para a ontologia.
Figura 3. Modelagem da Ontologia Universidade (Lustosa 2003)
Essa ontologia foi desenvolvida por [Lustosa 2003], que utilizou a ferramenta de
edição de ontologias Protégé 2.0, gerando assim um código OWL. Para que fosse
possível a manipulação no ambiente Java da ontologia “Universidade”, primeiro foi
necessário fazer uma modificação no cabeçalho do código OWL, para que a Jena fosse
capaz de interpretá-la de forma correta. As figuras 4 e 5 demonstram como foi feita essa
modificação.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Figura 4. Cabeçalho da Ontologia Universidade de [Lustosa 2003]
Figura 5. Cabeçalho da Ontologia Universidade Modificado
A figura 4 apresenta o cabeçalho original da ontologia, destacando a parte em
que a ferramenta Protégé, utilizada no desenvolvimento, coloca seu namespace. Na
figura 5, pode-se observar que o namespace destacado na figura 4 foi retirado e
acrescentados outros três namespaces para que a Jena pudesse carregar o código
especificado, assim foi possível fazer manipulações acerca dessa ontologia.
Ao gerar o código RDF da ontologia Universidade, utilizando a API Jena, foi
observada a diferença entre os dois. A seguir serão apresentados exemplos do código
RDF Jena gerado e do original OWL.
Uma classe simples criada na ontologia original é visualizada como mostra a
figura 6 e a mesma classe feita por meio da API Jena é mostrada na figura 7.
Figura 6. Classe criada em OWL
Figura 7. Classe criada em RDF
Verificou-se que classes criadas por meio da Jena apresentam códigos RDF mais
extensos e complexos do que aquelas definidas diretamente na linguagem OWL. Isso
ocorre, especialmente, quando são utilizadas classes complexas (intersectionClass,
unionClass etc).
5. Definição dos métodos para manipulação da ontologia
5.1 Inserção de novas classes
Foi observada a necessidade de novas classes para a ontologia. Para isso, foi
implementado um método que permite a criação de uma nova subclasse para uma classe
já existente. O método explicitado mostra a criação de uma nova classe chamada
“Administrativo”, que é subclasse da classe “Funcionario”. A figura 8 mostra a classe
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
“Administrativo” acrescentada a ontologia “Universidade”. A classe “Administrativo”
foi agregada na ontologia por se ter verificado que a classe “Funcionario” poderia ser
subdividida em categorias como “administrativo” e “professor”.
Figura 8. Classe Administrativo acrescentada na Ontologia Universidade
Figura 9. Código em Java da Criação e Adição da Classe Administrativo na Ontologia
Na figura 9 é apresentado o código, em java, referente à criação da classe
“Administrativo”. Na linha 1, da figura 9, é criado um modelo simples de Ontologia; na
linha 3 esse modelo de ontologia criado vai receber uma ontologia já pronta, a ontologia
Universidade. Com a ontologia carregada pode-se fazer a manipulação dos seus
elementos através dos recursos que a Jena oferece. Ainda na figura 9, tem-se a criação
da classe “Administrativo”, que é adicionada ao modelo de ontologia carregado.
Primeiramente é preciso buscar a classe “Funcionario” para que se possa adicionar a
classe “Administrativo” como uma subclasse de “Funcionario”. Na linha 10, cria-se
uma lista com as classes existentes na ontologia; na linha 11 cria-se um objeto OntClass
que recebe cada classe para se fazer a verificação apresentada na linha 12 (até que se
encontre a classe “Funcionario”). Uma nova classe é criada na linha 13 (classe
“Administrativo”) e, na linha 14, esta classe é adicionada à classe “Funcionario” por
meio do método addSubClass().
5.2 Criação de axiomas
Através da modelagem realizada foi possível estabelecer novos axiomas para a
ontologia. Esses axiomas são definidos como classes complexas. Ou seja, são as
verdades estabelecidas para o domínio. A classe “FuncionarioGeral” é a união da classe
“professor” e da classe “administrativo”. O código referente a essa união pode ser
analisado na figura 10.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Figura 10. Exemplo da União de duas Classes da Ontologia Universidade em Java
Conforme observado no exemplo acima, as relações existentes nas subclasses
fornecem circunstâncias de necessidade entre elas. Por exemplo, para ser um professor,
um indivíduo necessita também ser um funcionário.
Outro axioma criado tem relação com a classe “departamento”. A necessidade
dos axiomas de departamentos foi observada a partir de um melhor entendimento do
próprio domínio. Assim, foram adicionadas classes de departamentos separadas, como
“DepartamentoDeInformatica” e “DepartamentoDeEngenharias”. Mas cada classe
criada precisava ter suas instâncias definidas, por isso foi necessário criar um objeto do
tipo EnumeratedClass que define quais instâncias compõem uma determinada classe. A
figura 11 mostra o código referente à criação dessas classes.
Figura 11. Exemplo de EnumeratedClass
Assim de acordo com o código apresentado na figura 11, é estabelecido que
nenhum outro indivíduo, além daqueles que foram especificados nas classes, podem
pertencer
aos
conjuntos
“DepartamentoDeInformatica”
e
“DepartamentoDeEngenharias”.
6. Considerações Finais
O objetivo desse trabalho foi o entendimento mais aprofundado da API Jena 2 Ontology
para a manipulação de ontologias. Assim, foi mostrada a fundamentação teórica que deu
suporte para a implementação das modificações feitas na ontologia, descrevendo as
características relevantes ao desenvolvimento do mesmo.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Além do aspecto inicial de estudos das teorias que foram necessárias para a
realização do trabalho, foram realizados vários testes de implementação utilizando os
métodos da API Jena 2 Ontology para o entendimento de como é possível a
manipulação de uma dada ontologia. Esses testes foram detalhados de forma a
possibilitar uma maior compreensão da teoria e da própria API.
A API Jena apresenta inúmeros recursos que, aliados à linguagem de
programação Java, acelera e facilita a implementação de ontologias. Isso, acrescentado
ao fato da linguagem já oferecer pacotes contendo várias classes e interfaces.
A inclusão de novas classes e axiomas trouxe para a ontologia uma melhor
capacidade de inferência semântica. Assim, a ontologia poderá responder a um número
maior de questões a partir de definições existentes no seu próprio domínio.
Como trabalhos futuros, pode-se pensar na criação de um ambiente que
possibilite o desenvolvimento de ontologias com uma interface gráfica bem definida. A
linguagem Java fornece recursos para a criação de interfaces gráficas bastante
completas, sendo que a API Jena Ontology possui recursos específicos para a criação de
ontologias. Desta forma, é possível desenvolver uma interface que permita ao usuário a
construção e manipulação de ontologias. A existência de poucos editores de ontologias
estimula a realização de trabalhos relacionados a essa linha de pesquisa, pois pode-se
verificar as deficiências encontradas nesses editores e melhorá-las, tornando-os mais
eficientes.
Referências
Beckett, D. and McBride, B. (2004) “RDF/XML Syntax Specification (Revised)”,
http://www.w3.org/TR/rdf-syntax-grammar/, Fevereiro.
Grubber, T. (1999) “What is Ontology?”, http://www-ksl.stanford.edu/kst/what-is-naontology.html, Novembro.
Guarino, N. (1998) “Formal Ontology and Information Systems”,. In Formal Ontology
in Information Systems (FOIS’98), Trento, Itália.
Horrocks, I. , Fensel, D., Broekstra, J., Decker, S., Erdmann, M., Goble, C., Harmelen ,
F., Klein, M., Staab, S., Studer, R., Motta, E. (2000) . “The Ontology Inference Layer
Oil”, http://www.ontoknowledge.org/oil/TR/oil.long.html, Março.
Jena (2003) “Jena 2 Ontology API”, http://jena.sourceforge.net/ontology/, Novembro.
Lustosa, P. A., (2003) “OWL e Protégé: estudo e aplicação de conceitos para
exemplificação da definição da camada de esquema da Web Semântica em um
determinado domínio”, Trabalho de Conclusão de Curso. Curso de Bacharel em
Sistemas de Informação, Palmas.
Smith, M. K., Welty, C. and McGuinness, D. L. (2003) “OWL Web Ontology Language
Guide”, http://www.w3.org/TR/2003/CR-owl-guide-20030818, Agosto.
VI Encontro de Estudantes de Informática do Estado do Tocantins – ENCOINFO 2004 – 4 e 5 de novembro de 2004
CEULP/ULBRA – Curso de Sistemas de Informação – Palmas – TO
Download