EUROPEANA SPARQL API
The SPARQL API is different from the other Europeana APIs in that it allows you to explore connections between Europeana data and outside data sources, like VIAF, Iconclass, Getty Vocabularies (AAT), Geonames, Wikidata, and DBPedia. If you are looking for a way to delve into the structured metadata of Europeana (for instance, to ask the question "What are all the French 18th-century painters with at least five artworks available through Europeana'), this is the API for you. If you want to simply search Europeana in an unstructured way (for instance 'give me all results for the word 'cat'), then using the Search API is a better choice. SPARQL is part of Europeana's Linked Open Data initiative.
Before start using this API, we recommend reading the introduction page for an overview of the EDM model and reading the Terms of Use. If you want to get started with this API, go directly to the Getting Started section or try it out directly on the Console.
If you want to learn more about SPARQL, we recommend the How to SPARQL and Wikibooks SPARQL tutorial. We also recommend reading the Finding Europeana audio with SPARQL and SPARQL for humanists as they were the inspiration for us to provide this API.
Europeana Linked Open Data feeds Irish place name database
Europeana Linked Open Data feeds Irish place name database
ECLAP Linked Open Graph
ECLAP Linked Open Graph allows users to see, explore and browse the relationships among the ECLAP content and other types of resource created on the ECLAP platform.
Update
The SPARQL API is powered by a separate database (Virtuoso) which reflects the current state of the Europeana datasets as of July 2017. We are working on a monthly update for this endpoint so that it is kept in sync with the main Europeana APIs.
Credits
The initial pilots were set up by Ontotext under the framework of the Europeana Creative project and using the Ontotext GraphDB semantic repository (which has been replaced by Virtuoso).
Discussion
Besides our main discussion channels, we have a dedicated Europeana LOD Google Group for a discussion on this topic.
GETTING STARTED
Things to know before starting
Europeana data is represented as a triple:
<subject> <predicate> <object>
Each subject, predicate and an object represent a node within Europeana’s network of resources. These statements are usually represented as URIs to which certain labels might correspond.
For instance
<http://data.europeana.eu/item/2021604/C2D27CB79870761BE291A3FACAB963F62D7CA39B> <http://purl.org/dc/terms/creator> "Moltzheim, A. de" .
A SPARQL query requires the declaration of PREFIXes that are shortcuts to the labels of given predicates.
Where is the endpoint available?
http://sparql.europeana.eu/
A first query
1. Add your prefixes by selecting them in the SPARQL editor as described above.
For instance a selection of the namespaces dc, edm and ore will give you:
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX edm: <http://www.europeana.eu/schemas/edm/> PREFIX ore: <http://www.openarchives.org/ore/terms/>
2. Then SELECT the things you want to find and define names for these variables.
We want all the results with a title, a creator, a media URL and a year.
SELECT ?title ?creator ?mediaURL ?year
3. Define the variables
WHERE { ?item edm:type "SOUND" ; ore:proxyIn ?proxy; dc:title ?title ; dc:creator ?creator . ?proxy edm:isShownBy ?mediaURL . ?EuropeanaProxy edm:year ?year . }
In this example you restrict the results to the resources with the edm:type SOUND.
4. Define a LIMIT
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX edm: <http://www.europeana.eu/schemas/edm/> PREFIX ore: <http://www.openarchives.org/ore/terms/> SELECT ?title ?creator ?mediaURL ?date WHERE { ?CHO edm:type "SOUND" ; ore:proxyIn ?proxy; dc:title ?title ; dc:creator ?creator ; dc:date ?date . ?proxy edm:isShownBy ?mediaURL . } LIMIT 100
You obtain all the first 100 SOUND resources which have a title, a creator, a media URL and a year.
How to define more complex queries
You can start defining more complex queries which will group, list, filter or order your results. The commands COUNT, GROUP BY and ORDER BY can be used for this purpose.
For instance we want to order our results by year (ascending order)
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX edm: <http://www.europeana.eu/schemas/edm/> PREFIX ore: <http://www.openarchives.org/ore/terms/> SELECT ?title ?creator ?mediaURL ?date WHERE { ?CHO edm:type "SOUND" ; ore:proxyIn ?proxy; dc:title ?title ; dc:creator ?creator; dc:date ?date . ?proxy edm:isShownBy ?mediaURL . FILTER (?date > "1780" && ?date < "1930") } ORDER BY asc (?date) LIMIT 100
You will notice that this type of query takes longer as we are asking to the database to not only return results but also to order them.
MORE EXAMPLES OF SPARQL QUERIES
Example 1: List of data providers which contributed content to Europeana
PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT ?DataProvider WHERE { ?Aggregation edm:dataProvider ?DataProvider }`
Example 2: List of datasets from Italy
PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT DISTINCT ?Dataset WHERE { ?Aggregation edm:datasetName ?Dataset ; edm:country "Italy" }
Example 3: Objects provided to Europeana from the 18th and from France
PREFIX ore: <http://www.openarchives.org/ore/terms/> PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT DISTINCT ?ProvidedCHO ?year WHERE { ?Aggregation edm:aggregatedCHO ?ProvidedCHO ; edm:country "France" . ?Proxy ore:proxyFor ?ProvidedCHO ; edm:year ?year . FILTER (?year > "1700" && ?year < "1800") } ORDER BY asc(?year) LIMIT 100
Example 4: Listing of edm:Agent
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT ?Agent WHERE { ?Agent rdf:type edm:Agent } LIMIT 100
Example 5: Objects provided to Europeana linking to edm:Place
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX ore: <http://www.openarchives.org/ore/terms/> PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT DISTINCT ?ProvidedCHO WHERE { ?Place rdf:type edm:Place . ?Proxy ?property ?Place ; ore:proxyIn ?Aggregation . ?Aggregation edm:aggregatedCHO ?ProvidedCHO }
Example 6: List certain attributes of an item using Dublin Core terms
Try this on the wikidata query service
#Get information of Europeana item using federated query PREFIX dc: PREFIX edm: PREFIX ore: SELECT * WHERE { BIND( as ?p854) SERVICE { { ?p854 ?created . ?p854 ?identifier . ?p854 ?publisher . ?p854 ?rights . ?p854 ?title . ?p854 ?description . } } }
Example 7: Objects provided to Europeana linking to skos:Concept from the Getty target vocabulary
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX ore: <http://www.openarchives.org/ore/terms/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX edm: <http://www.europeana.eu/schemas/edm/> SELECT DISTINCT ?ProvidedCHO WHERE { ?Concept rdf:type skos:Concept . FILTER strstarts(str(?Concept), "http://vocab.getty.edu/aat/") . ?Proxy ?property ?Concept ; ore:proxyIn ?Aggregation . ?Aggregation edm:aggregatedCHO ?ProvidedCHO } LIMIT 100
Example 8: Use a federated query to extract Europeana's DC:subjects for a certain item and translate them to other vocabulary URIs
Try this on the Sophox query service
# Find Commons category suggestions for a Commons file using subjects stored in Europeana # 1.) Bind identifier of the photo to variable # 2.) Read subjects in Finnish of photo defined by identifier from Europeana # 3.) Translate subjects to YSO ontology using Finto-service. # 4.) Translate YSO items to Wikidata items using Wikidata and read Commons categories SELECT * WITH { SELECT * WHERE { # 1.) Bind identifier of the photo to variable BIND("HK19700502:254" as ?identifier) # 2.) Read subjects in Finnish of photo defined by identifier from Europeana SERVICE { ?europeana ?identifier . ?europeana ?subject . } } } AS %europeana WHERE { INCLUDE %europeana . # 3.) Translate subjects to YSO ontology using Finto-service. SERVICE { ?yso skos:prefLabel ?subject ; skos:inScheme } # 4.) Translate YSO items to Wikidata items using Wikidata and read Commons categories BIND(REPLACE(STR(?yso), "http://www.yso.fi/onto/yso/p", "") as ?yso_number) SERVICE { ?wikidata wdt:P2347 ?yso_number . ?wikidata wdt:P373 ?commonscat } }

Europeana Foundation
Prins Willem-Alexanderhof 5
2595 BE Den Haag
Netherlands
News
Events
Publications
Contact us
Terms & policies
OUR MISSION
Europeana empowers the cultural heritage sector in its digital transformation. We develop expertise, tools and policies to embrace digital change and encourage partnerships that foster innovation.
All texts are CC BY-SA, images and media licensed individually.
Europeana Foundation is registered at the Chamber of Commerce under number 27307531, RSIN number is 8186.80.349.
FIND US ELSEWHERE

Europeana is an initiative of the European Union, financed by the European Union’s Connecting Europe Facility and European Union Member States. The Europeana services, including this website, are operated by a consortium led by the Europeana Foundation under a service contract with the European Commission.

The European Commission does not guarantee the accuracy of the information and accepts no responsibility or liability whatsoever with regard to the information on this website. Neither the European Commission, nor any person acting on the European Commission’s behalf, is responsible or liable for the accuracy or use of the information on this website.
Hi! Could we please enable some additional services for analytics and security? You can always change or withdraw your consent later.
Let me choose
IntroGet StartedExamples