QADL-2-Q11-Q20


Estas son las preguntas #11 a #20 del QALD-2 Challenge. Todas en QALD-2 SPARQL Queries.

Q#11 Which countries have places with more than two caves?#

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?uri WHERE { 
   ?cave rdf:type dbo:Cave . 
   ?cave dbo:location ?uri . 
   ?uri rdf:type dbo:Country . 
} GROUP BY ?uri HAVING (COUNT(?cave) > 2)

Con resultado:

uri
http://dbpedia.org/resource/United_Kingdom
http://dbpedia.org/resource/China
http://dbpedia.org/resource/United_States
http://dbpedia.org/resource/Germany
http://dbpedia.org/resource/Mexico
http://dbpedia.org/resource/England
http://dbpedia.org/resource/Brazil
http://dbpedia.org/resource/Republic_of_Ireland
http://dbpedia.org/resource/Wales
http://dbpedia.org/resource/Greece
http://dbpedia.org/resource/Jamaica

Iconos/ico30_tic_no.pngesDBpedia SPARQL Query#

"Qué países tiene al menos dos lugares con cuevas?"

La traducción directa no es posible porque no tenemos mapeada la clase Cave. La versión inglesa sí está mapeada.


Q#12 Is proinsulin a protein? #

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX res: <http://dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
ASK WHERE { 
  res:Proinsulin rdf:type dbo:Protein
}

Con resultado: true

Iconos/ico30_tic_yes.pngesDBpedia SPARQL Query#

"¿Es una proteína la proinsulina? La traducción directa (cambiado res por esres) es:
PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
ASK WHERE { 
  esres:Proinsulin rdf:type dbo:Protein
}
que devuelve el resultado false :-( La explicación es que en esDBpedia no sabemos nada del recurso esres:Proinsulin. Si miramos en la wikipedia inglesa, vemos que la proinsulin se traduce al español como proinsulina.

Si buscamos ahora con

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
ASK WHERE { 
  esres:Proinsulina rdf:type dbo:Protein
}

el resultado es true

Nota: existe mapeo para la clase Protein


Q#13 Which classis do tree frogs belong to? #

DBpedia SPARQL Query#

PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX res: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?uri WHERE { 
  res:Hylidae dbp:classis ?uri . 
}

Con resultado:

uri
http://dbpedia.org/resource/Amphibian
http://dbpedia.org/resource/Amphibia

Iconos/ico30_tic_no.pngesDBpedia SPARQL Query#

"¿A qué clase pertenecen las ranas arborícolas?" (OJO: es importante saber que esas ranas son de la familia Hylidae)

La traducción directa (sólo cambiado res por esres) sería:

PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
SELECT DISTINCT ?uri WHERE { 
  esres:Hylidae dbp:classis ?uri . 
}
que no devuelve resultados. El motivo es que en esDBpedia no tenemos ningún recurso con la propiedad dbp:classis. Aunque esta familia tiene página en esWikipedia, y esta página usa la "ficha de taxón"], y que está relleno el atributo familia con el valor Hylidae, no se están generando triples. Un motivo puede ser que hay errores en el mapeo de "ficha de taxón".

Nota: podemos comprobar que no hay mapeo para la propiedad dbp:classis usando las indicaciones de mapeos inversos


Q#14 How tall is Claudia Schiffer? #

DBpedia SPARQL Query#

PREFIX res: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT DISTINCT ?height WHERE { 
res:Claudia_Schiffer dbo:height ?height . 
}

Con resultado: 1.81

Iconos/ico30_tic_yes.pngesDBpedia SPARQL Query#

"¿Cuánto mide Claudia Schiffer?"

La traducción directa (sólo cambiado res por esres)

PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT DISTINCT ?height WHERE { 
   esres:Claudia_Schiffer dbo:height ?height . 
}

funciona, pero el resultado es distinto. Se debe a que en la wikipedia del español se indica 1.80, y en la inglesa se indica 1.81.

Nota: si usamos esdbp:estatura (existe "ficha de modelo" y estatura se mapea como dbo:heigh) la query

PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX esdbp: <http://es.dbpedia.org/property/> 
SELECT  * WHERE { 
   esres:Claudia_Schiffer esdbp:estatura ?v . 
}
da como resultado la cadena "1,80 m"@es (antes obtuvimos un valor numérico)

Q#15 Who created Goofy? #

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX res: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?uri WHERE {
  res:Goofy dbo:creator ?uri . 
}

Con resultado: http://dbpedia.org/resource/Art_Babbitt

Iconos/ico30_tic_yes.pngesDBpedia SPARQL Query#

"¿Quién creó a Goofy?

La traducción directa (sólo cambiado res por esres) sería

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
SELECT DISTINCT ?uri WHERE {
  esres:Goofy dbo:creator ?uri . 
}

que da le resultado correcto: http://es.dbpedia.org/resource/Art_Babbitt


Q#16 Give me the capitals of all countries in Africa#

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX yago: <http://dbpedia.org/class/yago/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?uri WHERE { 
   ?states rdf:type yago:AfricanCountries .
   ?states dbo:capital ?uri . 
}

que da como resultado una lista enorme de recursos, entre los que están Nouakchott, Praia, Banjul, etc. Si los cuento salen 45.

Iconos/ico30_tic_no.pngesDBpedia SPARQL Query#

"Dame las capitales de todos los países africanos"

La traducción directa no es posible porque en esDBpedia no hay categorías YAGO.

Tampoco he visto (MRA) ninguna Categoría Wikipedia que proporcione los países africanos. Sólo hay un anexo con una tabla, pero esta tabla no está mapeada.


Q#17 Give me all cities in New Jersey with more than 100000 inhabitants#

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX res: <http://dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?uri WHERE { 
   ?uri rdf:type dbo:City .
   ?uri dbo:isPartOf res:New_Jersey . 
   ?uri dbp:populationTotal ?inhabitants . 
   FILTER (?inhabitants > 100000) . 
}

que da como resultado

uri
http://dbpedia.org/resource/Jersey_City%2C_New_Jersey
http://dbpedia.org/resource/Paterson%2C_New_Jersey
http://dbpedia.org/resource/Newark%2C_New_Jersey
http://dbpedia.org/resource/Elizabeth%2C_New_Jersey

Iconos/ico30_tic_yes.pngesDBpedia SPARQL Query#

"Dame todas las ciudades de Nueva Jersey con más de 100000 habitantes"

La traducción directa (cambiando res por esres y dbp por esdbp) sería

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esdbp: <http://es.dbpedia.org/property/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?uri WHERE { 
   ?uri rdf:type dbo:City .
   ?uri dbo:isPartOf esres:New_Jersey . 
   ?uri dbo:populationTotal ?inhabitants . 
   FILTER (?inhabitants > 100000) . 
}

pero no sale nada. El motivo es que no está mapeada la propiedad dbo:isPartOf

En esWikipedia podemos encontrar la categoría Asentamientos de Nueva Jersey y Ciudades de Nueva Jersey. La primera categoría no aparta ninguna ciudad, pero la segunda sí, por lo que se podría poner algo como esto:

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esdbp: <http://es.dbpedia.org/property/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dcterms:	<http://purl.org/dc/terms/>
SELECT DISTINCT ?uri WHERE { 
   ?uri dcterms:subject <http://es.dbpedia.org/resource/Categoría:Ciudades_de_Nueva_Jersey> .
   ?uri dbo:populationTotal ?inhabitants . 
   FILTER (?inhabitants > 100000) . 
}

que devuelve:

uri
http://es.dbpedia.org/resource/Newark_(Nueva_Jersey)
http://es.dbpedia.org/resource/Jersey_City_(Nueva_Jersey)
http://es.dbpedia.org/resource/Elizabeth_(Nueva_Jersey)

Nos falta una ciudad (Paterson), que no está en la lista de la categoría, pero lo damos por bueno.

Nota: La propiedad dbo:populationTotal es de las que es muy costoso saber su mapeo (ver QALD-2 SPARQL Queries).


Q#18 Which museum exhibits The Scream by Munch?#

DBpedia SPARQL Query#

PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX res: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?uri WHERE { 
  res:The_Scream dbp:museum ?uri . 
}

que da como resultado http://dbpedia.org/resource/National_Gallery_of_Norway

Iconos/ico30_tic_no.pngesDBpedia SPARQL Query#

"¿En qué museo se exhibe el grito de Munch?"

En esWikipedia no existe infobox para "El_grito". En la wikipedia inglesa, la página de "The_Scream" tiene un "infobox artWork".

Por tanto, no tenemos triples útiles de "El_grito" y no podemos saber el museo donde se encuentra.

La solución sería mapear la ficha "Obra de arte", que existe (con 1080 instancias) pero no tiene ni una sola propiedad mapeada; y, además, poner un infobox de obra de arte en la página de El Grito.


Q#19 Is Egypts largest city also its capital? #

DBpedia SPARQL Query#

PREFIX res: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
ASK WHERE { 
   res:Egypt dbo:largestCity ?large . 
   res:Egypt dbo:capital ?capital . 
   FILTER (?large = ?capital)
}

que da como resultado true

Iconos/ico30_tic_no.pngesDBpedia SPARQL Query#

"¿Es la cuidad más grande de Egipto también su capital?"

La traducción directa (cambiando Egypt por Egipto, y res por esres) sería esta:

PREFIX esres: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
ASK WHERE { 
   esres:Egipto dbo:largestCity ?large . 
   esres:Egipto dbo:capital ?capital . 
   FILTER (?large = ?capital)
}

pero devuelve false

Motivo: Entre las propiedades de esres:Egipto no está dbo:largestCity :-(

Si buscamos cómo se ha mapeado la propiedad dbo:largestCity vemos que la más probable es esdbp:ciudadGrande (en Ficha_de_entidad_subnacional, que sí está mapeada), pero tampoco tenemos datos de esres:Egipto con la propiedad esdbp:ciudadGrande. Si miramos la página de Egipto en esWikipedia vemos que usa el "infobox país", y que no usa el atributo ciudad_grande pero sí ciudad_más_poblada y capital.

En la fecha de extracción de los datos no estaba mapeado el "infobox país", por eso no hay forma de sacar esta query :-(


Q#20 How many employees does IBM have? #

DBpedia SPARQL Query#

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX res: <http://dbpedia.org/resource/> 
SELECT ?number WHERE { 
   res:IBM dbo:numberOfEmployees ?number .
}

que da como resultado 433362

Iconos/ico30_tic_yes.pngesDBpedia SPARQL Query#

"¿Cuánto empleados tiene IBM?"

La traducción directa (cambiado res por esres) sería

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
SELECT ?number WHERE { 
   esres:IBM dbo:numberOfEmployees ?number .
}

que devuelve 426751

Si vemos las páginas wikipedia inglesa y española veremos que en la inglesa indica que son datos de 2012, y en la española indica que son de 2010.

Damos por válida la respuesta.