Ejemplos de consultas SPARQL

Estos ejemplos de consultas se pueden ejecutar en el punto de acceso SPARQL. La BVMC dispone de un tutorial de introducción a SPARQL. Para crear una aplicación que reutilice el repositorio de datos abiertos es posible utilizar la siguiente dirección http://data.cervantesvirtual.com/bvmc-lod/repositories/data.

Obras del autor Miguel de Cervantes Saavedra

Esta sentencia SPARQL devuelve las obras del autor Miguel de Cervantes Saavedra. Los autores se identifican con una URL del tipo http://data.cervantesvirtual.com/person/identificador, en concreto al autor Miguel de Cervantes le corresponde la URL http://data.cervantesvirtual.com/person/40.

                PREFIX rdac: <http://rdaregistry.info/Elements/c/>
                PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
                SELECT DISTINCT ?rol ?m ?label
                WHERE {
                    <http://data.cervantesvirtual.com/person/40> ?rol ?m .
                    ?m a rdac:Manifestation .
                    ?m rdfs:label ?label
                }
                LIMIT 10
                

Idiomas

Esta sentencia SPARQL devuelve los idiomas ordenados por el número de manifestaciones asociadas. En el modelo FRBR, las relaciones de idioma se establecen a nivel de expresión, pero también es posible incluir una propiedad dc:language en la manifestación para incluir el idioma. Los idiomas se han definido con el vocabulario MADS/RDF y los recursos idioma se han definido con el tipo madsrdf:Language

                PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                PREFIX madsrdf: <http://www.loc.gov/mads/rdf/v1#>
                PREFIX dc: <http://purl.org/dc/elements/1.1/>
                SELECT ?language (COUNT(?manifestation) AS ?no_manifestations) ?code
                WHERE {
                    ?language rdf:type madsrdf:Language .
                    ?language madsrdf:code ?code .
                    ?manifestation dc:language ?language }
                GROUP BY ?language ?code
                ORDER BY DESC(?no_manifestations)
                

Fechas de publicación

Esta sentencia devuelve las fechas de publicación del repositorio. Las fechas se han definido utilizando la ontología OWL-Time. Este vocabulario permite definir las fechas con el time:Instant. La propiedad rdam:dateOfPublication se ha utilizado para establecer la relación con los recursos de tipo data.cervantesvirtual.com/date/xxxx que representan los años en el repositorio.

                PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                PREFIX time: <http://www.w3.org/2006/time#>
                PREFIX rdam: <http://rdaregistry.info/Elements/m/>
                PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
                SELECT ?lbl (COUNT(?manifestation) AS ?no_manifestations)
                WHERE {
                    ?date rdf:type time:Instant .
                    ?manifestation rdam:dateOfPublication ?date .
                    ?date time:inDateTime ?description .
                    ?description time:year ?lbl . }
                GROUP BY ?lbl
                ORDER BY DESC(?no_manifestations)
                

Ediciones y traducciones

El recurso http://data.cervantesvirtual.com/work/18605 corresponde a la obra El retablo de las maravillas que tiene asociadas diferentes ediciones a través de expresiones. La siguiente sentencia muestra las ediciones y traducciones de la obra El retablo de las maravillas disponibles en el catálogo.

                PREFIX rdam: <http://rdaregistry.info/Elements/m/>
                SELECT ?m ?title
                WHERE {
                    ?m rdam:workManifested <http://data.cervantesvirtual.com/work/18605> .
                    ?m rdam:title ?title .
                }

Se obtienen como resultado las siguientes ediciones de la obra El retablo de las maravillas:

Publicaciones que son continuación de otras obras

En el catálogo existen obras que son continuación de otras y están marcadas con la propiedad rdau:continuedBy. La siguiente sentencia muestra las obras que son continuación de otras obras disponibles en el repositorio.

                PREFIX rdau: <http://rdaregistry.info/Elements/u/>
                SELECT ?m
                WHERE {
                    ?m rdau:continuedBy ?m2
                }
                

Obras que son suplementos de otras obras

Esta sentencia lista los suplementos de obras en el catálogo a través de la propiedad rdau:supplementTo.

                PREFIX rdau: <http://rdaregistry.info/Elements/u/>
                SELECT ?m
                WHERE {
                    ?m rdau:supplementTo ?m2
                }
                

Adaptaciones de obras

Esta sentencia lista las obras que son adaptaciones de otras en el catálogo a través de la propiedad rdau:adaptationOf.

                PREFIX rdau: <http://rdaregistry.info/Elements/u/>
                SELECT ?m
                WHERE {
                    ?m rdau:adaptationOf ?m2
                }
                

Roles con manifestación

Esta sentencia lista los diferentes roles que existen entre autores y manifestaciones. Es posible cambiar rdac:Manifestation por rdac:Expression o rdac:Work para obtener los roles con las entidades expresión y obra.

                PREFIX rdau: <http://rdaregistry.info/Elements/u/>
                PREFIX rdac: <http://rdaregistry.info/Elements/c/>
                SELECT distinct ?rol
                WHERE {
                    ?author ?rol ?m .
                    ?m a rdac:Manifestation .
                    ?author a rdac:Person
                }
                

Algunos ejemplos de roles devueltos por la consulta son los siguientes:

http://rdaregistry.info/Elements/a/otherPFCManifestationOf http://rdaregistry.info/Elements/a/publisherOf http://rdaregistry.info/Elements/a/directorOf http://rdaregistry.info/Elements/a/printerOf http://rdaregistry.info/Elements/a/contributorOf

Entidad corporativa

El modelo FRBR describe la entidad Agente como tres subtipos: Persona, Entidad corporativa y Familia. La sentencia siguiente permite obtener las entidades corporativas en el repositorio.

                PREFIX rdac: <http://rdaregistry.info/Elements/c/>
                SELECT ?s
                WHERE {
                    ?s a rdac:CorporateBody
                }
                LIMIT 10