¿Cómo obtener los autores coetáneos o que escriben sobre Lope de Vega en el catálogo de la Biblioteca Virtual Miguel de Cervantes?

12/05/2017

Desde el punto de acceso SPARQL de data.cervantesvirtual.com podemos acceder al catálogo completo de la Biblioteca Virtual Miguel de Cervantes en formato RDF. Si navegamos por los resultados de la búsqueda, el interfaz ofrece los metadatos asociados a cada item identificado por su URI.

En este ejemplo, para obtener los autores relacionados con un autor en concreto, podríamos ejecutar la siguiente consulta SPARQL:

PREFIX rdaw: <http://rdaregistry.info/Elements/w/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?person ?nameWHERE {
?w rdaw:author ?person .
?person rdfs:label ?name .
?w dc:subject <http://data.cervantesvirtual.com/person/72>
} LIMIT 10

http://data.cervantesvirtual.com/person/72 corresponde al autor Lope de Vega. Modificando el identificador 72 por cualquiera de los que proporciona el catálogo, podríamos obtener los autores relacionados de cualquier escritor. Por ejemplo http://data.cervantesvirtual.com/person/40 corresponde a Miguel de Cervantes.

Podéis ejecutar el ejemplo y realizar vuestras propias consultas desde el punto de acceso abierto en http://data.cervantesvirtual.com/sparql.

En la siguiente imagen te mostramos los resultados obtenidos desde el interfaz de consulta.

autores relacionados sparql

 

De la misma forma, para obtener los autores coetáneos o contemporáneos a Lope de Vega podríamos ejecutar la siguiente consulta:

PREFIX rdaa: <http://rdaregistry.info/Elements/a/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?a ?name
WHERE {
?a rdaa:dateOfBirth ?dateBirth .
?a rdaa:dateOfDeath ?dateDeath .
?a rdfs:label ?name .
?dateBirth <http://www.w3.org/2006/time#inDateTime> ?dateBirthDesc .
?dateBirthDesc <http://www.w3.org/2006/time#year> ?yearBirth .
?dateDeath <http://www.w3.org/2006/time#inDateTime> ?dateDeathDesc .
?dateDeathDesc <http://www.w3.org/2006/time#year> ?yearDeath
FILTER(xsd:integer(?yearBirth) >= 1562 && xsd:integer(?yearDeath) <= 1635)
}