RFC: Annotating EML with the EMLassemblyline R Package

March 25, 2020


We’d like your feedback on a new EMLassemblyline feature that supports annotation of both new and existing EML documents.

Annotating new EML within the EMLassemblyline workflow:

  1. Create metadata templates for your dataset (as usual).
  2. Run the template_annotations() function to create the annotations template then fill it out. Template features:
  3. The annotations template reports the annotatable elements within your metadata and assigns default predicate labels and URIs. You’ll have to add object labels and URIs from ontologies of your choosing. You can remove annotations by deleting rows and add annotations by copying a subject’s row, pasting it to a new line, then modifying the object label and URI.
  4. Default annotations can be changed by the user.
  5. Recurring nodes (e.g. ResponsibleParty) only require one set of annotations within the template.
  6. Instructions for creating the annotations template from scratch are included in the function documentation for users gathering annotations in other ways.
  7. Run the make_eml() function to get an annotated EML document.

Annotating existing EML that was created by other methods:

  1. Run the template_annotations() function for your EML document then fill it out.
  2. Run the annotate_eml() function to get an annotated revision of your EML file.


  • All annotated elements are assigned IDs and their annotations are placed both immediately under the parent element (subject) and within the /eml/annotations node through ID + Reference pairs. This redundant approach supports variation in where EML metadata consumers prefer to harvest this information and supports annotation of elements requiring ID + Reference pairs.
  • The currently supported EML nodes are:
    • dataset
    • dataTable
    • attribute (of dataTable)
    • otherEntity
    • ResponsibleParty (e.g. creator, contact, associatedParty)

A beta-release of this enhancement is available on branch “fix_31b” of the EMLassemblyline project GitHub. Install this version with the command:

remotes::install_github(“EDIorg/EMLassemblyline”, ref = “fix_31b”)

Comments can be submitted to the project GitHub:

or emailed to:

Many thanks!