Europeana Semantic elements (ESE)
ESE documentation and schema
- ESE documentation can be found at http://pro.europeana.eu/share-your-data/data-guidelines/ese-documentation (includes schema and normalisation guidelines)
- BASE URI for ESE and all Europeana schemas
Migration of ESE data to EDM
Aim: Ensure conversion of ESE data (whether legacy data or new ingested data that providers submit using ESE) into EDM
Sub-tasks:
- Creating a mapping from ESE to EDM
- Europeana-level migration from ESE to EDM: tool to transform ESE data already ingested into EDM
- Content Provider-level migration from ESE to EDM: plug ESE/EDM migration to apply it to the mappings to ESE created in the ingestion tool by by providers
Participants: Europeana (AI), WP3.2@ASSETS (CM, UPS), WP1@EConnect (UW, VUA).
data.europeana.eu ESE2EDM Mapping rules
NB: this mapping rules only apply to legacy ESE data for which Europeana has produced data (e.g., europeana:year). Providers would never have to submit data that includes Europeana aggregations, among other things. This conversion is now also specific to the Linked Data pilot data.europeana.eu. It generate of data which is specific to the publication case (e.g., the resource map, use guidelines pointers). Europeana's internal data storage won't include all this.
- 1: Create object, provider's aggregation and proxy
- ESE source: <ese:uri>http://www.europeana.eu/resolve/record/{collection id}/{object id hash}</ese:uri>
- EDM output:
- simple RDF resource for the object with URI http://data.europeana.eu/item/{institute id}/{object id hash} (Note: this can be replaced by a resource without any given type, or with a type chosen from new classes mirroring the Europeana types: TEXT, IMAGE, AUDIO, VIDEO)
- this resource has two foaf:isPrimaryTopicOf: the Europeana record URL (ese:uri) and the resource map URI (see step 6)
- ore:Aggregation with URI http://data.europeana.eu/aggregation/provider/{collection id}/{object id hash}
- ore:Proxy with URI http://data.europeana.eu/proxy/provider/{collection id}/{object id hash}
- cc:useGuidelines with http://www.europeana.eu/rights/pd-usage-guide/ as object when ese:rights is Public Domain mark or CC0
- simple RDF resource for the object with URI http://data.europeana.eu/item/{institute id}/{object id hash} (Note: this can be replaced by a resource without any given type, or with a type chosen from new classes mirroring the Europeana types: TEXT, IMAGE, AUDIO, VIDEO)
- 2: Create Europeana aggregation and proxy
- ESE source: <ese:uri>http://www.europeana.eu/resolve/record/{collection id}/{object id hash}</ese:uri>
- EDM output
- edm:EuropeanaAggregation with URI http://data.europeana.eu/aggregation/europeana/{collection id}/{object id hash}
- ore:Proxy with URI http://data.europeana.eu/proxy/europeana/{collection id}/{object id hash}
- 3: Create edm:aggregatedCHO, ore:proxyFor and ore:proxyIn properties
- (provider's)ore:Aggregation - edm:aggregatedCHO - URI for item
- (provider's)ore:Proxy - ore:proxyFor - URI for item
- (provider's)ore:Proxy - ore:proxyIn - (provider) Aggregation
- edm:EuropeanaAggregation - edm:aggregatedCHO - URI for item
- edm:EuropeanaAggregation - ore:aggregates - (provider) Aggregation
- (Europeana's)ore:Proxy - ore:proxyFor - URI for item
- (Europeana's)ore:Proxy - ore:proxyIn - Europeana Aggregation
- 4: Create basic properties of Europeana aggregation
- ore:describedBy with http://data.europeana.eu/rm/{collection id}/{object id hash} as object
- dc:creator with "Europeana" as object (can be a URI for Europeana, in a later mapping)
- edm:landingPage with the URL of Europeana HTML object page as object: http://www.europeana.eu/portal/record/{collection id}/{object id hash}.html
- edm:preview with the URI of thumbnails given by the thumbnail API: http://europeanastatic.eu/api/image?uri={value of ese:object or ese:isShownBy if there's no object}&size=FULL_DOC&type={value of ese:type} if Preview Opt-Out is not activated for the collection
- a cc:useGuidelines with http://www.europeana.eu/rights/pd-usage-guide/ as object when ese:rights is Public Domain mark
- edm:collectionName created from the name of the file (in the Europeana SVN) the mapping is applied to
- 5: Map ESE data elements: their values are distributed over Europeana's or provider's proxies and aggregations, based on whether they are created by Europeana or the provider, according to the ESE Mapping and Normalization guidelines:
ESE element | property of provider's Aggregation | property of provider's Proxy | property of Europeana Aggregation | property of Europeana Proxy |
---|---|---|---|---|
ese:country | edm:country | |||
ese:dataProvider | edm:dataProvider * | |||
ese:hasObject | (no mapping) | (no mapping) | (no mapping) | (no mapping) |
ese:isShownAt | edm:isShownAt ** | |||
ese:isShownBy | edm:isShownBy ** | |||
ese:language | edm:language | |||
ese:object | edm:object ** (7) | |||
ese:provider | edm:provider * | |||
dc:rights | dc:rights (1) | |||
ese:rights | edm:rights ** (2) | |||
ese:type | edm:type (3) | |||
ese:unstored | (no mapping) (4) | |||
ese:uri | (no mapping) | (no mapping) | (no mapping) | (no mapping) |
ese:userTag | edm:userTag (cf step 7) | |||
ese:year | edm:year (5) | |||
other (6) | corresponding property |
For notes see here
- 6 (exploratory): Create an ORE ResourceMap for the record.
- URI of ResourceMap is http://data.europeana.eu/rm/{collection id}/{object id hash}
- dc:publisher with "Europeana" as object (can be a URI for Europeana, in a later mapping)
- dc:contributor with all ese:provider and ese:dataProvider from the original record with their original value
- foaf:primaryTopic with central object URI as object: http://data.europeana.eu/item/{institute id}/{object id hash}
- ore:describes with Europeana aggregation URI as object: http://data.europeana.eu/aggregation/europeana/{institute id}/{object id hash}
- xhtml:license with http://creativecommons.org/publicdomain/zero/1.0/ as object and cc:useGuidelines with http://www.europeana.eu/rights/metadata-usage-guidelines/ as object.
- 7 (not done now; ese:userTags are not exported in ESE records): Create, for each user having tagged the object, a new aggregation and proxy.
- aggregation has triple: aggregation - dc:creator - [USER U]
- proxy has triple: proxy - edm:userTag - [CONTENT OF TAG] for each tag contributed by the user. We can't know whether tags qualify the contributed object, or are marginally related to it. But I expect most of them to be about the object.
Later on we could replace this by an edm:hasAnnotation statement with an edm:EuropeanaObject that carries the content of the tag.
Implementation history
A first implementation has been made by Victor de Boer (VU) based for the first mapping rule, using the XMLRDF tool from EConnect WP1.
Bernhard Haslhofer (Cornell/UW), Antoine Isaac (Europeana) and Cesare Concordia (ISTI) Office have later worked on a complete conversion process for the Europeana LOD pilot, based on a stylesheet. The complete conversion suite for the LOD pilot is available at Bernhard's GIT repo. Conversion of the Europeana set selected for the Europeana Linked Open Data pilot is available via http://data.europeana.eu