Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas
1. Protégé - OWL
Ejemplo de las Pizzas
Basado en los tutoriales de
Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.)
http://ontologias.blogs.upv.es y el de la web de PROTÉGÉ
2. Protégé - OWL
Ejemplo de las Pizzas
Basado en los tutoriales de
Matthew Horridge (CO-ODE),
Holger Knublauch (Stanford Univ.)
http://ontologias.blogs.upv.es y el de la web de PROTÉGÉ
3. La Web Semántica
Ontologías compartidas ayudan al intercambio
de datos y significados entre servicios web
(Image by Jim Hendler)
4. Agentes y
ontologías
Ontología: expresada en un leng. de
formalización de ontologías
independiente del contexto de uso
Varios agentes pueden compartir
conocimiento si están de acuerdo en la
semántica de una cierta ontología
Una ontología común define el vocabulario
con el que los agentes intercambian
mensajes (consultas y asertos)
3
5. Agentes y
ontologías
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 ontología
garantiza la consistencia pero no la
completitud respecto a las consultas y
asertos utilizando la ontología
4
6. Revisión de OWL
OWL…
Web Ontology Language
es un estándar W3C
viene en 3 sabores (lite, DL y full)
– usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lógica de Primer Orden
se encuentra generalmente en sintaxis RDF/XML
es por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
7. Revisión de OWL
OWL…
Web Ontology Language
es un estándar W3C
viene en 3 sabores (lite, DL y full)
– usamos OWL DL (Description Logic)
DL = decidable fragmento decidible de la Lógica de Primer Orden
se encuentra generalmente en sintaxis RDF/XML
es por lo tanto laborioso escribirlo a mano
Por eso existen herramientas para ayudarnos
9. OWL Constructs
Persona País
Elvis
Belgium
Holger
Paraguay
Kylie
= clase (concepto)
Latvia
S.Claus China
Hai
= individuo (instancia)
Flipper
Animal
Rudolph
10. OWL Constructs
en
Persona vive_ País
Elvis
Belgium
Holger vive_en
Paraguay
Kylie
= clase (concepto)
Latvia
S.Claus China
Hai
= propiedad (relación)
vive_en
= individuo (instancia)
tie
ne
_m
tie
asc
e_n
ot
Flipper
a
ma
sc
ot
a
Animal
Rudolph
11. Escenario del
Ejemplo del Vino
Dime qué vinos debería
comprar para servir con cada
plato del siguiente menú.
Books Agent
Wine Agent
Grocery Agent
12. Escenario del
Ejemplo del Vino
Dime qué vinos debería
comprar para servir con cada
plato del siguiente menú.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
13. Escenario del
Ejemplo del Vino
Dime qué vinos debería
comprar para servir con cada
plato del siguiente menú.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
14. Escenario del
Ejemplo del Vino
Dime qué vinos debería
comprar para servir con cada
plato del siguiente menú.
Books Agent
Wine Agent
Yo recomiendo
Chardonney o
DryRiesling
Grocery Agent
15. Protégé
Es gratis, open source
Está basado en Java, es extendible
Es un editor de ontologías y marco
de trabajo de bases de conocimiento
Define la estructura de una
ontología
Define y administra instancias
8
16. Protégé
Integrado con GUI y plugins:
OWLWizard – Plugin para guiar paso a paso
en la construcción de clases, propiedades, etc.
OWLViz — Plugin para el despliegue gráfico de
las jerarquías de las clases
ezOWL – Plugin para el despliegue gráfico de
las jerarquías de las clases, las propiedades y
restricciones de cada clase
JADEBean Generator — Plugin para producir
clases Java a partir de la ontología, para que
JADE puede utilizar y entender la ontología
9
17. Instalación
Instalar Protégé 4.2 beta
Instalar Graphviz 2.28.0 (http://
www.graphviz.org)
Configurar Graphviz en las
opciones de OWLViz de Protégé.
21. Ejercicio 1: Crear
una nueva ontología
Iniciar Protégé
Ontology IRI
URI (Uniform Resource
Identifiers): estándar para
identificar recursos
(documentos, personas,
cosas abstractas) y
nombres de relaciones.
IRI (Internationalized
Resource Identifiers):
URIs + caracteres
alfabéticos no-latinos
(Unicode en lugar de
ASCII).
Menú “File / Save as...” permite guardar en la ontología que se va creando,
usando diversos formatos (OWL/XML).
24. Ejercicio 3:
Crear clases
Pulsar botón Classes.
Pulsar botón Add:
crea una nueva
subclase de la clase
seleccionada (en este
caso :Thing)
Crear, repitiendo este
proceso, las clases:
Pizza, PizzaTopping
y PizzaBase.
25. Clases Disjuntas
OWL asume que las clases solapan
Pizza PizzaTopping
= individual
Un individuo podría ser a la vez una Pizza y un
PizzaTopping a la vez
Éste no es el caso
26. Ejercicio 4: Clases
disjuntas
1. Seleccionar la clase Pizza in la
jerarquía de clases.
2. Hacer disjuntas las tres clases
usando el botón Clases Disjuntas
en la vista de descripción de
clases.
27. Ejercicio 5: ‘Create
Class Hierarchy’
Crear
FinaYCrujiente y
PanGrueso como
subclases de
PizzaBase
Usar la opción del
menú Tools /
Create Class
Hierarchy
Make all primitive siblings disjoint
28. Ejercicio 6: ‘Create
Class Hierarchy’
Crear como
subclases de
PizzaTopping
Añadir 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
29. Ejercicio 6: ‘Create
Class Hierarchy’
Crear como subclases
de PizzaTopping
Añadir 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
30. ¿Qué tenemos?
Árbol de clases disjuntas
Esta separación 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.
31. ¿Qué echamos de
menos?
No es un modelo enriquecido semánticamente.
Aparte de es un tipo de y no es un tipo de, no hay
otra información de interés.
Queremos decir más cosas sobre los individuos Pizza,
tal como su relación con otros individuos.
Esto se puede hacer con propiedades.
Pizza PizzaTopping
= individual
33. Ejercicio 7: Crear
propiedad del Objeto
Pulsar el botón Object
Properties.
Pulsar el botón Add
Object Property, para
añadir la propiedad
tieneIngrediente
34. Ejercicio 7: Crear
propiedad del Objeto
Pulsar el botón Object
Properties.
Pulsar el botón Add
Object Property, para
añadir la propiedad
tieneIngrediente
Pulsar el botón Domains
(intersection) para
indicar que el dominio de
esta propiedad es Pizza.
35. Ejercicio 8: Crear
sub-propiedades
Crear tieneTopping y
tieneBase como sub-
props. de
tieneIngrediente
Seleccionar la propiedad
tieneIngrediente en la
jerarquía de
propiedades.
Pulsar el botón Add
subproperty.
36. 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.
37. 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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
38. Ejercicio 10: Hacer funcional
la propiedad tieneBase
1. Seleccionar la propiedad tieneBase
en la jerarquía de propiedades en
Object Properties.
2. Marcar el tick Functional en el
Property Characteristics View.
39. 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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
40. 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 están
relacionados por dicha
OWL-DL no permite que las propiedades de tipo de
propiedad
datos sean transitivas, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
41. Ejercicio 10: Hacer
transitiva la propiedad
tieneIngrediente
1. Seleccionar la propiedad tieneIngrediente
en la jerarquía 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.
42. Tipos de
Propiedades de OWL
Una propiedad simétrica
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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
43. Tipos de
Propiedades de OWL
Una propiedad asimétrica
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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
44. 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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
45. 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, simétricas o tengan inversas.
OWL-DL: Propiedades de tipos de datos sólo son
Allows for multiple values y Inverse Functional.
46. Dominios y Rangos
de Propiedades
Propiedades enlazan individuos del
Dominio con individuos del Rango.
47. Ejercicio 11: Especificar
Dominio y Rango de las
propiedad tieneTopping
1. Seleccionar la propiedad tieneTopping
en la jerarquía de propiedades en
Object Properties.
2. Usar Add al lado de Domains
(intersection) para añadir Pizza.
3. Usar Add al lado de Ranges
(intersection) para añadir
PizzaTopping.
4. Añadir a esToppingDe como Dominio
PizzaTopping y como Rango Pizza
48. Ejercicio 11: Especificar
Dominio y Rango de las
propiedad tieneBase
1. Seleccionar la propiedad tieneBase en
la jerarquía de propiedades en Object
Properties.
2. Usar Add al lado de Domains
(intersection) para añadir Pizza.
3. Usar Add al lado de Ranges
(intersection) para añadir PizzaBase.
4. Añadir a esBaseDe como Dominio
PizzaBase y como Rango Pizza
52. Restricciones de
Cuantificación
Restricciones Existenciales
describen clases de individuos que participan en al
menos una relación en una propiedad específica para
miembros de una clase determinada.
Restricciones Universales
describen clases de individuos que para una determinada
propiedad sólo tienen relaciones con miembros de una
clase particular.
53. Ejercicio 12: Añadir
restricción a la clase Pizza
1. Seleccionar la clase Pizza en la jerarquía de clases.
2. Pulsar Add de SubClass Of de la vista de descripción de clases.
3. Pulsar el botón Class expression editor.
4. Introducir la restricción (usar TAB para autocompletar): Una
Pizza DEBE tener una PizzaBase
4.1. Propiedad tieneBase
4.2.Tipo de restricción (some - existenc.; only - univ.). some
4.3.Filtro para la restricción. PizzaBase
Condición NECESARIA
SIGNIFICADO: Restricciones especifican
superclases anónimas de la clase descrita.
54. Ejercicio 13: Crear
nuevos tipos de Pizza
1. Crear una subclase de Pizza llamada
PizzaConNombre.
2. Crear una subclase de PizzaConNombre
llamada PizzaMargarita.
3. Añadir un comentario a la clase
PizzaMargarita usando la vista
Annotations: “Una pizza que sólo tiene
Mozzarella y Tomate”.
55. Ejercicio 14: Crear
restricción
Restricción existencial (some):
Una PizzaMargarita tiene al
menos un MozzarellaTopping.
56. Ejercicio 15: Crear
restricción
Restricción existencial (some):
Una PizzaMargarita tiene al
menos un TomateTopping.
57. Ejercicio 16: Crear
clase PizzaAmericana
1. Crear un duplicado de la
PizzaMargarita que será la
PizzaAmericana.
2. Añadir a la PizzaAmericana la
restricción existencial de que tiene
al menos un topping de pepperoni.
58. Ejercicio 16: Crear clase
PizzaAmericana y PizzaSoho
1. Crear un duplicado de la PizzaAmericana que será la
PizzaAmericanaPicante.
2. Añadir a la PizzaAmericanaPicante la restricción
existencial de que tiene al menos un topping de pimiento
jalapeño.
3. Crear un duplicado de la PizzaMargarita que será la
PizzaSoho.
4. Añadir a la PizzaSoho las restricciones existenciales de que
tiene al menos un topping de oliva y uno de parmesano.
5. Usar la opción de menú Edit / Make primitive siblings
disjoint, para hacer disjuntos todos los nuevos tipos de
pizza.