Towards FAIR Mappings implementation
FAIR Mappings WG
Joonas Kesäniemi
Toshiyuki Hiraki
2025-10-13
25th RDA Plenary Meeting �Brisbane, 2025
Acknowledgement of Country
We acknowledge and celebrate the First Australians on whose traditional lands we meet, and we pay our respect to their elders past and present.
Welcome to new RDA members!
OPENNESS
COMMUNITY-�DRIVEN
CONSENSUS
NON-PROFIT AND TECHNOLOGY-�NEUTRAL
HARMONISATION
INCLUSIVITY
6 Guiding Principles are at the heart of the RDA community.
JOIN THE RDA�www.rd-alliance.org/register/
All RDA members are expected to adhere by the RDA Code of Conduct to foster a welcoming and inclusive environment.
Agenda
WG - Planned deliveries
Status update
Towards mappings ontology (WIP)
Mapping specification creation (process)
prov:Activity
prov:Entity
Mapping relationship
mapping statement
prov:wasGeneratedBy
Mapping specification
mapping function
Mapping execution (process)
has part
Lexical matching
Manual mapping curation
ontology bridge axiom (complex)
digital object
prov:wasGeneratedBy
has input (prov:uses)
has input (prov:uses)
dcat:Dataset
Mapping activity (process)
schema mapping
mapping set
LinkML-map
XSLT script
pure Python script
SSSOM document
named equivalence axiom (simple)
Towards mappings ontology (WIP)
Mapping specification creation (process)
prov:Activity
prov:Entity
Mapping relationship
mapping statement
prov:wasGeneratedBy
Mapping specification
mapping function
Mapping execution (process)
has part
Lexical matching
Manual mapping curation
ontology bridge axiom (complex)
digital object
prov:wasGeneratedBy
has input (prov:uses)
has input (prov:uses)
dcat:Dataset
Mapping activity (process)
schema mapping
mapping set
LinkML-map
XSLT script
pure Python script
SSSOM document
named equivalence axiom (simple)
Scope of this session
Mapping specification
schema mapping
mapping set
LinkML-map
XSLT script
Python script
SSSOM document
SKOS document
Case studies - current status
What maketh a mapping FAIR?
Running example:
DataCite to DCAP-AP (subset)
“This profile defines alignments for the subset of DataCite metadata elements supported by DCAT-AP.”
“This profile defines alignments for all the DataCite metadata elements using DCAT-AP and other Semantic Web vocabularies (whenever DCAT-AP does not provide suitable candidates).”
Mapping cases covered by examples
Schema mapping
Case 1.1: Collection time period transformation
Time periods are expressed in DataCite using RKMS-ISO8601 standard whereas DCAT uses separate dcat:startDate and dcat:endDate properties. This requires one-to-many mapping.
Case 1.2 : Language element transformation
DataCite uses languages defined in RFC 3066 which are mapped to URIs containing three letter codes for the DCAT.
Mapping sets
Case 2.1 - Data vocabulary mapping
Mapping between elements of the DataCite data format vocabulary to properties of the DCAT-AP using information from the 1st level mapping table.
Mapping specifications
Schema mappings
Mapping sets
Schema mappings
For data transformation
Schema mapping:
Example inputs and outputs
Input data example
<dates>
<date dateType=”Collected”>
2004-03-02/2005-06-02
</date>
</dates>
<language>en</language>
Output data example
<subject> dct:temporal
[
a dct:PeriodOfTime ;
dcat:startDate "2004-03-02"^^xsd:date ;
dcat:endDate "2005-06-02"^^xsd:date
] .
<subject> dct:language <http://publications.europa.eu/resource/authority/language/eng> .
XSLT Mapping specification
XSLT data transformation demo
LinkML-Map mapping specification
“LinkML Map is a framework for specifying and executing mappings between data models.” - LinkML-Map website
LinkML-Map mapping specification
class_derivations:
populated_from: Date
description: |
Transform Date to dct:PeriodOfTime by parsing the date range in the value field.
Extracts start and end dates from a date range like "2004-03-02/2005-06-02"
slot_derivations:
type:
expr: "'PeriodOfTime'"
description: Set RDF type to PeriodOfTime
start_date:
expr: |
target = src.value.split('/')[0]
description: Extract start date (before the slash) from the value field
end_date:
expr: |
target = src.value.split('/')[1]
description: Extract end date (after the slash) from the value field
LinkML-Map data transformation demo
Python mapping specification
Python mapping specification
Schema mapping summary
Schema mapping specification | Source document | Target document |
XSLT | DataCite XML | DCAT-AP RDF/XML (subset) |
LinkML-Map | DataCite XML | DCAT-AP YAML (subset) |
Python | DataCite XML | DCAT-AP Turtle (subset) |
Mapping sets
For entity alignment
SSSOM mapping specification (TSV)
subject_id | predicate_id | object_id | mapping_justification |
datacite:Identifier | skos:exactMatch | dct:identifier | semapv:ManualMappingCuration |
datacite:Publisher | skos:exactMatch | dct:publisher | semapv:ManualMappingCuration |
datacite:Language | skos:exactMatch | dct:language | semapv:ManualMappingCuration |
datacite:FundingReference | skos:exactMatch | citedcat:isFundedBy | semapv:ManualMappingCuration |
datacite:Version | skos:exactMatch | owl:versionInfo | semapv:ManualMappingCuration |
datacite:Date | skos:broadMatch | dct:created | semapv:ManualMappingCuration |
SKOS mapping specification (Turtle)
datacite:Identifier skos:exactMatch dct:identifier .
datacite:Publisher skos:exactMatch dct:publisher .
datacite:Language skos:exactMatch dct:language .
datacite:FundingReference skos:exactMatch citedcat:isFundedBy .
datacite:Version skos:exactMatch owl:versionInfo .
datacite:Date skos:broadMatch dct:created .
Mapping specification metadata
Ontology reminder
Mapping specification
schema mapping
mapping set
LinkML-map
XSLT script
Python script
SSSOM document
SKOS document
Mapping specification metadata
Mapping specification enumerations
Source types |
ontology |
database |
vocabulary |
schema |
api |
other |
Mapping specification: Representation techniques |
sssom |
r2rml |
rml |
sparql |
yarrrml |
xslt |
linkml-map |
python |
skos |
other |
Source: Representation techniques |
xmlschema |
shacl |
linkml |
jsonschema |
skos |
owl |
rdfs |
other |
XSLT mapping specification metadata
id: http://w3id.org/fmtest/transforms/dataset-to-dcat/xslt
name: Example XSLT mapping specification created for the RDA FAIR Mappings Working Group
description: This example has been create by creating a subset of the CiteDCAP-AP XSLT script (https://raw.githubusercontent.com/ec-jrc/datacite-to-dcat-ap/master/datacite-to-dcat-ap.xsl) created by European Commission, Joint Research Centre (JRC) and Andrea Perego (https://github.com/andrea-perego).
author:
id: https://orcid.org/0000-0002-3770-0006
name: Joonas Kesäniemi
publication_date: 2025-10-11
license: https://joinup.ec.europa.eu/collection/eupl
version: "0.1.0"
representation_technique: xslt
mapping_method: https://w3id.org/semapv/vocab/ManualMappingCuration
documentation: https://ec-jrc.github.io/datacite-to-dcat-ap/
content_url: link
subject_source:
id: https://doi.org/10.14454/fxws-0523
name: DataCite 4.4 XML Schema
version: "4.4"
type: schema
documentation: https://doi.org/10.14454/3w3z-sa82
content_url: https://schema.datacite.org/meta/kernel-4.4/metadata.xsd
representation_technique: xmlschema
object_source:
id: https://mapping-commons.github.io/rda-fair-mappings/example/dcat-date.schema.shacl
name: DataCite profile of DCAT-AP (RDA FAIR Mappings WG P25 example subset)
version: "0.1.0"
type: schema
content_url: link
representation_technique: shacl
LinkML-Map mapping specification metadata
id: http://w3id.org/fmtest/transforms/dataset-to-dcat
name: Dataset Metadata to DCAT Transformation
description: Demonstrates transformation of DataCite date ranges to DCAT-AP temporal periods
and language code to EU authority URI.
author:
id: https://orcid.org/0000-0002-7356-1779
name: Nicolas Matentzoglu
publication_date: 2025-10-10
license: https://creativecommons.org/licenses/by/4.0/
version: "0.1.0"
representation_technique: linkml-map
mapping_method: https://w3id.org/semapv/vocab/ManualMappingCuration
content_url: link
subject_source:
id: https://mapping-commons.github.io/rda-fair-mappings/example/datacite-date.schema.yml
name: DataCite Date Schema (simplified for date transformation example)
type: schema
documentation: https://doi.org/10.14454/3w3z-sa82
content_url: link
representation_technique: linkml
object_source:
id: https://mapping-commons.github.io/rda-fair-mappings/example/dcat-date.schema.yml
name: DCAT Date Schema (simplified for date transformation example)
type: schema
documentation: https://www.w3.org/TR/vocab-dcat-2/
content_url: link
representation_technique: linkml
Python mapping specification metadata
Id: http://w3id.org/fmtest/transforms/dataset-to-dcat/python
name: Dataset Metadata to DCAT Transformation
description: Demonstrates transformation of DataCite date ranges to DCAT-AP temporal periods
and language code to EU authority URI.
author:
id: https://orcid.org/0000-0002-3770-0006
name: Joonas Kesäniemi
publication_date: 2025-10-10
license: https://creativecommons.org/licenses/by/4.0/
version: "0.1.0"
representation_technique: python
mapping_method: https://w3id.org/semapv/vocab/ManualMappingCuration
content_url: link
subject_source:
id: https://doi.org/10.14454/fxws-0523
name: DataCite 4.4 XML Schema
version: "4.4"
type: schema
documentation: https://doi.org/10.14454/3w3z-sa82
content_url: https://schema.datacite.org/meta/kernel-4.4/metadata.xsd
representation_technique: xmlschema
object_source:
id: https://mapping-commons.github.io/rda-fair-mappings/example/dcat-date.schema.shacl
name: DataCite profile of DCAT-AP (RDA FAIR Mappings WG P25 example subset)
version: "0.1.0"
type: schema
content_url: link
representation_technique: shacl
Python mapping specification metadata
Id: http://w3id.org/fmtest/transforms/dataset-to-dcat/python
name: Dataset Metadata to DCAT Transformation
description: Demonstrates transformation of DataCite date ranges to DCAT-AP temporal periods
and language code to EU authority URI.
author:
id: https://orcid.org/0000-0002-3770-0006
name: Joonas Kesäniemi
publication_date: 2025-10-10
license: https://creativecommons.org/licenses/by/4.0/
version: "0.1.0"
representation_technique: python
mapping_method: https://w3id.org/semapv/vocab/ManualMappingCuration
content_url: link
subject_source:
id: https://doi.org/10.14454/fxws-0523
name: DataCite 4.4 XML Schema
version: "4.4"
type: schema
documentation: https://doi.org/10.14454/3w3z-sa82
content_url: https://schema.datacite.org/meta/kernel-4.4/metadata.xsd
representation_technique: xmlschema
object_source:
id: https://mapping-commons.github.io/rda-fair-mappings/example/dcat-date.schema.shacl
name: DataCite profile of DCAT-AP (RDA FAIR Mappings WG P25 example subset)
version: "0.1.0"
type: schema
content_url: link
representation_technique: shacl
Identical with XSLT mapping specification
Embedding metadata with mapping specification
Embedded metadata
Example: XSLT
<!--
id: fm:dataset-to-dcat/xslt
name: Example XSLT mapping specification
author:
id: https://orcid.org/0000-0002-3770-0006
name: Joonas Kesäniemi
publication_date: 2025-10-11
license: https://joinup.ec.europa.eu/collection/eupl
version: "0.1.0"
representation_technique: xslt
mapping_method: semapv:ManualMappingCuration
documentation: https://ec-jrc.github.io/datacite-to-dcat-ap/
-->
<xsl:transform>
<xsl:template match=”/”>
..
</xsl:transform>
<xsl:transform>
<fm:id>fm:dataset-to-dcat/xslt</fm:id>
<fm:name>Example XSLT mapping specification</fm:name>
<fm:author>
<fm:id>https://orcid.org/0000-0002-3770-0006</fm:id>
<fm:name>Joonas Kesäniemi</fm:name>
</fm:author>
<fm:license>
https://joinup.ec.europa.eu/collection/eupl
</fm:license>
<fm:version>0.1.0</fm:version>
<fm:representation_technique>
xslt
</fm:representation_technique>
…
<xsl:template match=”/”>
…
</xsl:transform>
Option 1
Option 2
Example: Python
# id: fm:dataset-to-dcat
# name: Dataset Metadata to DCAT Transformation
# author:
# id: https://orcid.org/0000-0002-3770-0006
# name: Joonas Kesäniemi
# publication_date: 2025-10-11
# license: cc:by
# version: "0.1.0"
# representation_technique: python
# mapping_method: semapv:ManualMappingCuration
# documentation: ...
if __name__ == '__main__':
...
?
Option 1
Option 2
Example: LinkML-Map
# id: fm:dataset-to-dcat
# name: Dataset Metadata to DCAT Transformation
# author:
# id: https://orcid.org/0000-0002-7356-1779
# name: Nicolas Matentzoglu
# publication_date: 2025-10-11
# license: cc:by
# version: "0.1.0"
# representation_technique: linkml-map
# mapping_method: semapv:ManualMappingCuration
# documentation: ...
id: https://example.org/transforms/dataset-to-dcat
title: Dataset Metadata to DCAT Transformation
description: |
Demonstrates transformation of DataCite date ranges to DCAT-AP temporal periods
and language code to EU authority URI.
class_derivations:
MappingSpecification:
populated_from: MappingSet
slot_derivations:
name:
populated_from: title
publication_date:
populated_from: publication_date
Agent:
populated_from: MappingSet
slot_derivations:
id: creator_id
name: creator_label
Option 1
Option 3
Thank you