Closed amyehodge closed 9 months ago
PURL:
The process for creating and displaying MODs as shown on PURL is below:
publish
step of common-accessioning
workflow of the accessioning process, a web service call is made to dor-services-app
(DSA) via dor-services-client
gem, which in turn starts PublishJob
in DSA.
See https://github.com/sul-dlss/dor-services-app/blob/main/app/controllers/objects_controller.rb#L111-L116 and https://github.com/sul-dlss/dor-services-app/blob/main/app/jobs/publish_job.rbPublishJob
calls the Publish::MetadataTransferService
in DSA, which is responsible for generating all of the XML to send to the PURL document cache, see: https://github.com/sul-dlss/dor-services-app/blob/main/app/services/publish/metadata_transfer_service.rbPublishJob
calls the Publish::PublicDescMetadataService
, see: https://github.com/sul-dlss/dor-services-app/blob/main/app/services/publish/public_desc_metadata_service.rb#L16cocina-models
gem, see: https://github.com/sul-dlss/cocina-models/blob/main/lib/cocina/models/mapping/to_mods/description.rbPublish::MetadataTransferService
(as noted above).mods_display
gem, which, with the help of the stanford-mods
gem, parses the MODs XML and creates fields for display. "Imprint" is one such field, which collects the relevant bits of metadata from the MODs and generates an array of potential "imprint" values for display. See https://github.com/sul-dlss/mods_display/blob/main/lib/mods_display/fields/imprint.rbConclusion...for PURL display:
mods_display
and possibly stanford-mods
to parse and extract more specific date fields as described in Arcadia's planmods_display
to ensure compatibility with other apps.@arcadia seems satisfied with this. I have filed a follow-on ticket for the work at https://github.com/sul-dlss/mods_display/issues/153. We can close this as far as I'm concerned.
Should I continue looking into how Searchworks and Exhibits work or is PURL the main concern? I suspect they operate fairly differently since they probably only look at indexed data and the the public MODs that PURL uses.
@peetucket Yes, please continue. Thanks. I hadn't realized that work was not yet done when I made the comment above.
Searchworks:
The process for creating and displaying MODs as shown on Searchworks is below:
mods_display
gem, see https://github.com/sul-dlss/SearchWorks/blob/master/app/models/solr_document.rb#L66-L68 and https://github.com/sul-dlss/SearchWorks/blob/master/app/models/mods_export.rb and https://github.com/sul-dlss/SearchWorks/blob/master/app/models/concerns/mods_data.rbmods_display
record is then used by the various detail views (and associated partials) in Searchworks for rendering the data. See https://github.com/sul-dlss/SearchWorks/blob/master/app/views/catalog/record/_mods_metadata_sections.html.erb and other partials referenced.Conclusion...for Searchworks display:
Same as above for PURL...any additional helper methods added to mods_display and possibly stanford-mods to parse and extract more specific date fields as described in Arcadia's plan can be used by Searchworks as well to change how the record is shown.
Exhibits:
The process for creating and displaying MODs as shown on Exhibits is very similar to Searchworks noted above. They key difference is that the indexing code is embedded in the Exhibits app and not a separate codebase. In addition, exhibit curators are able to select specific items/collections for indexing, so control over what appears/indexed is up to each exhibit curator. However, otherwise, the process is similar, in that the data is fetched from PURL before being indexed into an exhibits solr, and then parsed by the same gems for display on exhibits details pages. There does not appear to be any connection to Folio to fetch MARC however. The same conclusions as for Searchworks noted above apply.
Track how the data in the imprint field gets from the original data to:
For context, we are interested in doing the work in this proposal from Arcadia, but it's important to understand where the changes would propagate out to in order to make sure we aren't introducing undesirable effects anywhere. This analysis is a prerequisite for doing this work.