Utilizando OWL com Jena Angelo Augusto Frozza Rodrigo Gonçalves Jena Framework para Web Semântica Laboratório de Web Semântica da HP Linguagem Java Suporte a RDFS, DAML+OIL, OWL Inferências (reasoners) Objetivos do estudo de caso Conhecer o framework Jena Características principais Como utilizá-lo em aplicações Como manipular ontologias Criando ontologias OntModel ontologia = ModelFactory.createOntolo gyModel (URIdaOntologia); OntModel ontologia = ModelFactory.createOntolo gyModel (ProfileRegistry. OWL_LITE_LANG); Constante Representação DAML_LANG DAML+OIL OWL_DL_LANG OWL-DL OWL_LANG OWL-Full OWL_LITE_LANG OWL-Lite RDFS_LANG RDFS Carregando ontologias Método read Arquivos Streams de dados Endereços na Web Suporte a ontologias inclusas OntModel m = ModelFactory.createOntologyModel(); OntDocumentManager dm = m.getDocumentManager(); dm.setProcessImports(false); Manipulando Ontologias Recursos Todo item de uma ontologia (classe, indivíduo) Propriedades versionInfo, comment, label, seeAlso, sameAs Métodos padronizados para adicionar, remover e listas as propriedades (add, remove, list) Manipulando ontologias - Classes Recuperando uma classe Criando uma classe OntClass camera = m.getOntClass( camNS + "Camera" ); OntClass pinCamera = m.createClass( camNS + "PinholeCamera" ); Propriedades subClass, superClass, equivalentClass, etc. Manipulando ontologias - classes Listando subclasses OntClass camera = m.getOntClass( camNS + "Camera" ); for (Iterator i = camera.listSubClasses(); i.hasNext(); ) { OntClass c = (OntClass) i.next(); System.out.print( c.getLocalName() + " " ); } Manipulando ontologias - propriedades Propriedades subProperties, domain, range, inverse Criando uma propriedade OntModel newM = ModelFactory.createOntologyModel(); OntClass Camera = newM.createClass( camNS + "Camera" ); OntClass Body = newM.createClass( camNS + "Body" ); ObjectProperty part = newM.createObjectProperty( camNS + "part" ); ObjectProperty body = newM.createObjectProperty( camNS + "body" ); body.addSuperProperty( part ); body.addDomain( Camera ); body.addRange( Body ); Manipulando ontologias - propriedades Propriedades simétricas, transitivas, funcionais Restrições Valores possíveis, cardinalidades Manipulando Ontologias - Indivíduos Método createIndividual() da classe (OntClass) Individual ind = ontologia.createIndividual(classeCaminhao); ind.addProperty(temNome, “Ford"); Manipulando Indivíduos – Inferências Reasoners Conjunto padrão disponibilizado pelo Jena Inferências OntModel ontologia = carregarOntologia(); InfModel modelo = ModelFactory.createInfModel(ontologia.getReasoner(), ontologia); Resource ie = modelo.getResource(prefix + "InstituicaoDeEnsino"); Resource ufsc = modelo.getResource(prefix + "UFSC"); if (modelo.contains(ufsc, RDF.type, ie)) { System.out.println("UFSC é uma instituição de ensino"); } Conclusões Jena Ferramente poderosa Linguagem Java Uso requer domínio sobre ontologias Documentação direcionada a experientes no uso de ontologias Tutoriais auxiliam o uso Referências Esta introdução ao Jena e OWL foi baseada nos tutoriais “Jena 2 Inference support” e “Jena 2 Ontology API” disponíveis na documentação do Jena.