Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

22
Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas

Transcript of Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Page 1: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Protégé-OWL eJessTab

Adriano Melo

Monitoria Sistemas InteligentesProf. Fred Freitas

Page 2: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Agenda

Introdução Instalação JessTab Importar Ontologia OWL Manipular Elementos da Ontologia

Page 3: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Introdução

Ontologias são legais, mas.....

… sozinhas elas não podem fazer nada!

(Henrik Eriksson, Karl-Heinz Krempels) - [0]

Page 4: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 5: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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é

Page 6: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 7: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Instalação

Protégé-OWL 3.4 + Jess http://adrianomelo.com/proteje-owl-jess.zip

Page 8: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

Habilitando JessTab

Menu Project >>

Configure...

Page 9: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 10: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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>

Page 11: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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)

Page 12: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 13: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

função make-instance – exemplo 1

(make-instance sorvete_1 of http://www.co-ode.org/ontologies/pizza/2005/10/18/pizza.owl#IceCream)

Page 14: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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)

)

Page 15: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 16: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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))

Page 17: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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

Page 18: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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))

Page 19: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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))

Page 20: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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))

Page 21: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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)

)

Page 22: Protégé-OWL e JessTab Adriano Melo Monitoria Sistemas Inteligentes Prof. Fred Freitas.

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