UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 1: Representar utilizando RDF Schema el siguiente conocimiento: La capital de España es Madrid. Puede utilizar un grafo o la notación Turtle. Defina las clases y propiedades que considere oportunas. Todas las URIs creadas tendrán como base http://prueba2.curso2012/. Si lo desea puede utilizar los siguientes prefijos y/o definir otros si es necesario. @prefix p2: <http://prueba2.curso2012/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> SOLUCIÓN Turtle: p2:Pais rdf:type rdfs:Class . p2:Ciudad rdf:type rdfs:Class . p2:capital rdf:type rdf:Property . p2:capital rdfs:domain p2:Pais . p2:capital rdfs:range p2:Ciudad . p2:Madrid rdf:type p2:Ciudad . p2:España rdf:type p2:Pais . p2:España p2:capital p2:Madrid . Pág. 1 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 2: Representar utilizando RDF Schema el siguiente conocimiento: Picasso pintó el Guernica. Puede utilizar un grafo o la notación Turtle. Defina las clases y propiedades que considere oportunas. Todas las URIs creadas tendrán como base http://prueba2.curso2012/. Si lo desea puede utilizar los siguientes prefijos y/o definir otros si es necesario. @prefix p2: <http://prueba2.curso2012/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> SOLUCIÓN rdfs:Class rdf:type rdfs:domain p2:Cuadro rdf:Property rdfs:Class rdf:type p2:autor rdf:type rdfs:range p2:Persona rdf:type rdf:type p2:Guernica p2:autor p2:Picasso Turtle: p2:Persona rdf:type rdfs:Class . p2:Cuadro rdf:type rdfs:Class . p2:Picasso rdf:type p2:Persona . p2:autor rdf:type rdf:Property . p2:autor rdfs:domain p2:Cuadro . p2:autor rdfs:range p2:Persona . p2:Guernica rdf:type p2:Cuadro . p2:Guernica p2:autor p2:Picasso . Pág. 2 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 3: Utilizando la herramienta Protege 3.4 realizar los siguientes pasos: 1. Crear un proyecto nuevo • Seleccionar OWL / RDF Files • Después OWL DL 2. Crear la clase Animal y las subclases Tigre, Vaca y Oveja • Tigre v Animal • Vaca v Animal • Oveja v Animal 3. Crear las clase ProductoAnimal y las subclases Leche y Huevos 4. Definir la propiedad “come” con dominio Animal y rango Animal t Planta t ProductoAnimal • El rango en Protege se hace añadiendo las tres clases al rango (en vez de la fórmula) • Otra opción: crear una clase Comida con esas tres subclases 5. Crear instancia de Tigre (p.e. t1) y Vaca (p.e. v1) e indicar que t1 come v1 6. Expresar: algo que come animales es carnívoro: • Carnívoro ´ 9come.Animal • Se recomienda seleccionar la opción “OWL – Preferences – DLSintaxClassDisplay” para utilizar la notación de lógicas de descripciones vista en clase 7. Expresar: un vegetariano es algo que no come animales • Vegetariano ´ 8come.¬Animal (o ¬(9come.Animal) ) 8. Expresar: Los tigres comen vacas • Tigre v 9come.Vaca 9. INFERENCIA 1: clasificar la ontología (activar el razonador si no lo está, menú “Reasoning”). Observar qué se deduce y explicar. 10. INFERENCIA 2: computar instancias. Observar qué se deduce y explicar. 11. Expresar: La vaca es animal vegetariano • Vaca v Animal u Vegetariano (o simplemente añadir Vaca v Vegetariano) 12. Expresar: Las vacas locas son vacas que comen ovejas • VacaLoca v Vaca u 9come.Oveja 13. INFERENCIA 3: comprobar consistencia. Observar qué se deduce y explicar. 14. Quitar Vegetariano de Vaca (11). Volver a comprobar la consistencia y explicar. Pág. 3 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica 15. Volver a dejar Vaca v Animal u Vegetariano y modificar Vegetariano (7): • Vegetariano ´ 8come.Planta (en vez de ¬Animal) 16. INFERENCIA 4: comprobar consistencia. Observar qué se deduce y explicar. 17. Añadir que Animal es disjunto de Planta. • Animal v ¬Planta • Esto se puede hacer añadiendo el axioma o añadiendo la clase en “disjoints” 18. INFERENCIA 5: comprobar consistencia. Observar qué se deduce y explicar. SOLUCIÓN: INFERENCIA 1: clasificar la ontología. Observar qué se deduce y explicar. • Carnívoro v Animal debido a que come tiene dominio Animal. Si se añade dominio Carnívoro o se quita el dominio Animal entonces no se deduce. • Tigre v Carnívoro por 6 y 8 INFERENCIA 2: computar instancias. Observar qué se deduce y explicar. • t1 y v1 ∈ Animal por subsunción • t1 ∈ Carnívoro por 5 y 6 INFERENCIA 3: comprobar consistencia. Observar qué se deduce y explicar. • VacaLoca es inconsistente porque es Vaca u 9come.Oveja u 8come.¬Animal INFERENCIA 4: comprobar consistencia. Observar qué se deduce y explicar. • Ahora VacaLoca es consistente!! porque no se dice que Oveja sea disjunto de Planta, por tanto podría haber ovejas que fueran también plantas INFERENCIA 5: comprobar consistencia. Observar qué se deduce e intentar explicar porqué. • Ahora VacaLoca es inconsistente, ya que ahora Animal (y por tanto Oveja) son disjuntos de Planta. Pág. 4 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 4: 1. Introducir en Protege el siguiente conocimiento (ejercicio 1 del tema Lógica de Descripciones del curso pasado de IA): Mujer ´ Persona u Femenino Hombre ´ Persona u ¬Mujer Padre ´ Hombre u 9crea.Persona Madre ´ Mujer u 9crea.Persona Progenitor ´ Padre t Madre Abuela ´ Madre u 9crea.Progenitor Esposa ´ Mujer u 9tieneMarido.Hombre MadreSinHijas ´ Madre u 8crea.(¬Mujer) 2. 3. 4. 5. Clasificar la taxonomía. Observar el resultado. Introducir algunas instancias Obtener instancias inferidas (type) Introducir inconsistencias, por ejemplo: • Hombre y NO Hombre • Después de tener instancias, especificar que hombre tiene al menos un hijo 6. Realizar algunas consultas SPARQL SOLUCIÓN: Este ejercicio no tiene solución concreta. Pág. 5 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 5: Dado el siguiente fragmento de la mitología griega: Edipo mató a su padre, se casó con su madre Yocasta, y tuvo hijos con ella, entre ellos Polinices. Polinices tuvo hijos, entre ellos Tersandro. a) Representar ese conocimiento en LD ALC (se sugiere una clase Mito y predicado tieneHijo) b) Añadir que Edipo es parricida y Tersandro no lo es (por ejemplo usar clase Parricida) Se quiere saber si Yocasta tiene un hijo parricida que a su vez tenga un hijo que no sea parricida c) Plantear la pregunta en LD ALC d) ¿cuál sería la respuesta si la información se guarda en Base de Datos (mundo cerrado)? e) ¿cuál sería la respuesta si se utiliza LD? Introducir ese conocimiento en Protege y comprobar la solución. SOLUCIÓN: a) Mito(Yocasta) Mito(Edipo) Mito(Polinices) Mito(Tersandro) tieneHijo(Yocasta,Edipo) tieneHijo(Edipo, Polinices) tieneHijo(Yocasta, Polinices) tieneHijo(Polinices, Tersandro) b) Parricida(Edipo) ¬Parricida(Tersandro) c) (9tieneHijo.(Parricida u 9tieneHijo.¬Parricida))(Yocasta) d) La respuesta sería “No”, ya que no se puede encontrar ningún valor que lo cumpla. Yocasta tiene dos hijos: Edipo y Polinices. Edipo sí está en la lista de “parricidas”, pero su hijo (Polinices) no está entre los “no parricidas”. Por su parte, Polinices no está en los “parricidas”. e) En este caso la respuesta es “Sí”, puesto que al tratarse de “mundo abierto” considera las diferentes alternativas posibles cuando no se dispone de información. En concreto, se pueden dar dos casos respecto a Polinices: • Polinices es “parricida”: entonces Yocasta tiene un hijo parricida (Polinices) que a su vez tiene un hijo no parricida (Tersandro). • Polinices “no es parricida”: entonces Yocasta tiene un hijo parricida (Edipo) que a su vez tiene un hijo no parricida (Polinices) En ambos casos Yocasta cumple los requisitos.. Pág. 6 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica Ejercicio 6: Realizar las siguientes consultas SPARQL a la dbpedia (http://dbpedia.org/snorql o http://dbpedia.org/sparql): 1. Capitales de Europa, ordenadas (http://dbpedia.org/class/yago/CapitalsInEurope) PREFIX yago: <http://dbpedia.org/class/yago/> SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. } ORDER BY ?c 2. Capitales de Europa y su nombre, ordenadas (http://dbpedia.org/property/name) PREFIX yago: <http://dbpedia.org/class/yago/> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. } ORDER BY ?c 3. Capitales de Europa que no tienen nombre, ordenadas SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. MINUS {?c dbpprop:name ?nombre.} } ORDER BY ?c También: FILTER NOT EXISTS {?c dbpprop:name ?nombre.} 4. Capitales de Europa, su nombre y su nombre nativo, ordenadas (http://dbpedia.org/property/nativeName) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. ?c dbpprop:nativeName ?nomNativo } ORDER BY ?c Pág. 7 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica 5. Capitales de Europa y su nombre (si lo tienen), ordenadas SELECT DISTINCT ?c ?nombre WHERE { ?c a yago:CapitalsInEurope. OPTIONAL {?c dbpprop:name ?nombre}. } ORDER BY ?c 6. Capitales de Europa, su nombre (si lo tienen) y su nombre nativo (si lo tienen), ordenadas SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. OPTIONAL {?c dbpprop:name ?nombre.}. OPTIONAL {?c dbpprop:nativeName ?nomNativo} } ORDER BY ?c 7. Capitales de Europa y, si tienen ambos, su nombre y su nombre nativo, ordenadas SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. OPTIONAL { ?c dbpprop:name ?nombre. ?c dbpprop:nativeName ?nomNativo} } ORDER BY ?c 8. Capitales europeas cuyo nombre contiene una “e” SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. FILTER regex(?nombre,"e","i") } ORDER BY ?c 9. Capitales europeas y población de más de 2.000.000 habitantes, ordenados por nº habitantes (de mayor a menor) (http://dbpedia.org/ontology/populationTotal) PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) } ORDER BY DESC(?hab) Pág. 8 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica 10. Para cada capital europea de más de 2 millones de habitantes mostrar un texto con el nombre y los habitantes. Por ejemplo: “En Madrid hay 3500000 habitantes” SELECT DISTINCT (CONCAT ("En ",?nombre," hay ",?hab," habitantes")) AS ?frase WHERE { ?c a yago:CapitalsInEurope. ?c dbpprop:name ?nombre. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) } ORDER BY DESC(?hab) 11. Capitales europeas con más de 1000 km2 (en m2) (http://dbpedia.org/ontology/areaTotal) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } 12. Capitales europeas o asiáticas con más de 1000 km2 (en m2) (http://dbpedia.org/class/yago/CapitalsInAsia) SELECT DISTINCT * WHERE { { ?c a yago:CapitalsInEurope.} UNION { ?c a yago:CapitalsInAsia.} ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } 13. Capitales europeas con más de 1000 km2 (en m2) y capitales de Asia con más de 10 millones de habitantes SELECT DISTINCT * WHERE { { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:areaTotal ?area. FILTER (?area > 1000000000) } UNION { ?lugar a yago:CapitalsInAsia. ?lugar dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 10000000) } } Pág. 9 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica 14. Capitales europeas y población de más de 2.000.000 habitantes, de países de menos de 500.000 km2 (en m2) (http://dbpedia.org/ontology/country) SELECT DISTINCT * WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. FILTER (?hab >= 2000000) ?c dbpedia-owl:country ?pais. ?pais dbpedia-owl:areaTotal ?area. FILTER (?area < 500000000000) } 15. Actores de cine que están casados entre ellos, han participado en la misma película, y tal que uno de ellos ha nacido en un país cuya capital tiene más de 3 millones de habitantes, y el otro ha nacido en una ciudad que tiene un equipo en la NBA • dbpprop:spouse • dbpedia-owl:starring (pelicula – actor) • dbpedia-owl:birthPlace • dbpedia-owl:Country (clase) • dbpedia-owl:capital • dbpedia-owl:populationTotal • dbpprop:city (equipo - ciudad) • yago:NationalBasketballAssociationTeams SELECT DISTINCT ?actor1 ?actor2 WHERE { {?actor1 dbpprop:spouse ?actor2.} UNION {?actor2 dbpprop:spouse ?actor1.} ?peli dbpedia-owl:starring ?actor1. ?peli dbpedia-owl:starring ?actor2. ?actor1 dbpedia-owl:birthPlace ?p1. ?p1 a dbpedia-owl:Country. ?p1 dbpedia-owl:capital ?cap. ?cap dbpedia-owl:populationTotal ?hab. FILTER (?hab > 3000000). ?actor2 dbpedia-owl:birthPlace ?c2. ?equipo dbpprop:city ?c2. ?equipo a yago:NationalBasketballAssociationTeams. } 16. Número de capitales europeas SELECT (COUNT(?c) AS ?numCapitales) WHERE { ?c a yago:CapitalsInEurope. } Pág. 10 / 11 UNIVERSIDAD REY JUAN CARLOS CURSO 2013-2014 Hoja de Problemas Tema 8 Ontologías y Web Semántica 17. Número mínimo y máximo de habitantes de las capitales europeas SELECT (MIN(?hab) AS ?minimo) (MAX(?hab) AS ?maximo) WHERE { ?c a yago:CapitalsInEurope. ?c dbpedia-owl:populationTotal ?hab. } 18. Tenistas ganadores de más de cinco torneos Grand Slam (Roland Garros, Wimbledon, Open USA, Open Australia) indicando y ordenado por número de torneos ganados (mayor a menor) • dbpedia-owl:championInSingleMale (torneo – ganador) • dbpedia-owl:category <http://dbpedia.org/resource/Grand_Slam_(tennis)> SELECT ?ganador (COUNT(?torneo) AS ?veces) WHERE { ?torneo dbpedia-owl:championInSingleMale ?ganador. ?torneo dbpedia-owl:category <http://dbpedia.org/resource/Grand_Slam_(tennis)>. } GROUP BY ?ganador HAVING (COUNT(?torneo) > 5) ORDER BY DESC(?veces) Pág. 11 / 11