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