58
Protégé - OWL Ejemplo de las Pizzas Basado en los tutoriales de Matthew Horridge (CO-ODE), Holger Knublauch (Stanford Univ.) y el de la web de PROTÉGÉ http://ontologias.blogs.upv.es

Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Embed Size (px)

DESCRIPTION

Práctica de introducción a Protégé OWL 4.2 beta para la asignatura Diseño de ontologías, en el master de gestión de la información de la UPV

Citation preview

Page 1: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Protégé - OWLEjemplo de las Pizzas

Basado en los tutoriales de Matthew Horridge (CO-ODE),

Holger Knublauch (Stanford Univ.) y el de la web de PROTÉGÉhttp://ontologias.blogs.upv.es

Page 2: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Protégé - OWLEjemplo de las Pizzas

Basado en los tutoriales de Matthew Horridge (CO-ODE),

Holger Knublauch (Stanford Univ.) y el de la web de PROTÉGÉhttp://ontologias.blogs.upv.es

Page 3: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

La Web SemánticaOntologías compartidas ayudan al intercambio

de datos y significados entre servicios web

(Image by Jim Hendler)

Page 4: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

3

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)

Page 5: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

4

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

Page 6: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Revisión de OWLOWL…

Web Ontology Languagees 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/XMLes por lo tanto laborioso escribirlo a mano

Por eso existen herramientas para ayudarnos

Page 7: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Revisión de OWLOWL…

Web Ontology Languagees 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/XMLes por lo tanto laborioso escribirlo a mano

Por eso existen herramientas para ayudarnos

Page 8: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

OWL ConstructsPersona País

= clase (concepto)

Animal

Page 9: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

OWL ConstructsPersona País

= clase (concepto)

Animal

= individuo (instancia)

Belgium

Paraguay

ChinaLatvia

Elvis

Hai

Holger

Kylie

S.Claus

Rudolph

Flipper

Page 10: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

OWL ConstructsPersona País

= clase (concepto)

Animal

= individuo (instancia)

Belgium

Paraguay

ChinaLatvia

Elvis

Hai

Holger

Kylie

S.Claus

Rudolph

Flipper

= propiedad (relación)

vive_en

vive_en

vive_en

tiene_mascota

tiene_mascota

Page 11: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Escenario del Ejemplo del Vino

Dime qué vinos debería comprar para servir con cada

plato del siguiente menú.

Wine Agent

Grocery Agent

Books Agent

Page 12: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Escenario del Ejemplo del Vino

Dime qué vinos debería comprar para servir con cada

plato del siguiente menú.

Wine Agent

Grocery Agent

Books Agent

Yo recomiendo Chardonney o

DryRiesling

Page 13: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Escenario del Ejemplo del Vino

Dime qué vinos debería comprar para servir con cada

plato del siguiente menú.

Wine Agent

Grocery Agent

Books Agent

Yo recomiendo Chardonney o

DryRiesling

Page 14: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Escenario del Ejemplo del Vino

Dime qué vinos debería comprar para servir con cada

plato del siguiente menú.

Wine Agent

Grocery Agent

Books Agent

Yo recomiendo Chardonney o

DryRiesling

Page 15: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

8

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

Page 16: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

9

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

Protégé

Page 17: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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é.

Page 18: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejemplo:Ontología de Pizzas

Page 19: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejemplo:Ontología de Pizzas

Page 20: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejemplo:Ontología de Pizzas

Page 21: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 1: Crear una nueva ontología

Iniciar Protégé

Ontology IRIURI (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).

Page 22: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 2: Añadir una anotación

Page 23: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Vista de las clases

Page 24: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 25: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Clases Disjuntas

OWL asume que las clases solapanPizza PizzaTopping

= individual

Un individuo podría ser a la vez una Pizza y un PizzaTopping a la vez

Éste no es el caso

Page 26: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 27: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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

Page 28: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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

Page 29: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 6: ‘Create Class Hierarchy’

Make all primitive siblings disjoint

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.

Page 30: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

¿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.

Page 31: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

¿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

Page 32: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Propiedades de OWL

Object properties: enlazan individuos.

Datatype properties

Annotation properties

Page 33: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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

Page 34: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 35: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 36: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 9: Crear propiedades inversasCrear 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.

Page 37: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 38: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 39: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 40: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Tipos de Propiedades de OWL

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.

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 propiedad

Page 41: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 10: Hacer transitiva la propiedad

tieneIngrediente1. 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.

Page 42: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 43: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 44: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 45: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 46: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Dominios y Rangos de Propiedades

Propiedades enlazan individuos del Dominio con individuos del Rango.

Page 47: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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

Page 48: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 11: Especificar Dominio y Rango de las

propiedad tieneBase1. 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

Page 49: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Restricciones

Restricciones de cuantificación

Restricciones de cardinalidad

Restricciones tieneValor

Page 50: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Se ven y se editan usando la vista de descripción de Clases.

RestriccionesCrear restricción

Page 51: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Restricciones de Cuantificación

Restricciones Existenciales

Restricciones Universales

Page 52: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Restricciones de CuantificaciónRestricciones 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 Universalesdescriben clases de individuos que para una determinada propiedad sólo tienen relaciones con miembros de una clase particular.

Page 53: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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

4.2.Tipo de restricción (some - existenc.; only - univ.).

4.3.Filtro para la restricción.

tieneBase

somePizzaBase

Condición NECESARIASIGNIFICADO: Restricciones especifican superclases anónimas de la clase descrita.

Page 54: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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”.

Page 55: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 14: Crear restricción

Restricción existencial (some): Una PizzaMargarita tiene al menos un MozzarellaTopping.

Page 56: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

Ejercicio 15: Crear restricción

Restricción existencial (some): Una PizzaMargarita tiene al menos un TomateTopping.

Page 57: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.

Page 58: Diseño de Ontologías: Protégé OWL - Ejemplo de las Pizzas

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.