protégé-owl e jesstab adriano melo monitoria sistemas inteligentes prof. fred freitas
TRANSCRIPT
Protégé-OWL eJessTab
Adriano Melo
Monitoria Sistemas InteligentesProf. Fred Freitas
Agenda
Introdução Instalação JessTab Importar Ontologia OWL Manipular Elementos da Ontologia
Introdução
Ontologias são legais, mas.....
… sozinhas elas não podem fazer nada!
(Henrik Eriksson, Karl-Heinz Krempels) - [0]
Motivação
Problemas relacionados ao Protégé Dificuldade de integrar diretamente a resolução de
problemas com a modelagem da ontologia Linguagens/shells precisam de acesso direto ao protégé
Dificuldade de administrar ontologias muito grandes/complexas Editores de ontologia poderiam ser programáveis
Protégé permite atravéz de sua API que motores de resolução de problemas sejam integrados a ele
Por que Jess e JessTab?
Jess Linguagem/shell popular Comunidade de usuários ativa Implementado em Java
JessTab Plug-in para rodar o Jess dentro do Protégé Integra os recursos do Jess e Protégé
Usos práticos do JessTab
Linguagem Cria classes facilmente Facilita fazer grandes mudanças na ontologia
Motor de Inferença Recuperação de Informações Classificação Suporte a decisão Planejamento
Instalação
Protégé-OWL 3.4 + Jess http://adrianomelo.com/proteje-owl-jess.zip
Habilitando JessTab
Menu Project >>
Configure...
Funções do jess com Protégé - [1]mapclass
mapinstance
unmapinstance
defclass
make-instance
initialize-instance
modify-instance
duplicate-instance
definstances
unmake-instance
slot-get
slot-set
slot-replace$
slot-insert$
slot-delete$
slot-facets
slot-types
slot-cardinality
slot-range
slot-allowed-values
slot-allowed-classes
slot-allowed-parents
slot-documentation
slot-sources
facet-get
facet-set
class
class-existp
class-abstractp
class-reactivep
superclassp
subclassp
class-superclasses
class-subclasses
get-defclass-list
class-slots
instancep
instance-existp
instance-name
instance-address
instance-addressp
instance-namep
slot-existp
slot-default-value
set-kb-save
get-kb-save
load-kb-definitions
load-project
include-project
save-project
jesstab-version-number
jesstab-version-string
get-knowledge-base
get-tabs
função mapclass
(mapclass <class-name> [nonreactive | reactive])
Mapeia uma classe do Protégé para o Jess. Gera o deftemplate que representa a classe Cria fatos que corespondem às instâncias do protégé
[nonreactive] => desabilita o mapeamento recursivo dos filhos da classe <class-name>
função mapclass - exemplo
(antes: abrir projeto pizza.owl.pprj) - [2]
(mapclass http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#DomainConcept)
(facts)
função make-instance
(make-instance [<instance-name>] of <class-name> <slot-override>* [map])
Cria uma instância do Projégé a partir do Jess <instance-name> = nome da instância (opcional) <class-name> = classe a ser instanciada <slot-override> = pares (slot valor) a serem
atribuidos à instância
função make-instance – exemplo 1
(make-instance sorvete_1 of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#IceCream)
função make-instance – exemplo 2
(bind ?m (make-instance massa-grossa of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#DeepPanBase))
(bind ?c (make-instance cobertura-mozzarella of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#MozzarellaTopping))
(make-instance pizza-queijo of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#CheeseyPizza
(http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#hasBase
?m)
(http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#hasTopping
?c)
)
função unmake-instance
(unmake-instance <instance-expression>+)
Deleta o indivíduo especificado <instance-expression> = um ou mais ponteiros
para instâncias ou nomes de indivíduos
função unmake-instance - exemplo
(defrule nao-tem-massa
(object
(is-a http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#Pizza)
(http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#hasBase )
(OBJECT ?o))
=>
(printout t "a pizza " ?o " nao tem massa, será apagada" crlf)
(unmake-instance ?o))
função defclass
(defclass <name> [<comment>] (is-a <superclass>+) [role] <slot>*)
Define uma nova classe do Protégé. <name> = especifica o nome da nova classe <superclass> = classes que a nova classe vai herdar
função defclass - exemplo
(defclass Pessoa
(is-a http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#DomainConcept)
(slot nome (type string))
(slot idade (type integer)))
(defclass PizzaQueijo (is-a http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#Pizza))
Exemplo – Pizza vs Tipo
(defrule tipo-de-massa
(object
(is-a http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#Pizza)
(http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#hasBase ?base)
(OBJECT ?o))
(object
(OBJECT ?base)
(is-a ?tipomassa))
=>
(printout t "a pizza " ?o " tem massa " ?base " e a massa é do tipo " ?tipomassa crlf))
Exemplo – Pizza do Usuário
(defrule inserir-pizza
?in <- (inserir-massa-grossa)
=>
(printout t "digite um nome de pizza depois um de massa..")
(assert (inserir pizza (read) massa (read)))
(retract ?in)
)
(assert (inserir-massa-grossa))
Exemplo – Pizza do Usuário (cont.)
(defrule criar-pizza
?in <- (inserir pizza ?pizza massa ?massa)
=>
(make-instance ?massa of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#DeepPanBase)
(make-instance ?pizza of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#Pizza (http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#hasBase ?massa))
(retract ?in)
)
Referências
JessTab & JessAgentTab Tutorial - [0] http://www.ida.liu.se/~her/JessTab/tutorial07/JessTabTutorial.ppt
JessTab Documentation - [1] http://www.ida.liu.se/~her/JessTab/JessTab.pdf
Ontologia de Pizzas - [2] http://www.cin.ufpe.br/~astm/si/pizza