NFDI4Culture Data Story

An Italian Data Journey

Analysing research data about 18th century Italian opera using the Culture Knowledge Graph and federated European research infrastructures

Introductory Image

Daniel de Lafeuille, Nouvelle Carte D’Italie - Nieuwe Kaart van Italien, 1706, Wikimedia Commons, Public Domain

Abstract: This data story illustrates a digital exploration of reserach data on opera holdings of the Doria Pamphilj Archive by the Partitura project of the German Historical Institute in Rome (DHI Rome). By enriching the Partitura dataset with established authority sources such as Wikidata, RISM, GeoNames, and transforming it to LOD, new analytical insights into the historical and musicological dimensions of the opera collection are revealed. Leveraging services provided by NFDI4Culture and EOSC, the study exemplifies how data federation with European infrastructures can significantly enhance interoperability of research data and create multimodal research perspectives. Methodologically, the story uses examples ranging from genre distribution analyses to geospatial mappings of opera premiere locations as well as music information retrieval through federated SPARQL queries.


Introduction

The Archivio Doria Pamphilj in Rome houses a significant yet largely unexplored collection of operatic materials dating from the 16th to the 19th centuries. Originally assembled between 1764 and 1777 by Giorgio Andrea IV Doria Landi Pamphilj (1747–1820), this archive includes approximately 300 bibliographic units encompassing sacred music from the 16th and 17th centuries, vocal and instrumental music from the 18th century, and printed music from the 19th century. Notably, the archive contains 27 complete opera scores, 21 collections of varied arias ("Arie diversi"), and 128 individual aria manuscripts from the late 18th and early 19th centuries.

Pallazo Doria Pamphilj

Palazzo Doria Pamphilj, Rome / 1779; Wikimedia Commons, Public Domain

To facilitate scholarly access and promote deeper musicological research, the German Historical Institute in Rome (DHI) initiated the "Partitura Project," supported by the German Research Foundation (DFG) between 2008 and 2015 under the leadership of Dr Roland Pfeiffer. The project accomplished comprehensive digitisation of opera scores from both the Doria Pamphilj and the Massimo collections, resulting in a digital archive comprising approximately 115,000 images and a database of around 30,000 aria incipits.


Research questions

Our data story addresses two research questions:

  1. firstly, whether selected datasets from the DHI can be effectively federated within European data spaces using data-driven methods, thereby generating novel insights that surpass the original data;
  2. and secondly, how these federated data can be employed to unlock new research potentials and concrete scholarly advancements in music-historical studies.

Methodologically, the exploration was designed as a structured experiment, constrained to a 100-hour timeframe spread across four weeks. The investigation exclusively utilised cloud-based European infrastructures, notably those provided by NFDI4Culture and the European Open Science Cloud (EOSC).

A key aspect involved employing artificial intelligence and knowledge graphs, particularly for data curation, semantic enrichment, and assisted programming. Quality control was maintained through a "human-in-the-loop" approach, while data federation occurred in real-time during analyses. The experiment aimed at demonstrating measurable improvements in data interoperability, enhanced discoverability and interpretative value, and the creation of new multimodal interaction opportunities with historical datasets.

Envisaged data federation and methodological approach

Envisaged data federation and methodological approach


Data preparation

Initial Dataset

Although openly accessible via the Partitura website, the initial metadata set presented significant challenges, such as inconsistent spellings, variations in dates, and non-standardised attribution of composers, operas, and arias. Additionally, the metadata utilised RISM identifiers but lacked further authoritative references or standardised interfaces for data exchange.

Challenges in the source data

Challenges in the Partitura source data

Application of 5 Star Linked Open Data Principles

The data preparation adhered strictly to Sir Tim Berners-Lee’s 5 Star Linked Open Data principles, progressing from basic availability as open licensed data online, through structured and standardised formats, ultimately reaching the highest level of interlinking with external datasets using W3C standards (RDF and SPARQL). This process ensured robust semantic interoperability and facilitated scholarly reuse and citation of data.

Step 1: Migration to relational database with REST API

As a preliminary step, data were systematically transferred into a no-code database environment from NFDI4Culture (NocoDB). This enabled initial data disambiguation and created structured access via APIs suitable for automated processing. The resulting structured dataset consisted of clearly disambiguated entities:

  • 387 opera scores (partituras)
  • 49 composers
  • 2,200 premieres (partially disambiguated)
  • 36 geographical locations
  • 57 theatres
  • 94 inventory entries

Check out the data interactively: https://nocodb.nfdi4culture.de/dashboard/#/base/c148f081-7a60-4b4e-8da7-deadec7904b0

Step 2: Semi-automated enrichment with authority data

Subsequent enrichment involved semi-automated linking of entities with authority data sources. The achieved accuracies and efforts involved in linking were documented precisely as follows:

Entity Type Linked Source Accuracy (%) Duration
Composers Wikidata 78.05 10 min
Composers RISM 95.12 10 min
Locations Wikidata 75.00 30 min
Theatres Wikidata 100.00 180 min
Inventory Entries RISM 19.15 20 min
Operatic Scores RISM 27.65 0.5 days
Additional curation Manual - 1.5 days

This enrichment process substantially improved the dataset’s scholarly value and interoperability.

Step 3: Application of the NFDIcore ontology

The structured data were then annotated using the NFDIcore ontology, which provided a standardised semantic framework specifically designed for representing scholarly data within the NFDI4Culture research data infrastructure. Applying this ontology ensured that metadata about operatic resources and related scholarly information could seamlessly integrate into federated research infrastructures.

NFDIcore and its different modules

NFDIcore and its different modules (Creator: Tabea Tietz)

Step 4: Transformation into Linked Open Data

Finally, the enriched and structured data were transformed into Linked Data (RDF triples), stored within a Triple Store to facilitate federation and interoperability with other linked datasets. The resulting dataset was made publicly accessible via a dedicated SPARQL endpoint, hosted on the LOD.ACADEMY infrastructure. This transformation allowed live querying and federated analyses, significantly enhancing scholarly accessibility and the potential for novel analytical perspectives.

Final structure of the data as LOD

Final structure of the data as Partitura Knowledge Graph


Data analysis

Analysis 01: Distribution of opera seria, opera buffa and oratorio in the collection

Show SPARQL query 01
query-01.rq
PREFIX schema:   <http://schema.org/>
PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>
PREFIX cto:      <https://nfdi4culture.de/ontology#>
PREFIX wd:       <http://www.wikidata.org/entity/>

SELECT
  ?item
  ?label
  (COUNT(DISTINCT ?resource) AS ?usageCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?resource a cto:Item ;
              cto:elementType ?item .
  }

  FILTER(?item IN (wd:Q208080, wd:Q210675, wd:Q85477))

  BIND(
    IF(?item = wd:Q208080, "Opera buffa",
      IF(?item = wd:Q210675, "Opera seria",
        IF(?item = wd:Q85477,  "Oratorio", "")))
    AS ?label
  )
}
GROUP BY ?item ?label
ORDER BY DESC(?usageCount)
Show query result 01
query-01.rq
PREFIX schema:   <http://schema.org/>
PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>
PREFIX cto:      <https://nfdi4culture.de/ontology#>
PREFIX wd:       <http://www.wikidata.org/entity/>

SELECT
  ?item
  ?label
  (COUNT(DISTINCT ?resource) AS ?usageCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?resource a cto:Item ;
              cto:elementType ?item .
  }

  FILTER(?item IN (wd:Q208080, wd:Q210675, wd:Q85477))

  BIND(
    IF(?item = wd:Q208080, "Opera buffa",
      IF(?item = wd:Q210675, "Opera seria",
        IF(?item = wd:Q85477,  "Oratorio", "")))
    AS ?label
  )
}
GROUP BY ?item ?label
ORDER BY DESC(?usageCount)

Analysis 02: Get the amount of opera seria, opera buffa and oratoria per composer

Show SPARQL query 02
query-02.rq
PREFIX schema: <http://schema.org/>
PREFIX rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
PREFIX cto:    <https://nfdi4culture.de/ontology#>
PREFIX wd:     <http://www.wikidata.org/entity/>

SELECT
  ?composer
  (SAMPLE(?composerLabel) AS ?name)
  (SUM(IF(?elementType = wd:Q208080, 1, 0)) AS ?operaBuffaCount)
  (SUM(IF(?elementType = wd:Q210675, 1, 0)) AS ?operaSeriaCount)
  (SUM(IF(?elementType = wd:Q85477,   1, 0)) AS ?oratorioCount)
  (SUM(
     IF(?elementType = wd:Q208080, 1, 0) +
     IF(?elementType = wd:Q210675, 1, 0) +
     IF(?elementType = wd:Q85477,   1, 0)
  ) AS ?totalCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?work a cto:Item ;
          schema:composer ?composer ;
          cto:elementType ?elementType .
    ?composer rdfs:label  ?composerLabel .
  }
}
GROUP BY ?composer
ORDER BY DESC(?totalCount)
Show query result 02
query-02.rq
PREFIX schema: <http://schema.org/>
PREFIX rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
PREFIX cto:    <https://nfdi4culture.de/ontology#>
PREFIX wd:     <http://www.wikidata.org/entity/>

SELECT
  ?composer
  (SAMPLE(?composerLabel) AS ?name)
  (SUM(IF(?elementType = wd:Q208080, 1, 0)) AS ?operaBuffaCount)
  (SUM(IF(?elementType = wd:Q210675, 1, 0)) AS ?operaSeriaCount)
  (SUM(IF(?elementType = wd:Q85477,   1, 0)) AS ?oratorioCount)
  (SUM(
     IF(?elementType = wd:Q208080, 1, 0) +
     IF(?elementType = wd:Q210675, 1, 0) +
     IF(?elementType = wd:Q85477,   1, 0)
  ) AS ?totalCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?work a cto:Item ;
          schema:composer ?composer ;
          cto:elementType ?elementType .
    ?composer rdfs:label  ?composerLabel .
  }
}
GROUP BY ?composer
ORDER BY DESC(?totalCount)

Statistics on opera buffa, opera seria and oratorio in the Doria Pamphilj dataset


Example 03: Show all places where operas in the Doria Pamphilj collection were performed

Show SPARQL query 03
query-03.rq
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>

SELECT
  (SAMPLE(?latitude) AS ?latitude)
  (SAMPLE(?longitude) AS ?longitude)
  ?opera
  (?composerLabel AS ?composer)
  (SAMPLE(?theaterLabel) AS ?theater)
  (SAMPLE(?locationLabel) AS ?location)
  (SAMPLE(?year) AS ?year)
  (COUNT(DISTINCT ?resource) AS ?partitura)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?resource a cto:Item .
    ?resource rdfs:label ?opera .
    ?resource cto:relatedOrganization ?theater .
    ?resource cto:relatedEvent ?event .
    ?resource schema:composer ?composer .

    ?composer rdfs:label ?composerLabel .

    ?theater rdfs:label ?theaterLabel .
    ?theater cto:relatedLocation ?location .

    ?location rdfs:label ?locationLabel .
    ?location schema:latitude ?latitude .
    ?location schema:longitude ?longitude .

    ?event nfdicore:startDate ?year .
  }
}
GROUP BY ?opera ?composerLabel
ORDER BY ?opera ?composerLabel

Analysis 04: Federate with Wikidata and get images of theaters that occur in the Partitura dataset

Show SPARQL query 04
query-04.rq
#defaultView:Graph
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX bd: <http://www.bigdata.com/rdf#>

SELECT
  (SAMPLE(?latitude) AS ?latitude)
  (SAMPLE(?longitude) AS ?longitude)
  (?theaterLabel AS ?title)
  (SAMPLE(?locationLabel) AS ?description)
  (?theater AS ?link)
  (SAMPLE(?image) AS ?url)
WHERE {

  SERVICE <https://nfdi4culture.de/sparql> {
    SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
      ?theater a nfdicore:Organization .
      ?theater rdfs:label ?theaterLabel . FILTER(STRSTARTS(STR(?theater), "http://www.wikidata.org/entity/"))
      ?theater cto:relatedLocation ?location .
      ?location schema:latitude ?latitude .
      ?location schema:longitude ?longitude .
      ?location rdfs:label ?locationLabel .
    }
  }

  BIND(IRI(STR(?theater)) AS ?wd_item)
  {
    SERVICE <https://query.wikidata.org/sparql> {
      ?wd_item wdt:P18 ?image .
    }
  }
}
GROUP BY ?theater ?theaterLabel
ORDER BY ?title

Example 05: Show all places of opera premieres on an interactive map

Show SPARQL query 05
query-05.rq
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX bd: <http://www.bigdata.com/rdf#>

SELECT
  (SAMPLE(?latitude) AS ?latitude)
  (SAMPLE(?longitude) AS ?longitude)
  ?opera
  (SAMPLE(?theaterLabel) AS ?description)
  (SAMPLE(?resource) AS ?link)
  (SAMPLE(?image) AS ?url)
WHERE {

  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    ?resource a cto:Item .
    ?resource rdfs:label ?opera .
    ?resource cto:relatedOrganization ?theater .
    ?resource cto:relatedEvent ?event .
    ?resource schema:composer ?composer .

    ?composer rdfs:label ?composerLabel .

    ?theater rdfs:label ?theaterLabel .
    ?theater cto:relatedLocation ?location .

    ?location rdfs:label ?locationLabel .
    ?location schema:latitude ?latitude .
    ?location schema:longitude ?longitude .

    ?event nfdicore:startDate ?year .
  }

  BIND(IRI(STR(?theater)) AS ?wd_item)
  {
    SERVICE <https://query.wikidata.org/sparql> {
      ?wd_item wdt:P18 ?image .
    }
  }
}
GROUP BY ?opera ?composerLabel
ORDER BY ?opera ?composerLabel

Example 06: Combining Persons in RISM and Partitura

Find all operas in the Doria Pamphilj collection that are based on libretti of Pietro Metastasio.

Person relations between Partitura and RISM

Show SPARQL query 06
query-06.rq
PREFIX rism: <http://rism.online/>
PREFIX ct: <http://data.linkedct.org/resource/linkedct/>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX partitura: <https://nocodb.nfdi4culture.de/dashboard/#/nc/pxjfen9oerev7k9/mj3w842gefzot7u?rowId=>
PREFIX rism: <https://rism.online/sources/>

SELECT
  (?partituraLabel as ?opera)
  (?composerLabel as ?composer)
  (SAMPLE(?locationLabel) as ?location)
  (SAMPLE(?year) as ?year)
  (SAMPLE(?rismItem) as ?rism)
  (SAMPLE(?partitura) as ?partitura)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    SELECT
      ?partitura
      ?partituraLabel
      ?composerLabel
      ?rismItem
      ?locationLabel
      ?year
    {
      ?partitura a cto:Item .
      ?partitura rdfs:label ?partituraLabel .

      ?partitura schema:composer ?composer .
      ?composer rdfs:label ?composerLabel .

      ?partitura cto:relatedLocation ?location .
      ?location rdfs:label ?locationLabel .

      ?partitura cto:relatedEvent ?event .
      ?event nfdicore:startDate ?year .

      ?partitura cto:relatedItem ?rismItem .
    }
  }

  # with a relation to Pietro Metastasio
  ?rismItem cto:relatedPerson <https://rism.online/people/97823> .
}
GROUP BY ?partituraLabel ?composerLabel
ORDER BY ?partituraLabel ?composerLabel
Show query result 06
PREFIX rism: <http://rism.online/>
PREFIX ct: <http://data.linkedct.org/resource/linkedct/>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX partitura: <https://nocodb.nfdi4culture.de/dashboard/#/nc/pxjfen9oerev7k9/mj3w842gefzot7u?rowId=>
PREFIX rism: <https://rism.online/sources/>

SELECT
  (?partituraLabel as ?opera)
  (?composerLabel as ?composer)
  (SAMPLE(?locationLabel) as ?location)
  (SAMPLE(?year) as ?year)
  (SAMPLE(?rismItem) as ?rism)
  (SAMPLE(?partitura) as ?partitura)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    SELECT
      ?partitura
      ?partituraLabel
      ?composerLabel
      ?rismItem
      ?locationLabel
      ?year
    {
      ?partitura a cto:Item .
      ?partitura rdfs:label ?partituraLabel .

      ?partitura schema:composer ?composer .
      ?composer rdfs:label ?composerLabel .

      ?partitura cto:relatedLocation ?location .
      ?location rdfs:label ?locationLabel .

      ?partitura cto:relatedEvent ?event .
      ?event nfdicore:startDate ?year .

      ?partitura cto:relatedItem ?rismItem .
    }
  }

  # with a relation to Pietro Metastasio
  ?rismItem cto:relatedPerson <https://rism.online/people/97823> .
}
GROUP BY ?partituraLabel ?composerLabel
ORDER BY ?partituraLabel ?composerLabel

Example 07: All operas of Nicolo Piccinni in Doria Pamphilj

Show SPARQL query 07
query-07.rq
PREFIX schema:    <http://schema.org/>
PREFIX rdf:       <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:      <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore:  <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto:       <https://nfdi4culture.de/ontology#>

SELECT
  ?opera
  (?composerName AS ?composer)
  ?year
  (SAMPLE(?elementTypeLabel)    AS ?type)
  (COUNT(DISTINCT ?partitura)    AS ?partituraCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {

    VALUES (?elementType ?elementTypeLabel) {
      (<http://www.wikidata.org/entity/Q210675> "Opera seria")
      (<http://www.wikidata.org/entity/Q208080> "Opera buffa")
    }

    ?partitura a cto:Item ;
               rdfs:label       ?opera ;
               cto:elementType  ?elementType ;
               cto:relatedPerson <https://rism.online/people/17950> ;
               schema:composer  ?composer .
    ?composer   rdfs:label        ?composerName .
    ?partitura  cto:relatedEvent  ?event .
    ?event      nfdicore:startDate ?year .
  }
}
GROUP BY
  ?opera
  ?composerName
  ?year
  ?elementTypeLabel
ORDER BY ?year
Show query result 07
PREFIX schema:    <http://schema.org/>
PREFIX rdf:       <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:      <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore:  <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto:       <https://nfdi4culture.de/ontology#>

SELECT
  ?opera
  (?composerName AS ?composer)
  ?year
  (SAMPLE(?elementTypeLabel)    AS ?type)
  (COUNT(DISTINCT ?partitura)    AS ?partituraCount)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {

    VALUES (?elementType ?elementTypeLabel) {
      (<http://www.wikidata.org/entity/Q210675> "Opera seria")
      (<http://www.wikidata.org/entity/Q208080> "Opera buffa")
    }

    ?partitura a cto:Item ;
               rdfs:label       ?opera ;
               cto:elementType  ?elementType ;
               cto:relatedPerson <https://rism.online/people/17950> ;
               schema:composer  ?composer .
    ?composer   rdfs:label        ?composerName .
    ?partitura  cto:relatedEvent  ?event .
    ?event      nfdicore:startDate ?year .
  }
}
GROUP BY
  ?opera
  ?composerName
  ?year
  ?elementTypeLabel
ORDER BY ?year

Example 08: All operas of Nicoló Piccinni with libretti of Pietro Metastasio

Show SPARQL query 08
query-08.rq
PREFIX sc: <http://purl.org/science/owl/sciencecommons/>
PREFIX ct: <http://data.linkedct.org/resource/linkedct/>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX partitura: <https://nocodb.nfdi4culture.de/dashboard/#/nc/pxjfen9oerev7k9/mj3w842gefzot7u?rowId=>

SELECT
  (?partituraLabel as ?opera)
  (?composerLabel as ?composer)
  (SAMPLE(?locationLabel) as ?locationLabel)
  (SAMPLE(?year) as ?year)
  (SAMPLE(?rismItem) as ?rismExample)
  (SAMPLE(?partitura) as ?partituraExample)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    SELECT
      ?partitura
      ?partituraLabel
      ?composerLabel
      ?rismItem
      ?locationLabel
      ?year
    {
      ?partitura a cto:Item .
      ?partitura rdfs:label ?partituraLabel .

      ?partitura schema:composer ?composer .
      ?composer rdfs:label ?composerLabel .
      ?partitura cto:relatedPerson <https://rism.online/people/17950> .

      ?partitura cto:relatedLocation ?location .
      ?location rdfs:label ?locationLabel .

      ?partitura cto:relatedEvent ?event .
      ?event nfdicore:startDate ?year .

      ?partitura cto:relatedItem ?rismItem .
    }
  }

  # with a relation to Pietro Metastasio
  ?rismItem cto:relatedPerson <https://rism.online/people/97823> .
}
GROUP BY ?partituraLabel ?composerLabel
ORDER BY ?partituraLabel ?composerLabel
Show query result 08
PREFIX sc: <http://purl.org/science/owl/sciencecommons/>
PREFIX ct: <http://data.linkedct.org/resource/linkedct/>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX partitura: <https://nocodb.nfdi4culture.de/dashboard/#/nc/pxjfen9oerev7k9/mj3w842gefzot7u?rowId=>

SELECT
  (?partituraLabel as ?opera)
  (?composerLabel as ?composer)
  (SAMPLE(?locationLabel) as ?locationLabel)
  (SAMPLE(?year) as ?year)
  (SAMPLE(?rismItem) as ?rismExample)
  (SAMPLE(?partitura) as ?partituraExample)
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    SELECT
      ?partitura
      ?partituraLabel
      ?composerLabel
      ?rismItem
      ?locationLabel
      ?year
    {
      ?partitura a cto:Item .
      ?partitura rdfs:label ?partituraLabel .

      ?partitura schema:composer ?composer .
      ?composer rdfs:label ?composerLabel .
      ?partitura cto:relatedPerson <https://rism.online/people/17950> .

      ?partitura cto:relatedLocation ?location .
      ?location rdfs:label ?locationLabel .

      ?partitura cto:relatedEvent ?event .
      ?event nfdicore:startDate ?year .

      ?partitura cto:relatedItem ?rismItem .
    }
  }

  # with a relation to Pietro Metastasio
  ?rismItem cto:relatedPerson <https://rism.online/people/97823> .
}
GROUP BY ?partituraLabel ?composerLabel
ORDER BY ?partituraLabel ?composerLabel

Example 09: All works of Nicoló Piccinni with places of premiere

Show SPARQL query 09
query-09.rq
PREFIX cs: <http://purl.org/vocab/changeset/schema#>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX crm: <http://erlangen-crm.org/current/E39_Actor>
PREFIX csm: <http://corago.unibo.it/sm/>
PREFIX corago: <http://corago.unibo.it/resource/>

SELECT
    ?resource
    (SAMPLE(?label) AS ?label)
    (GROUP_CONCAT(STR(?typeLabel); separator = " | ") AS ?genre)
    (GROUP_CONCAT(STR(?authorLabel); separator = " | ") AS ?authorLabel)
    (GROUP_CONCAT(STR(?placeLabel); separator = " | ") AS ?placeLabel)
    (GROUP_CONCAT(STR(?theaterLabel); separator = " | ") AS ?theaterLabel)
    (SAMPLE(SUBSTR(STR(?isoDate), 1,4)) AS ?year)
WHERE {
  SERVICE <http://coragolod2.ing.unibo.it:8080/blazegraph/namespace/corago_20200518/sparql> {
    SELECT
        ?resource
        ?label
        ?type
        ?typeLabel
        ?author
        ?authorLabel
        ?place
        ?placeLabel
        ?theater
        ?theaterLabel
        ?isoDate
    WHERE {
        ?resource a <http://erlangen-crm.org/efrbroo/F15_Complex_Work> .
        ?resource rdfs:label ?label .

        ?resource csm:CPBC10_type ?type .
        ?type rdfs:label ?typeLabel .

        ?resource csm:CPBC1_work_author ?author . FILTER(STRSTARTS(STR(?author), "http://corago.unibo.it/resource/RESPONS/000005090100"))
        ?author rdfs:label ?authorLabel .

        OPTIONAL {
          ?resource csm:CP9_first_performed_in/csm:CPC10_performance_place ?place .
          ?place rdfs:label ?placeLabel .
        }

        OPTIONAL {
          ?resource csm:CP9_first_performed_in/csm:CPC11_performance_location ?theater .
          ?theater rdfs:label ?theaterLabel .
        }

        OPTIONAL {
          ?resource csm:CP9_first_performed_in/csm:CPC15_performed_on ?date .
          ?date rdf:value ?isoDate .
        }
    }
  }
}
GROUP BY ?resource
ORDER BY ?year ?label

Alluvial diagram showing the relation between works and places of premiere

Alluvial diagram showing the relation between works and places of premiere


Example 10: Staging history of the opera Demofoonte in the 18th century

Show SPARQL query 10
query-10.rq
PREFIX cs: <http://purl.org/vocab/changeset/schema#>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX crm: <http://erlangen-crm.org/current/E39_Actor>
PREFIX csm: <http://corago.unibo.it/sm/>
PREFIX corago: <http://corago.unibo.it/resource/>

SELECT
    ?resource
    (SAMPLE(?label) AS ?label)
    (GROUP_CONCAT(STR(?typeLabel); separator = " | ") AS ?genre)
    (GROUP_CONCAT(STR(?authorLabel); separator = " | ") AS ?authorLabel)
    (GROUP_CONCAT(STR(?placeLabel); separator = " | ") AS ?placeLabel)
    (GROUP_CONCAT(STR(?theaterLabel); separator = " | ") AS ?theaterLabel)
    (SAMPLE(SUBSTR(STR(?isoDate), 1,4)) AS ?year)
WHERE {
  SERVICE <http://coragolod2.ing.unibo.it:8080/blazegraph/namespace/corago_20200518/sparql> {
    SELECT
        ?resource
        ?label
        ?type
        ?typeLabel
        ?author
        ?authorLabel
        ?place
        ?placeLabel
        ?theater
        ?theaterLabel
        ?isoDate
    WHERE {
        ?resource a <http://erlangen-crm.org/efrbroo/F15_Complex_Work> .
        ?resource rdfs:label ?label .
        FILTER(REGEX(?label, "demofoonte", "i" )) .

        ?resource csm:CPBC10_type ?type .
        ?type rdfs:label ?typeLabel .

        ?resource csm:CPBC1_work_author ?author .
        ?author rdfs:label ?authorLabel .

        ?resource csm:CP9_first_performed_in/csm:CPC10_performance_place ?place .
        ?place rdfs:label ?placeLabel .

        ?resource csm:CP9_first_performed_in/csm:CPC11_performance_location ?theater .
        ?theater rdfs:label ?theaterLabel .

        ?resource csm:CP9_first_performed_in/csm:CPC15_performed_on ?date .
        ?date rdf:value ?isoDate .
    }
  }
}
GROUP BY ?resource
ORDER BY ?year ?label

Beeswarm plot showing the staging history of Demofoonte

Beeswarm plot showing the staging history of Demofoonte


Example 11: Music information retrieval using RISM and Partitura

Show SPARQL query 11
query-11.rq
PREFIX sc: <http://purl.org/science/owl/sciencecommons/>
PREFIX ct: <http://data.linkedct.org/resource/linkedct/>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nfdicore: <https://nfdi.fiz-karlsruhe.de/ontology/>
PREFIX cto: <https://nfdi4culture.de/ontology#>
PREFIX partitura: <https://nocodb.nfdi4culture.de/dashboard/#/nc/pxjfen9oerev7k9/mj3w842gefzot7u?rowId=>

SELECT
  ?partitura
  ?signature
  (?partituraLabel AS ?title)
  (?composerLabel AS ?composer)
  ?lyricist
  ?rendered
  ?incipitTitle
  ?locationLabel
  ?year
  ?rismItem
  ?latitude
  ?longitude
WHERE {
  SERVICE <https://lod.academy/dhi-rom/data/partitura/sparql> {
    SELECT
      ?partitura
      ?partituraLabel
      ?signature
      ?composerLabel
      ?rismItem
      ?locationLabel
      ?latitude
      ?longitude
      ?year
    {
      ?partitura a cto:Item .
      ?partitura rdfs:label ?partituraLabel .
      ?partitura schema:identifier ?signature .

      ?partitura schema:composer ?composer .
      ?composer rdfs:label ?composerLabel .

      OPTIONAL {
      ?partitura cto:relatedLocation ?location .
      ?location rdfs:label ?locationLabel .
      ?location schema:latitude ?latitude .
      ?location schema:longitude ?longitude .
      }

      OPTIONAL {
      ?partitura cto:relatedEvent ?event .
      ?event nfdicore:startDate ?year .
      }

      ?partitura cto:relatedItem ?rismItem .
    }
  }

  ?rismItem cto:relatedOrganization <https://rism.online/institutions/30001904> .
  ?incipit cto:incipitOf ?rismItem .
  ?incipit cto:pattern ?pattern . FILTER regex(?pattern, "B.*?B.*?B.*?B.*?")
  ?incipit schema:contentURL ?rendered .
  ?incipit rdfs:label ?incipitTitle .
  OPTIONAL { ?rismItem schema:lyricist/rdfs:label ?lyricist . }
}
GROUP BY ?partitura

Relation between RISM incipits and resources from Partitura

Relation between RISM incipits and resources from Partitura

Experimental Search interface for notated music (Plaine & Easy format)

Try it out live: https://nfdi4culture.de/kg-incipit-search.html


Summary and Outcomes

The digital data exploration experiment described in this data story has successfully demonstrated the scholarly value and feasibility of federating the operatic holdings of the Doria Pamphilj Archive with broader European data infrastructures. The data preparation process involved extensive semantic enrichment, ultimately achieving an average enrichment quotient of 64.3%. Starting from an original metadata table of 154 rows and 13 columns, the data evolved through two distinct integration stages: firstly, into a relational database comprising 2,849 records, and subsequently into a knowledge graph containing 3,400 semantic statements.

The technical implementation required approximately 1,400 lines of program code, notably supported by AI-assisted programming tools (co-piloting). Data preparation utilised 432 lines of code (around 90% AI-generated), data integration required 211 lines of code (also approximately 90% AI-assisted), and analysis scripts comprised 757 lines of code (around 30% AI-generated). Importantly, the federated data workflows leveraged infrastructures spanning four European countries: Germany, Italy, Poland, and Switzerland.

In broader terms, the experiment achieved its primary objectives by demonstrating the practical benefits of federating cultural data with European data spaces. The use of cloud-based European research infrastructures and linked data services (such as NFDI4Culture, EOSC, and related authority data services) proved highly productive. Artificial Intelligence, especially in data preprocessing and assisted programming tasks, significantly enhanced efficiency, although manual curation efforts remained unexpectedly high. Nevertheless, this manual work yielded additional exploratory analytical insights, suggesting a valuable symbiosis between automated and manual curation processes.

Finally, the project underscored the need for developing new quality assurance methods suitable for federated research data, an ongoing discussion within the research data community. The NFDI framework provides a vital platform for dialogue among researchers, funding bodies, and policymakers. Through federation with external sources like RISM, Corago, and NFDI4Culture, several promising new research perspectives on operatic and music-historical scholarship emerged, offering substantial avenues for future scholarly investigation.

Nicoló Piccinni, Demofoonte; Bibl. del Cons. di Musica S. Pietro a Majella / IMSLP, Public Domain