Grupo de Facebook DBpedia en español
Notify Twitter

Introducción#

En esta página encontrarás casos típicos de consultas. Por favor, si tienes alguna consulta interesante siéntete libre de añadirla.

Las consultas que no devuelven los resultados esperados, típicamente porque los datos de Wikipedia están mál, o por deficiencias del extractor, por favor, añádelos en preguntas abiertas.

Otra fuente interesante de consulta puede ser la QALD-2 SPARQL Queries.

Ejemplo 1. Científicos españoles#

Alternativa 1#

PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT ?person WHERE{
   ?person dcterms:subject <http://es.dbpedia.org/resource/Categoría:Científicos_de_España>
}
Resultado.

Explicación#

Si buscas 'científicos' en wikipedia verás que hay una categoría con ese nombre. También verás que no tiene una lista de científicos, sino una lista de categorías (como 'Científicos por disciplina', o 'Científicos por país'). Si entras en la categoría 'Científicos por país' (a su vez tiene 128 categorías) y eliges la categoría 'Científicos de España' verás que (aparte de más categorías) tiene 29 páginas de científicos. Estos son los que devuelve la consulta anterior.
En realidad devuelve 21, ocho menos de los esperados. La única explicación que le veo es que se hayan añadido los ocho científicos después de noviembre de 2016 (fecha del dump de wikipedia a partir del que se han generado los datos). Una nueva duda: ¿Puedo saber la fecha de inserción de una página de wikipedia?

Alternativa 2#

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX esdbpr: <http://es.dbpedia.org/resource/> 
SELECT ?person WHERE{
  ?person  rdf:type             dbpedia-owl:Scientist .
  ?person  dbpedia-owl:country  esdbpr:España . 
}
Resultado.

Explicación#

Si en wikipeda buscas un científico concreto, por ejemplo, Margarita Salas, verás (editando la página) que usa la 'ficha de Científico'. Alternativamente, puedes ver qué datos tiene es.dbpedia de Margarita salas. Para saber cómo se ha mapeado mira el mapeo de 'Ficha de científico'.

Puedes ver que un científico se mapea a la clase Scientist y que tiene una propiedad country.

Nota: Aunque la propiedad country está mapeada a dos propiedades en español (país_de_residencia y pais_de_residencia), no encuentro recursos con ninguna de esas dos propiedades. ¿Puede ser un fallo del mapeo o del extractor?.

Esta consulta produce 154 resultados, muchos más la anterior.

Ejemplo 2. Parejas de los hijos de Margaret Thatcher#

PREFIX esdbp: <http://es.dbpedia.org/property/> 
PREFIX esdbr: <http://es.dbpedia.org/resource/> 
SELECT ?hijo ?pareja WHERE { 
 esdbr:Margaret_Thatcher    esdbp:hijos    ?hijo .
 ?hijo                      esdbp:cónyuge  ?pareja .
}
Resultado.

Ejemplo 3. Número de recursos geolocalizados en es.dbpedia.org#

SELECT DISTINCT count (?res)  WHERE {
      ?res geo:lat ?v.
}
Resultado.

Ejemplo 4. ¿Se llama Michelle la esposa de Obama?#

PREFIX esdbp: <http://es.dbpedia.org/property/> 
PREFIX esres: <http://es.dbpedia.org/resource/> 
ASK WHERE { 
    esres:Barack_Obama    esdbp:cónyuge   ?esposa. 
    FILTER(regex(?esposa,'Michelle'))
}
Resultado.

Ejemplo 5. Nombre de grupos de música heavy de los años 80#

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX esdbpp: <http://es.dbpedia.org/property/> 
PREFIX esdbpr: <http://es.dbpedia.org/resource/> 
SELECT ?grupo  WHERE{
  ?grupo  rdf:type                         dbpedia-owl:MusicalArtist .
  ?grupo  dbpedia-owl:activeYearsStartYear ?inicio .
  ?grupo  dbpedia-owl:activeYearsEndYear   ?fin .
  ?grupo  esdbpp:estilo                    esdbpr:Heavy_metal .
  FILTER ( (?inicio > "1980-01-01T00:00:00Z"^^xsd:dateTime  && ?inicio < "1990-01-01T00:00:00Z"^^xsd:dateTime ) ||
           (?fin    > "1980-01-01T00:00:00Z"^^xsd:dateTime  && ?fin < "1990-01-01T00:00:00Z"^^xsd:dateTime ) ||
           (?inicio < "1980-01-01T00:00:00Z"^^xsd:dateTime  && ?fin > "1990-01-01T00:00:00Z"^^xsd:dateTime ) 
         ) 
}ORDER BY DESC(?inicio)
Resultado.
Nota: Esta consulta se puede mejorar en varios aspectos:
  1. El cálculo de los grupos ochenteros se basa en que existe fecha de inicio y de fin. Hay grupos que tienen fecha de inicio, pero no de fin (caso de Metallica).
  2. El nombre del estilo musical es muy variable. Se escribe de diversas maneras tanto como recurso como literal.

Ejemplo 6. Nombres y sobrenombres de músicos de jazz latino#

PREFIX dcterms: <http://purl.org/dc/terms/>
select * where{
 ?musico dcterms:subject <http://es.dbpedia.org/resource/Categoría:Músicos_de_jazz_latino> .
 OPTIONAL{?musico dbpedia-owl:alias ?alias }
 OPTIONAL{?musico foaf:givenName ?given }
 OPTIONAL{?musico foaf:name ?name }
}
Resultado.
Nota: El reseñable el uso de OPTIONAL y cómo con el "select *" es suficiente para sacar una hermosa tabla con muchos huecos vacíos.

Ejemplo 7. La ontología DBpedia#

En el sitio web de DBpedia tienes la ontología DBpedia (en formato OWL), comprimida con bz2.

Aquí la tienes descomprimida:

En OWL.

En RDF/XML