## CGSpace CG Core v2 Migration

Sun Feb 21, 2021 in Notes Migration

Changes to CGSpace metadata fields to align more with DC, QDC, and DCTERMS as well as CG Core v2. Implemented on 2021-02-21.

With reference to CG Core v2 draft standard by Marie-Angélique as well as DCMI DCTERMS.

- Proposed Changes
- Fields to Create
- Fields to Delete
- Implementation Progress

## Proposed Changes

As of 2021-01-18 the scope of the changes includes the following fields:

- cg.creator.id→cg.creator.identifier
  - ORCID identifiers
- dc.format.extent→dcterms.extent
- dc.date.issued→dcterms.issued
- dc.description.abstract→dcterms.abstract
- dc.description→dcterms.description
- dc.description.sponsorship→cg.contributor.donor
  - values from CrossRef or Grid.ac if possible
- dc.description.version→cg.reviewStatus
- cg.fulltextstatus→cg.howPublished
  - CGSpace uses values like “Formally Published” or “Grey Literature”
- dc.identifier.citation→dcterms.bibliographicCitation
- cg.identifier.status→dcterms.accessRights
  - current values are “Open Access” and “Limited Access”
  - future values are possibly “Open” and “Restricted”?
- dc.language.iso→dcterms.language
  - current values are ISO 639-1 (aka Alpha 2)
  - future values are possibly ISO 639-3 (aka Alpha 3)?
- cg.link.reference→dcterms.relation
- dc.publisher→dcterms.publisher
- dc.relation.ispartofseries will be split into:
  - series name: dcterms.isPartOf
  - series number: cg.number
- dc.rights→dcterms.license
  - Using SPDX license identifiers if possible
- dc.source→cg.journal
- dc.subject→dcterms.subject
- dc.type→dcterms.type
- dc.identifier.isbn→cg.isbn
- dc.identifier.issn→cg.issn
- cg.targetaudience→dcterms.audience

The following fields are currently out of the scope of this migration because they are used internally by DSpace 5.x/6.x and would be difficult to change without significant modifications to the core of the code:

- dc.title (`IncludePageMeta.java` only considers DC when building pageMeta, which we rely on in XMLUI because of XSLT from DRI)
- dc.title.alternative
- dc.date.available
- dc.date.accessioned
- dc.identifier.uri (hard coded for Handle assignment upon item submission)
- dc.description.provenance
- dc.contributor.author (`IncludePageMeta.java` only considers DC when building pageMeta, which we rely on in XMLUI because of XSLT from DRI)

## Fields to Create

Make sure the following fields exist:

- cg.creator.identifier (247)
- cg.contributor.donor (248)
- cg.reviewStatus (249)
- cg.howPublished (250)
- cg.journal (251)
- cg.isbn (252)
- cg.issn (253)
- cg.volume (254)
- cg.number (255)
- cg.issue (256)

## Fields to delete

Fields to delete after migration:

- cg.creator.id
- cg.fulltextstatus
- cg.identifier.status
- cg.link.reference
- cg.targetaudience

## Implementation Progress

Tally of the status of the implementation of the new fields in the CGSpace `6_x-cgcorev2` branch.

Field Name | migrate-fields.sh | Input Forms | XMLUI Themes¹ | dspace.cfg | Discovery | Atmire Modules | Crosswalks
--- | --- | --- | --- | --- | --- | --- | ---
cg.creator.identifier | ✓ | ✓ | ✓ | - | ✓ | ✓ |
dcterms.extent | ✓ | ✓ | - | - | - | - |
dcterms.issued | ✓ | ✓ | ? | ✓ | ✓ | ✓ |
dcterms.abstract | ✓ | ✓ | ✓ | ✓ | ✓ | - |
dcterms.description | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
cg.contributor.donor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
cg.reviewStatus | ✓ | ✓ | ✓ | - | ✓ | - |
cg.howPublished | ✓ | ✓ | - | - | - | - |
dcterms.bibliographicCitation | ✓ | ✓ | ✓ | - | - | ✓ |
dcterms.accessRights | ✓ | ✓ | ✓ | - | ✓ | ✓ |
dcterms.language | ✓ | ✓ | ✓ | - | ✓ | ✓ |
dcterms.relation | ✓ | ✓ | ✓ | - | - | - |
dcterms.publisher | ✓ | ✓ | - | - | ✓ | ✓ |
dcterms.isPartOf | ✓ | ✓ | - | ✓ | ✓ | ✓ |
dcterms.license | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
cg.journal | ✓ | ✓ | - | - | ✓ | ✓ |
dcterms.subject | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
dcterms.type | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
cg.isbn | ✓ | ✓ | - | - | - | ✓ |
cg.issn | ✓ | ✓ | - | - | - | ✓ |
dcterms.audience | ✓ | ✓ | - | - | - | ✓ |

There are a few things that I need to check once I get a deployment of this code up and running:

- Assess the XSL changes to see if things like `not(@qualifier)]` still make sense after we move fields from DC to DCTERMS, as some fields will no longer have qualifiers
- Do I need to edit crosswalks that we are not using, like MODS?
- There is potentially a lot of work in the OAI metadata formats like DIM, METS, and QDC (see `dspace/config/crosswalks/oai/*.xsl`)

¹ Not committed yet because I don’t want to have to make minor adjustments in multiple commits. Re-apply the gauntlet of fixes with the sed script:

    $ find dspace/modules/xmlui-mirage2/src/main/webapp/themes -iname "*.xsl" -exec sed -i -f ./cgcore-xsl-replacements.sed {} \;