Estas son las preguntas #11 a #20 del QALD-2 Challenge. Todas en QALD-2 SPARQL Queries.
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 |
La traducción directa no es posible porque no tenemos mapeada la clase Cave. La versión inglesa sí está mapeada.
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
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
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 |
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
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
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)
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
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
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.
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.
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 |
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).
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
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.
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
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 :-(
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
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.
Ontology Engineering Group. ETSI Informáticos, Universidad Politécnica de Madrid (UPM)