1 of 42

2 of 42

Towards FAIR Mappings implementation

FAIR Mappings WG

Joonas Kesäniemi

Toshiyuki Hiraki

2025-10-13

25th RDA Plenary Meeting �Brisbane, 2025

3 of 42

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.

4 of 42

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 RDAwww.rd-alliance.org/register/

All RDA members are expected to adhere by the RDA Code of Conduct to foster a welcoming and inclusive environment.

5 of 42

Agenda

  • WG status update (5 mins)
  • Introduction to the current draft of the FAIR Mapping ontology (10 mins)
  • FAIR Mapping examples and discussion
    • Running example introduction
    • Mapping cases covered by our examples
      • 3 schema mappings
      • 2 mapping set
    • Mapping specification model overview
    • Mapping metadata comparison
    • Distributing metadata (if time permits)

6 of 42

WG - Planned deliveries

  • Technical and methodological recommendations
  • Harmonized mappings case study collection
  • Mapping taxonomy/ontology
  • Exchange model for different types of mappings and associated metadata
  • FAIR Mappings Knowledge Base

7 of 42

Status update

  • Work on refining the ontology/taxonomy continues
  • Feedback solicitation regarding FAIR Mappings recommendations on-going (FAIR-IMPACT)
    • FAIR Mappings recommendations
    • Practical Mapping Framework
    • Summary and links to action items
  • Discussions and iterations around the FAIR Mappings Specification
    • Metadata model
    • Mapping representations
  • Case studies

8 of 42

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)

9 of 42

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)

10 of 42

Scope of this session

Mapping specification

schema mapping

mapping set

LinkML-map

XSLT script

Python script

SSSOM document

SKOS document

11 of 42

Case studies - current status

  • Number of cases: 25
  • Mapping specifications types:
    • 8 schema mappings
      • Data transformation
      • Schema transformation
      • Schema subsetting
    • 17 mapping sets
      • 6 ontology mappings
      • 11 entity mappings
  • Distinct mappings specification implementations:
    • Python, SSSOM TSV, SSSOM RDF, RDF reification, SKOS, �Custom JSON, I-ADOPT, RDFS, �LinkML, LinkML-Map, XSLT, OWL �and SPARQL

12 of 42

What maketh a mapping FAIR?

  • Mapping specification must
    • be accessible via GUPRI
    • include metadata according to the FAIR Mappings data model
  • No requirement for a specific way of representing mapping relationships
    • Our case study collection already contains ~15 different ones
    • Differences in composability and machine-actionability
    • Recommendations for specific use cases / Pros and cons of different approaches

13 of 42

Running example:

DataCite to DCAP-AP (subset)

  • Documentation available at https://ec-jrc.github.io/datacite-to-dcat-ap/
  • Source schema: DataCite 4.4
  • Target schema:
    • CiteDCAT-AP core

This profile defines alignments for the subset of DataCite metadata elements supported by DCAT-AP.”

    • CiteDCAT-AP extended

“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).”

14 of 42

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.

15 of 42

Mapping specifications

Schema mappings

  • XSLT
  • LinkML-Map
  • Python

Mapping sets

  • SKOS
  • SSSOM

16 of 42

Schema mappings

For data transformation

17 of 42

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> .

18 of 42

XSLT Mapping specification

  • Based on the XSLT implementation by EC, JCR and Andrea Perego
  • Only includes templates to handle mapping cases 1.1 and 1.2 (collection date and language)
  • Example source document: Full DataCite XML example
  • Can be executed with any capable XSLT processor

19 of 42

XSLT data transformation demo

20 of 42

LinkML-Map mapping specification

“LinkML Map is a framework for specifying and executing mappings between data models.” - LinkML-Map website

  • Schema mapping specification can be executed using linkml-map tool with following parameters:
    • Input schema
    • Transformation document (= mapping specification)
    • Source type
    • Source document
  • Full example available in the FAIR Mappings WG github repo

21 of 42

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

22 of 42

LinkML-Map data transformation demo

23 of 42

Python mapping specification

  • Custom script that takes source document as input
  • Built-in logic related to specific versions of source and target schemas → Purpose built for this specific mapping case
  • PEP 723 – Inline script metadata
    • Provides a way to include dependency information to the script for easy replication of the runtime environment
    • Step towards easily re-usable python based mapping components

24 of 42

Python mapping specification

25 of 42

Schema mapping summary

  • All mapping specifications tackle the same problem
  • Same source content format and data model
  • Target document
    • Same data model
    • Different format

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)

26 of 42

Mapping sets

For entity alignment

27 of 42

SSSOM mapping specification (TSV)

Selected 1st level mappings from DataCite to CiteDCAT-AP

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

28 of 42

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 .

29 of 42

Mapping specification metadata

30 of 42

Ontology reminder

Mapping specification

schema mapping

mapping set

LinkML-map

XSLT script

Python script

SSSOM document

SKOS document

31 of 42

Mapping specification metadata

  • First initial draft
    • Cardinalities
    • Names
    • Enumerations
  • Aligned with SSSOM
    • Generate SSSOM MappingSet metadata from FAIR Mappings MappingSpecification metadata
  • Classes
    • MappingSpecification
    • Agent
    • Source

32 of 42

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

33 of 42

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

34 of 42

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

35 of 42

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

36 of 42

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

37 of 42

Embedding metadata with mapping specification

38 of 42

Embedded metadata

  • Always distributed with the mapping specification
  • Option 1:
    • Include metadata as document header
    • Use comments (implementation specific e.g. # or <!-- -->)
    • Provide FAIR Mappings mapping specification metadata as YAML (shared processing)
    • Metadata can be modeled independently from the mapping representation technique
  • Option 2:
    • Use the metadata capabilities of the chosen mapping specification
  • Option 3:
    • Provide a mapping specification where the target is the FAIR Mapping model (e.g. SSSOM / LinkML metadata → FAIR Mappings metadata)

39 of 42

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

40 of 42

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

41 of 42

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

42 of 42

Thank you