1 buscador found for ""biblioteca nacional de españa""
SPARQL examples
/* Custom CSS to prevent URIs appearing as links in tables */
.table td {
/* Prevent URLs from being automatically converted to links */
word-break: break-all;
/* Improve readability of long URLs */
overflow-wrap: break-word;
/* Ensure text is not bold */
font-weight: normal;
/* Override Montserrat font */
font-family: inherit;
}
/* Disable link styling for text that looks like a URL inside table cells */
.table td:not(:has(a)) {
color: inherit;
text-decoration: none;
cursor: text;
font-weight: normal;
font-family: inherit;
}
/* If there are automatically generated links, disable them */
.table td a[href^="http://"],
.table td a[href^="https://"] {
color: inherit !important;
text-decoration: none !important;
cursor: text !important;
pointer-events: none !important;
font-weight: normal !important;
/* Force normal font overriding Montserrat SemiBold */
font-family: inherit !important;
/* Alternatively, you can specify a specific font */
/* font-family: Arial, sans-serif !important; */
}
/* Alternative style for URIs displayed as plain text */
.table td[data-uri],
.table .uri-text {
font-family: 'Courier New', monospace;
color: #333;
background-color: #f8f9fa;
padding: 2px 4px;
border-radius: 3px;
font-size: 0.9em;
}
SPARQL Examples
A machine-readable SPARQL endpoint allows querying the RDF descriptions of the datasets in the catalog using the SPARQL query language. It provides developers and professionals with great power and flexibility when composing queries and building applications.
Stored information
All the information that can be queried is loaded in a semantic database. In this type of database the information is stored in graphs.
The semantic database of datos.gob.es contains two graphs:
http://datos.gob.es/catalogo: this graph contains the entire Data Catalog of datos.gob.es
http://datos.gob.es/nti: contains the URIs corresponding to the primary sector taxonomy and the geographic coverage identifiers defined in Annexes IV and V of the Technical Interoperability Standard for Reuse of Information Resources (NTI)
How to use it
SPARQL query editor
To make requests you can use the portal's SPARQL query editor. These kinds of forms assist the developer by providing a text area with syntax highlighting, autocomplete functionality and the option to execute queries, among other features.
HTTP request
SPARQL queries can be made via GET requests, which return data according to the parameters specified in the call.
The base address of the Catalog's SPARQL endpoint is:
http://datos.gob.es/virtuoso/sparqlYou must add the query parameter to this address followed by the query you want to execute.
For example, if we want to run the following query that retrieves distinct types present in the graph:
SELECT DISTINCT ?tipo
WHERE {
?x a ?tipo.
}
LIMIT 10
We must URL-encode it by replacing spaces with +, in this way:
SELECT+DISTINCT+?tipo+WHERE+{?x+a+?tipo}+LIMIT+10
Once encoded and knowing the endpoint address, it would be executed as follows:
https://datos.gob.es/virtuoso/sparql?query=SELECT+DISTINCT+?tipo+WHERE+{?x+a+?tipo}+LIMIT+10
If you access the SPARQL endpoint base address without adding the query parameter with the query, it will return a page not found error.
The default response format is HTML, but you can request other formats via the format parameter — for example to obtain CSV (comma-separated values):
https://datos.gob.es/virtuoso/sparql?query=SELECT+DISTINCT+?tipo+WHERE+{?x+a+?tipo}+LIMIT+10&format=text/csvThis parameter can accept the following values:
Value
Format
text/html
HTML
application/vnd.ms-excel
Spreadsheet
text/tab-separated-values
TSV
application/sparql-results+xml
XML
application/sparql-results+json
JSON
application/javascript
Javascript
text/turtle
Turtle
application/rdf+xml
RDF/XML
text/plain
N-Triples
text/csv
CSV
Examples
Query the graphs available at the SPARQL endpoint
If you do not specify any graph when running the query, information from all available graphs will be returned.
You can list the available graphs with this query:
SELECT DISTINCT ?uri
WHERE {
GRAPH ?uri {
?s a ?t
}
}If we want to know which graph a piece of information belongs to, we can do it like this where variable ?g will show which graph each ?x belongs to:
SELECT DISTINCT ?g ?tipo
WHERE {
GRAPH ?g {
?x a ?tipo.
}
}
LIMIT 100We can get results from a single graph as follows:
SELECT DISTINCT ?tipo
WHERE {
GRAPH <http://datos.gob.es/catalogo> {
?x a ?tipo.
}
}
LIMIT 100Now we will only see the ?x that are in the specified graph.
Retrieve all classes present at the SPARQL endpoint
This query is very useful because it shows all types of information that are stored.
Also, to avoid getting unhelpful noise, we will specify our graphs.
First we specify the Catalog graph:
SELECT DISTINCT ?tipo
WHERE {
GRAPH <http://datos.gob.es/catalogo> {
?x a ?tipo.
}
}Now we'll use both graphs at once using VALUES
SELECT DISTINCT ?tipo
WHERE {
GRAPH ?grafo {
?x a ?tipo.
}
VALUES ?grafo {
<http://datos.gob.es/catalogo> <http://datos.gob.es/nti>
}
}The final result will look similar to the following:
tipo
http://spdx.org/rdf/terms#Checksum
http://www.w3.org/ns/dcat#Distribution
http://xmlns.com/foaf/0.1/Document
http://purl.org/dc/terms/PeriodOfTime
Remaining types...
Retrieve all datasets from the Catalog
Now that we know the types, let's request all datasets, which correspond to this URI: http://www.w3.org/ns/dcat#Dataset
PREFIX dcat: <http://www.w3.org/ns/dcat#>
SELECT DISTINCT ?dataset
WHERE {
?dataset a dcat:Dataset .
}The result is a list of URLs for all datasets.
Retrieve all data services from the Catalog
Now that we know the types, let's request all data services, which correspond to this URI: http://www.w3.org/ns/dcat#DataService
PREFIX dcat: <http://www.w3.org/ns/dcat#>
SELECT DISTINCT ?dataService
WHERE {
?dataService a dcat:DataService .
}The result is a list of URLs for all data services.
Get the number of main entities and publishers per Graph
A SPARQL query to quickly overview the content lists the number of resources per type — dcat:Dataset (datasets), dcat:DataService (data services), dcat:Distribution (distributions) and dct:publisher (resource publishers) — for each graph (g) that contains content.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?g
(COUNT(DISTINCT ?dataset) AS ?numDatasets)
(COUNT(DISTINCT ?service) AS ?numDataServices)
(COUNT(DISTINCT ?distribution) AS ?numDistributions)
(COUNT(DISTINCT ?publisher) AS ?numPublishers)
WHERE {
GRAPH ?g {
?dataset a dcat:Dataset .
OPTIONAL { ?dataset dct:publisher ?publisher. }
OPTIONAL { ?dataset dcat:distribution ?distribution. }
OPTIONAL { ?service a dcat:DataService. }
}
}
GROUP BY ?g
ORDER BY DESC(?numDatasets)
LIMIT 100The result would be:
g
numDatasets
numDataServices
numDistributions
numPublishers
http://datos.gob.es/catalogo
97573
2
545171
256
Retrieve all properties that datasets have
We want to get more information about datasets, but we only know their URIs; let's ask for all their properties:
PREFIX dcat: <http://www.w3.org/ns/dcat#>
SELECT DISTINCT ?propiedad
WHERE {
?dataset a dcat:Dataset .
?dataset ?propiedad ?valor .
}These are some of the properties they have; note that by defining the prefix PREFIX dcat: <http://www.w3.org/ns/dcat#>, the response shows dcat:keyword instead of the full URI http://www.w3.org/ns/dcat#keyword
property
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://purl.org/dc/terms/modified
http://purl.org/dc/terms/temporal
dcat:keyword
Remaining properties...
Retrieve all properties that data services have
Similarly, we can retrieve all properties of data services:
PREFIX dcat: <http://www.w3.org/ns/dcat#>
SELECT DISTINCT ?propiedad
WHERE {
?dataService a dcat:DataService .
?dataService ?propiedad ?valor .
}These are some of the properties they have:
property
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://purl.org/dc/terms/license
http://purl.org/dc/terms/accessRights
http://data.europa.eu/r5r/applicableLegislation
Remaining properties...
Retrieve all organizations that publish data
We will use the property dct:publisher (publisher) to get all organizations that publish data.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT DISTINCT ?publicador
WHERE {
?x a dcat:Dataset .
?x dct:publisher ?publicador.
}
publisher
http://datos.gob.es/recurso/sector-publico/org/Organismo/EA0010587
http://datos.gob.es/recurso/sector-publico/org/Organismo/E05068001
http://datos.gob.es/recurso/sector-publico/org/Organismo/L01280148
http://datos.gob.es/recurso/sector-publico/org/Organismo/LA0006111
Remaining organizations...
Retrieve properties of organizations that publish datasets
With URIs we don't know the organization names; let's ask for the properties of those URIs.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT DISTINCT ?propiedad
WHERE {
?x a dcat:Dataset .
?x dct:publisher ?publicador.
?publicador ?propiedad ?valor.
}These are all properties of publishers:
property
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
dct:identifier
http://xmlns.com/foaf/0.1/name
Retrieve the names of organizations that publish datasets
We will retrieve the URI and the name of organizations (foaf:name) that publish datasets. Since names may exist in different languages, we filter specifically for Spanish names (es), but any other language tag could be used.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?publicador ?nombre
WHERE {
?x a dcat:Dataset ;
dct:publisher ?publicador .
?publicador foaf:name ?nombre.
FILTER(LANGMATCHES(LANG(?nombre), "es"))
}The result is a list of all publishing organizations and their names:
publisher
name
http://datos.gob.es/recurso/sector-publico/org/Organismo/E05068001
"Ministerio para la Transición Ecológica y el Reto Demográfico"
http://datos.gob.es/recurso/sector-publico/org/Organismo/EA0010587
"Instituto Nacional de Estadística"
http://datos.gob.es/recurso/sector-publico/org/Organismo/E05068901
"Ministerio de Asuntos Económicos y Transformación Digital"
http://datos.gob.es/recurso/sector-publico/org/Organismo/EA0019768
"Biblioteca Nacional de España"
Remaining organization URIs...
Remaining organization names...
Retrieve the names of the ten organizations with the most published datasets and show their counts
To perform this query we need to group results, order them and limit the total to 10.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?nombre
(COUNT(?x) AS ?num)
WHERE {
{ ?x a dcat:Dataset } .
?x dct:publisher ?publicador .
?publicador foaf:name ?nombre
.
}
GROUP BY ?nombre
ORDER BY DESC(?num)
LIMIT 10The result will be:
name
num
"Instituto Nacional de Estadística"
21629
"Instituto Canario de Estadística"
21326
"Comunidad Autónoma del País Vasco"
8707
"Parlamento de Canarias"
4355
Remaining organization names...
Remaining published datasets...
Retrieve the names of the ten organizations with the most published data services and show their counts
We can apply the same example as above, but this time for data services (dcat:DataService).
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?nombre (COUNT(?x) AS ?num)
WHERE {
{ ?x a dcat:DataService } .
?x dct:publisher ?publicador .
?publicador foaf:name ?nombre .
}
GROUP BY ?nombre
ORDER BY DESC(?num)
LIMIT 10The result will be:
name
num
"Ministerio para la Transición Ecológica y el Reto Demográfico"
1
"Instituto Nacional de Estadística"
1
Remaining organization names...
Remaining published services...
Retrieve the names of the ten organizations with the most total published resources and show a breakdown
Combining the previous examples, we can return the number of services (dcat:DataService) and datasets (dcat:Dataset) per publishing organization and the total number of published entities. To do this we sum both totals and present the results ordered from highest to lowest number of published resources. Additionally, the FILTER(BOUND(?dataset) || BOUND(?service)) excludes empty organizations from the ranking, showing only those that actually contributed datasets or services to the catalog.
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?nombre
(COUNT(DISTINCT ?dataset) AS ?numDatasets)
(COUNT(DISTINCT ?service) AS ?numDataServices)
((COUNT(DISTINCT ?dataset) + COUNT(DISTINCT ?service)) AS ?numTotal)
WHERE {
?publicador foaf:name ?nombre .
FILTER(LANGMATCHES(LANG(?nombre), "es"))
OPTIONAL { ?dataset a dcat:Dataset ; dct:publisher ?publicador . }
OPTIONAL { ?service a dcat:DataService ; dct:publisher ?publicador . }
FILTER(BOUND(?dataset) || BOUND(?service))
}
GROUP BY ?nombre
ORDER BY DESC(?numTotal)
LIMIT 10The result will be:
name
numDatasets
numDataServices
numTotal
"Instituto Nacional de Estadística"
21629
1
21630
"Instituto Canario de Estadística"
21326
0
21326
"Comunidad Autónoma del País Vasco"
8707
0
8707
"Parlamento de Canarias"
4355
0
4355
Remaining organization names...
Remaining published datasets...
Remaining published services...
Remaining published totals...
Páxina básica