220 likes | 336 Views
Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas. Protégé-OWL e JessTab. 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!
E N D
Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas Protégé-OWL eJessTab
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
HabilitandoJessTab Menu Project >> Configure...
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 Funções do jess com Protégé - [1] 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 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
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