trompamusic / ce-api

The Contributor Environment API for the TROMPA project
https://trompamusic.eu
Apache License 2.0
6 stars 1 forks source link

Controlled vocabulary for instrumentation ("medium of performance") #42

Closed musicog closed 3 years ago

musicog commented 4 years ago

Issue: TROMPA users will need to be able to filter musical scores according to their medium of performance, that is, the instrumental parts that comprise the score.

Currently this metadata is associated with a score as a textual string via dc:subject. This is problematic for several reasons:

  1. consistency is important if this information is going to be used for search and filtering, thus a closed vocabulary is preferable
  2. to support searching and filtering in multiple languages, we would currently have to associate several "subjects" with a score, each in a different language (e.g. "piano" vs. "klavier")
  3. dc:subject is a semantically very broad predicate to refer to instrumentation specifically.

Proposal: We should incorporate a closed vocabulary of instrumentation terms into the CE. A comprehensive taxonomy exists in the Library of Congress's Medium of Performance Thesaurus for Music: http://id.loc.gov/authorities/performanceMediums.html.

The taxonomy could be imported into the CE, using individual nodes for each type of instrument / ensemble. These can then be associated with language labels in the various languages we support, ensuring that "klavier" and "piano" can both return scores associated with the same "piano" node. N.b. that the taxonomy is only supplied with English language labels; we would have to supply our own translations (potentially limited to those instrument / ensemble terms we expect to be most widely searched for).

In addition to the (very broad) dc:subject, the association between a score and a performance medium could be more precisely (semantically) specified by borrowing the RDA Unconstrained element set's rdau:P60537 ("has medium of performance of musical content") property (or translating to it when exporting the graphql relationship via the REST wrapper).

baukef commented 3 years ago

@musicog is this something that we should fix within the Trompa project?

alastair commented 3 years ago

Implementing this should be as simple as adding a new field to the required types. If @musicog is still planning on storing content in the CE that requires this relation then I think that we should add it.