Protg - OWL
Ejemplo de las Pizzas
http://ontologias.blogs.upv.es
Basado en los tutoriales de
Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.)
y el de la web de PROTG
Protg - OWL
Ejemplo de las Pizzas
http://ontologias.blogs.upv.es
Basado en los tutoriales de
Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.)
y el de la web de PROTG
La Web Semntica
Ontologas compartidas ayudan al intercambio
de datos y significados entre servicios web
(Image by Jim Hendler)
Agentes y
ontologas
Ontologa: expresada en un leng. de
formalizacin de ontologas
independiente del contexto de uso
Varios agentes pueden compartir
conocimiento si estn de acuerdo en la
semntica de una cierta ontologa
Una ontologa comn define el vocabulario
con el que los agentes intercambian
mensajes (consultas y asertos)
3
Agentes y
ontologas
Dos agentes comparten un vocabulario no es:
Compartir la misma base de conocimiento
Capaces de contestar cualquier pregunta
formulada con ese vocabulario
Que un agente use una cierta ontologa
garantiza la consistencia pero no la
completitud respecto a las consultas y
asertos utilizando la ontologa
Revisin de OWL
OWL
Web Ontology Language
es un estndar W3C
viene en 3 sabores (lite, DL y full)
usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lgica de Primer Orden
se encuentra generalmente en sintaxis RDF/XML
es por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
Revisin de OWL
OWL
Web Ontology Language
es un estndar W3C
viene en 3 sabores (lite, DL y full)
usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lgica de Primer Orden
se encuentra generalmente en sintaxis RDF/XML
es por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
OWL Constructs
Persona
Pas
= clase (concepto)
Animal
OWL Constructs
Persona
Pas
Elvis
Belgium
Holger
Paraguay
Kylie
= clase (concepto)
Latvia
S.Claus
China
Hai
= individuo (instancia)
Flipper
Animal
Rudolph
OWL Constructs
en
vive_
Persona
Pas
Elvis
Belgium
vive_en
Holger
Paraguay
Kylie
= clase (concepto)
Latvia
S.Claus
China
Hai
vive_en
n
tie
a
ot
sc
ma
e_
a
ot
asc
_m
ne
tie
= individuo (instancia)
Flipper
Animal
Rudolph
= propiedad (relacin)
Escenario del
Ejemplo del Vino
Dime qu vinos debera
comprar para servir con cada
plato del siguiente men.
Books Agent
Wine Agent
Grocery Agent
Escenario del
Ejemplo del Vino
Dime qu vinos debera
comprar para servir con cada
plato del siguiente men.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
Escenario del
Ejemplo del Vino
Dime qu vinos debera
comprar para servir con cada
plato del siguiente men.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
Escenario del
Ejemplo del Vino
Dime qu vinos debera
comprar para servir con cada
plato del siguiente men.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
Protg
Es gratis, open source
Est basado en Java, es extendible
Es un editor de ontologas y marco
de trabajo de bases de conocimiento
Define la estructura de una
ontologa
Define y administra instancias
8
Protg
Integrado con GUI y plugins:
OWLWizard Plugin para guiar paso a paso
en la construccin de clases, propiedades, etc.
OWLViz Plugin para el despliegue grfico de
las jerarquas de las clases
ezOWL Plugin para el despliegue grfico de
las jerarquas de las clases, las propiedades y
restricciones de cada clase
JADEBean Generator Plugin para producir
clases Java a partir de la ontologa, para que
JADE puede utilizar y entender la ontologa
9
Instalacin
Instalar Protg 4.2 beta
Instalar Graphviz 2.28.0 (http://
www.graphviz.org)
Configurar Graphviz en las
opciones de OWLViz de Protg.
Ejemplo:
Ontologa de Pizzas
Ejemplo:
Ontologa de Pizzas
Ejemplo:
Ontologa de Pizzas
Ejercicio 1: Crear
una nueva ontologa
Iniciar Protg
Ontology IRI
URI (Uniform Resource
Identifiers): estndar para
identificar recursos
(documentos, personas,
cosas abstractas) y
nombres de relaciones.
IRI (Internationalized
Resource Identifiers):
URIs + caracteres
alfabticos no-latinos
(Unicode en lugar de
ASCII).
Men File / Save as... permite guardar en la ontologa que se va creando,
usando diversos formatos (OWL/XML).
Ejercicio 2: Aadir
una anotacin
Vista de las clases
Ejercicio 3:
Crear clases
Pulsar botn Classes.
Pulsar botn Add:
crea una nueva
subclase de la clase
seleccionada (en este
caso :Thing)
Crear, repitiendo este
proceso, las clases:
Pizza, PizzaTopping
y PizzaBase.
Clases Disjuntas
OWL asume que las clases solapan
Pizza
PizzaTopping
= individual
Un individuo podra ser a la vez una Pizza y un
PizzaTopping a la vez
ste no es el caso
Ejercicio 4: Clases
disjuntas
1. Seleccionar la clase Pizza in la
jerarqua de clases.
2. Hacer disjuntas las tres clases
usando el botn Clases Disjuntas
en la vista de descripcin de
clases.
Ejercicio 5: Create
Class Hierarchy
Crear
FinaYCrujiente y
PanGrueso como
subclases de
PizzaBase
Usar la opcin del
men Tools /
Create Class
Hierarchy
Make all primitive siblings disjoint
Ejercicio 6: Create
Class Hierarchy
Crear como
subclases de
PizzaTopping
Aadir Topping
como sufijo de todas
las subclases: Suffix
all in list with
rbol indentado por
tabs para entrar una
jerarq. de clases.
Make all new classess disjoint
Ejercicio 6: Create
Class Hierarchy
Crear como subclases
de PizzaTopping
Aadir Topping
como sufijo de todas
las subclases: Suffix
all in list with
rbol indentado por
tabs para entrar una
jerarq. de clases.
Make all primitive siblings disjoint
Qu tenemos?
rbol de clases disjuntas
Esta separacin se hereda hacia abajo
en el rbol. Ej.: algo que es un
TomateTopping no puede ser una
Pizza porque su superclase,
PizzaTopping, es disjunta de Pizza.
Qu echamos de
menos?
No es un modelo enriquecido semnticamente.
Aparte de es un tipo de y no es un tipo de, no hay
otra informacin de inters.
Queremos decir ms cosas sobre los individuos Pizza,
tal como su relacin con otros individuos.
Esto se puede hacer con propiedades.
Pizza
PizzaTopping
= individual
Propiedades de
OWL
Object properties: enlazan
individuos.
Datatype properties
Annotation properties
Ejercicio 7: Crear
propiedad del Objeto
Pulsar el botn Object
Properties.
Pulsar el botn Add
Object Property, para
aadir la propiedad
tieneIngrediente
Ejercicio 7: Crear
propiedad del Objeto
Pulsar el botn Object
Properties.
Pulsar el botn Add
Object Property, para
aadir la propiedad
tieneIngrediente
Pulsar el botn Domains
(intersection) para
indicar que el dominio de
esta propiedad es Pizza.
Ejercicio 8: Crear
sub-propiedades
Crear tieneTopping y
tieneBase como subprops. de
tieneIngrediente
Seleccionar la propiedad
tieneIngrediente en la
jerarqua de
propiedades.
Pulsar el botn Add
subproperty.
Ejercicio 9: Crear
propiedades inversas
Crear props. inversas:
esIngredienteDe inversa
de tieneIngrediente
esBaseDe inversa de
tieneBase
esToppingDe inversa de
tieneTopping
Usar el icono Add de Inverse
Properties en la vista
Properties Description.
Tipos de
Propiedades de OWL
Un individuo con una
propiedad funcional tendr
como mucho un
individuo relacionado
con l por dicha propiedad
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Ejercicio 10: Hacer funcional
la propiedad tieneBase
1. Seleccionar la propiedad tieneBase
en la jerarqua de propiedades en
Object Properties.
2. Marcar el tick Functional en el
Property Characteristics View.
Tipos de
Propiedades de OWL
Un individuo con una
propiedad inversa funcional
indica que la propiedad
inversa es funcional
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Tipos de
Propiedades de OWL
Una propiedad transitiva
que relaciona un individuo
a con b, y esa misma
propiedad relaciona b con
c, se infiere que a y c estn
relacionados por dicha
OWL-DL no permite que las propiedades de tipo de
propiedad
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Ejercicio 10: Hacer
transitiva la propiedad
tieneIngrediente
1. Seleccionar la propiedad tieneIngrediente
en la jerarqua de propiedades en Object
Properties.
2. Marcar el tick Transitive en el Property
Characteristics View.
3. Seleccionar la propiedad esIngredienteDe,
inversa de tieneIngrediente, marcarla
como transitiva.
Tipos de
Propiedades de OWL
Una propiedad simtrica
relaciona un individuo a
con b, entonces b est
relacionado con a por
dicha propiedad
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Tipos de
Propiedades de OWL
Una propiedad asimtrica
relaciona un individuo a
con b, entonces b no
puede estar relacionado
con a por dicha propiedad
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Tipos de
Propiedades de OWL
Una propiedad reflexiva
relaciona un individuo
consigo mismo
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Tipos de
Propiedades de OWL
Una propiedad irreflexiva
relaciona un individuo con
otro individuo que no
puede ser l mismo
OWL-DL no permite que las propiedades de tipo de
datos sean transitivas, simtricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos slo son
Allows for multiple values y Inverse Functional.
Dominios y Rangos
de Propiedades
Propiedades enlazan individuos del
Dominio con individuos del Rango.
Ejercicio 11: Especificar
Dominio y Rango de las
propiedad tieneTopping
1. Seleccionar la propiedad tieneTopping
en la jerarqua de propiedades en
Object Properties.
2. Usar Add al lado de Domains
(intersection) para aadir Pizza.
3. Usar Add al lado de Ranges
(intersection) para aadir
PizzaTopping.
4. Aadir a esToppingDe como Dominio
PizzaTopping y como Rango Pizza
Ejercicio 11: Especificar
Dominio y Rango de las
propiedad tieneBase
1. Seleccionar la propiedad tieneBase en
la jerarqua de propiedades en Object
Properties.
2. Usar Add al lado de Domains
(intersection) para aadir Pizza.
3. Usar Add al lado de Ranges
(intersection) para aadir PizzaBase.
4. Aadir a esBaseDe como Dominio
PizzaBase y como Rango Pizza
Restricciones
Restricciones de cuantificacin
Restricciones de cardinalidad
Restricciones tieneValor
Restricciones
Crear restriccin
Se ven y se editan
usando la vista de
descripcin de
Clases.
Restricciones de
Cuantificacin
Restricciones Existenciales
Restricciones Universales
Restricciones de
Cuantificacin
Restricciones Existenciales
describen clases de individuos que participan en al
menos una relacin en una propiedad especfica para
miembros de una clase determinada.
Restricciones Universales
describen clases de individuos que para una determinada
propiedad slo tienen relaciones con miembros de una
clase particular.
Ejercicio 12: Aadir
restriccin a la clase Pizza
1. Seleccionar la clase Pizza en la jerarqua de clases.
2. Pulsar Add de SubClass Of de la vista de descripcin de clases.
3. Pulsar el botn Class expression editor.
4. Introducir la restriccin (usar TAB para autocompletar): Una
Pizza DEBE tener una PizzaBase
4.1. Propiedad
tieneBase
4.2.Tipo de restriccin (some - existenc.; only - univ.).
4.3.Filtro para la restriccin.
PizzaBase
Condicin NECESARIA
SIGNIFICADO: Restricciones especifican
superclases annimas de la clase descrita.
some
Ejercicio 13: Crear
nuevos tipos de Pizza
1. Crear una subclase de Pizza llamada
PizzaConNombre.
2. Crear una subclase de PizzaConNombre
llamada PizzaMargarita.
3. Aadir un comentario a la clase
PizzaMargarita usando la vista
Annotations: Una pizza que slo tiene
Mozzarella y Tomate.
Ejercicio 14: Crear
restriccin
Restriccin existencial (some):
Una PizzaMargarita tiene al
menos un MozzarellaTopping.
Ejercicio 15: Crear
restriccin
Restriccin existencial (some):
Una PizzaMargarita tiene al
menos un TomateTopping.
Ejercicio 16: Crear
clase PizzaAmericana
1. Crear un duplicado de la
PizzaMargarita que ser la
PizzaAmericana.
2. Aadir a la PizzaAmericana la
restriccin existencial de que tiene
al menos un topping de pepperoni.
Ejercicio 16: Crear clase
PizzaAmericana y PizzaSoho
1.
Crear un duplicado de la PizzaAmericana que ser la
PizzaAmericanaPicante.
2.
Aadir a la PizzaAmericanaPicante la restriccin
existencial de que tiene al menos un topping de pimiento
jalapeo.
3.
Crear un duplicado de la PizzaMargarita que ser la
PizzaSoho.
4.
Aadir a la PizzaSoho las restricciones existenciales de que
tiene al menos un topping de oliva y uno de parmesano.
5.
Usar la opcin de men Edit / Make primitive siblings
disjoint, para hacer disjuntos todos los nuevos tipos de
pizza.