Utilizando OWL com Jena

Propaganda
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.
Download