Example of DC Norm Rules Changes for Institutional Repository Harvest

This document shows only changes made to the Out of The Box Dublin Core norm rules–assume all other rulesets are unchanged from template.  These changes represent the norm rules in use for the Cal Poly SLO Digital Commons harvest pipe as of 7/1/2018.

IR norm rules changes
SectionFieldRule #Enabled?Change?SourcePath/ValueTransformationParameterActionFirst Delimiter SpaceComments
DisplayCreator1NYXMLdc:creator



Disable OTB rule that displays author "Last name, First name" in brief display
DisplayCreator2YYXMLdc:creatorGet author first name
MERGEAfterEnable OTB rule that displays author "First name Last name" in brief display for consistency with CSU norm rules for Alma records
DisplayCreator3YYXMLdc:creatorGet author last name
MERGEAfterEnable OTB rule that displays author "First name Last name" in brief display for consistency with CSU norm rules for Alma records
DisplayContributor1NY






DisplayContributor2NY






DisplayContributor3NY






DisplayContributor4YnewXMLdc:contributorAdd to end of string^(Advisor)MERGEAfterAdd (Advisor) to end of name
DisplayContributor5YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Substitute string (using reg. exp.)
  • Add to end of string


  • \, @@^(Advisor),^
  • ^(Advisor)
ADD
Add (Advisor) to end of each name when there are multiple advisors (comma separated in a single contributor field in the metadata)
DisplayPublisher1YN






DisplayPublisher2YnewConstantDigitalCommons@CalPolyCopy As Is
ADD
add DigitalCommons@CalPoly as publisher
DisplayCreation Date4YnewXMLdc.date.createdTake substring0@@4OR
normalized creation date from dc.date.created
DisplayIs Part Of1YN






DisplayIs Part Of2YN






DisplayIs Part Of3YN






DisplayIs Part Of4YnewXMLdc:thesis.degree.disciplineCopy As Is
OR
added dc:thesis.degree.discipline to ensure that major dept. displays when using qdc records
DisplayIs Part Of5YnewXML

dc:thesis.degree.name

Conditions:

  • Condition 1 - Logic: False
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.discipline
    • Success if: Match Any
  • Condition1 - Routines
    • Input exists
  • Remove Leading String
  • Remove Leading String
  • Remove Leading String
  • Remove Leading String
  • Remove Leading String
  • Remove Leading String
  • Copy As Is
  • Add to end of string
  • BS in
  • BA in
  • BFA in
  • MS in
  • MA in
  • MFA in
  • (blank)
  • ^Department
OR
added dc:thesis.degree.name to ensure that major dept. displays when using qdc records if dc:thesis.degree.discipline is missing
DisplaySubject1YYXMLdc:subjectUpper case every first letter - whitespace only


Make sure first word is capitalized and all caps words don't change. Other words will be incorrectly capitalized but this is the best compromise.
DisplayDescription1YY
dc:description/p
  • Drop String (use reg. exp)
  • Drop String (use reg. exp)
  • <[a-zA-z/]+>
  • &lt;[a-zA-z/]+&gt;


Handles descriptions with unexpected HTML coding (<p></p>)
DisplayDescription2YN
dc:descriptionCopy As Is



DisplayDescription3YN
dcterms:abstractCopy As Is



DisplayDescription4YN
dcterms:tableOfContentsCopy As Is



DisplayDescription5YnewXMLdc:description.abstract/p
  • Drop String (use reg. exp)
  • Drop String (use reg. exp)
  • <[a-zA-z/]+>
  • &lt;[a-zA-z/]+&gt;


Handles descriptions with unexpected HTML coding (<p></p>)
DisplayDescription6YnewXMLdc:description.abstractCopy As Is
ADD
added description.abstract to capture description from qdc records
DisplayDescription7YnewXML

dc:date.created

California Polytechnic State University

  • Format Year
  • Check that string not exists
  • Check that string not exists
  • Add to beginning of string
  • 0
  • 0000
  • 9999
  • California Polytechnic State University^


add California Polytechnic State University [creation date]
Displaylds321NYXML

dc:thesis.degree.discipline

  • Add to beginning of string
  • Copy As Is
  • Drop String
  • Add period at the end
  • Senior Project–
  • (blank)
  • Department
  • (blank)
ADD

added "Senior Project–[department name]" (minus "department") to display

NOT USED since logic added for Masters' Theses

Displaylds322YnewXML

dc:thesis.degree.discipline

Conditions:

  • Condition 1 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition1 - Routines
    • Starts with character
    • B
  • Add to beginning of string
  • Copy As Is
  • Drop String
  • Add period at the end
  • Senior Project–
  • (blank)
  • Department
  • (blank)
ADD
added "Senior Project–[department name]" (minus "department") to display
Displaylds323YnewXML

dc:thesis.degree.name

Conditions:

  • Condition 1 - Logic: False
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.discipline
    • Success if: Match Any
  • Condition1 - Routines
    • Input exists
  • Condition 2 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition2 - Routines
    • Starts with character: B
  • Replace string by string
  • Replace string by string
  • Copy As Is
  • Add period at the end
  • BS in @@Senior Project–
  • BA in @@Senior Project–
  • (blank)
  • (blank)
ADD

Uses degree name to add "Senior Project–[department name]" to display when thesis.degree.discipline is not included in the metadata (input exists == false)

This may not produce an entirely accurate department name, but at least adds a close approximation. If there is ever a project to update missing data in Digital Commons, we can delete/reharvest and this field will automatically correct.

Displaylds324YnewXML

dc:thesis.degree.discipline

Conditions:

  • Condition 1 - Logic: True
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition1 - Routines
    • Starts with character: M
  • Add to beginning of string
  • Copy As Is
  • Drop String
  • Add period at the end
  • Master's Thesis–
  • (blank)
  • Department
  • (blank)
ADD
added "Cal Poly master's thesis–[department name]" (minus "department") to display
Displaylds325YnewXML

dc:thesis.degree.name

Conditions:

  • Condition 1 - Logic: False
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.discipline
    • Success if: Match Any
  • Condition1 - Routines
    • Input exists
  • Condition 2 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition2 - Routines
    • Starts with character: M
  • Replace string by string
  • Replace string by string
  • Copy As Is
  • Add period at the end
  • MS in @@Cal Poly master's thesis
  • MA in @@Cal Poly master's thesis–
  • (blank)
  • (blank)
ADD

Uses degree name to add "Cal Poly master's thesis–[department name]" to display when thesis.degree.discipline is not included in the metadata (input exists == false)

This may not produce an entirely accurate department name, but at least adds a close approximation. If there is ever a project to update missing data in Digital Commons, we can delete/reharvest and this field will automatically correct.

LinksOpenURL Full Text1NY





Disabling this rule--it writes "$$Topenurlfull_journal" in all PNX records from Digital Commons, which results in a bad (and unnecessary) OpenURL link (alma_tab2_norestrict) showing up in At the Library. (NLD 5/22/17)
LinksOpenURL Full Text2NY





Disabling this rule--it writes "$$Topenurlfull_journal" in all PNX records from Digital Commons, which results in a bad (and unnecessary) OpenURL link (alma_tab2_norestrict) showing up in At the Library. (NLD 5/22/17)
FacetsCreation Date4YnewXMLdc:date.created
  • Format Year
  • Check that string not exists
  • Check that string not exists
  • 0
  • 0000
  • 9999


add creation date dc:date.created
FacetsTopic1YYXMLdc:subjectUpper case every first letter - whitespace only


Make sure first word is capitalized and all caps words don't change. Other words will be incorrectly capitalized but this is the best compromise.
FacetsToplevel1Ynewconstant
available$$I01CALS_PSU


Needed to make these show up in Available at Cal Poly
FacetsToplevel2Ynewconstant
online_resources$$I01CALS_PSU


Needed to make these show up in Available Online at Cal Poly
SearchCreatorcontrib1YNXMLdc:creatorCopy As Is
ADD
OTB rule for creator
SearchCreatorcontrib2YYXMLdc:creatorNormalize author
ADD
Enabled OTB rule to normalize creator for searching ("John Smith" => "Smith, J")
SearchCreatorcontrib3YnewXMLdc:creatorGet author first name
ADD
Added rule to create "first name last name" version of author for improved searching
SearchCreatorcontrib4YnewXMLdc:creatorGet author last name
MERGEAfterAdded rule to create "first name last name" version of author for improved searching
SearchCreatorcontrib5YNXMLdc:contributorCopy As Is
ADD
OTB rule for contributor
SearchCreatorcontrib6YnewXMLdc:contributor

Condition: Check that string not exists: ", "

  • Replace Spaces by String
  • Take from last occurrence
  • Add to end of string
  • ;
  • ;
  • ,
ADD

Case: one advisor

Added rule to create "last name first name" version of advisor for improved searching

SearchCreatorcontrib7YnewXMLdc:contributor

Condition: Check that string not exists: ", "

  • Take first words
1MERGEAfter

Case: one advisor

Added rule to create "last name first name" version of advisor for improved searching

SearchCreatorcontrib8YnewXMLdc:contributor

Condition: Check that string not exists: ", "

  • Copy As Is
  • Add to end of string
  • (blank)
  • ^(Advisor)
ADD

Case: one advisor

Added rule to make "advisor name (Advisor)" searchable so users can search for advisor by clicking on the name in the full record (Primo searches on exact phrase when the link is used)


SearchContributor9YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Split Field
  • ,^
ADD

Case: more than one advisor

Make each advisor separately searchable

SearchContributor10YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Split Field
  • Add to end of string
  • ,^
  • ^(Advisor)
ADD

Case: more than one advisor, last in group

Make each advisor separately searchable as exact search with (Advisor) appended (so these show up if advisor link is used to search from another record)

SearchContributor11YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Take until first occurrence
  • Add to end of string
  • ,
  • ^(Advisor)
ADD

Case: more than one advisor, first in group

Make each advisor separately searchable as exact search with (Advisor) appended (so these show up if advisor link is used to search from another record)

SearchContributor12YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Take from first occurrence
  • Take until last occurrence
  • Add to end of string
  • ,
  • ,
  • ^(Advisor)
ADD

Case: more than one advisor, second in group of 3 (if more than 3 advisors, 3rd through 2nd to last will not be separately searchable)

Make each advisor separately searchable as exact search with (Advisor) appended (so these show up if advisor link is used to search from another record)

SearchContributor13YnewXMLdc:contributor

Condition: Check that string exists: ", "

  • Substitute string (using reg. exp.)
  • Add to end of string


  • \, @@^(Advisor),^
  • ^(Advisor)
ADD

Case: more than one advisor

Add (Advisor) to end of each name when there are multiple advisors (comma separated in a single contributor field in the metadata)

SearchGeneral1YN






SearchGeneral2YN






SearchGeneral3YN






SearchGeneral4YN






SearchGeneral5Ynew





Add DigitalCommons@CalPoly to search
SearchCreation Date1YN






SearchCreation Date2YN






SearchCreation Date3YN






SearchCreation Date4YnewXMLdc:date.created
  • Format Year
  • Check that string not exists
  • Check that string not exists
  • 0
  • 0000
  • 9999


add creation date dc:date.created
SearchStart Date1YN






SearchStart Date2YnewXMLdc:date.created
  • Format Year
  • Complete Start Date
  • 0
  • (blank)


add creation date dc:date.created
SearchStart Date3YN






SearchStart Date4YN






SearchEnd Date1YN






SearchEnd Date2YnewXMLdc:date.created
  • Format Year
  • Complete End Date
  • 0
  • (blank)


add creation date dc:date.created
SearchEnd Date3YN






SearchEnd Date4YN






SearchAdd Title16YnewXMLdc:thesis.degree.disciplineCopy As Is(blank)

Added search access point for department
Searchlsr061YnewConstantDigitalCommons@CalPolyCopy As Is


Make DigitalCommons@CalPoly searchable as publisher
Searchlsr321NnewConstant01CALS_PSU_SPCheck string equals string
Write constant
01CALS_PSU_SP
Senior Project


Add Senior Project for searching--check to be sure it's from the SP set

DISABLED–senior projects and masters' theses come from the same source, so required rules to differentiate them before writing constant for searching

Searchlsr322YnewXML

dc:thesis.degree.name


  • Conditions:

    • Condition 1 - Logic: True
    • Condition 2 - Source:
      • Type: XML
      • Path: dc:thesis.degree.name
      • Success if: Match Any
    • Condition1 - Routines
      • Starts with character: B
Write constantSenior Project

Add Senior Project for searching, based on degree name

Searchlsr323YnewXML

dc:thesis.degree.name


  • Conditions:

    • Condition 1 - Logic: True
    • Condition 2 - Source:
      • Type: XML
      • Path: dc:thesis.degree.name
      • Success if: Match Any
    • Condition1 - Routines
      • Starts with character: M
Write constantMaster's Thesis

Add Master's Thesis for searching, based on degree name

Searchlsr324YnewXML

dc:thesis.degree.discipline

Conditions:

  • Condition 1 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition1 - Routines
    • Starts with character: B
  • Add to beginning of string
  • Copy As Is
  • Drop String
  • Add period at the end
  • Senior Project–
  • (blank)
  • Department
  • (blank)


Add Senior Project–[department] for searching
Searchlsr325YnewXML

dc:thesis.degree.name

Conditions:

  • Condition 1 - Logic: False
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.discipline
    • Success if: Match Any
  • Condition1 - Routines
    • Input exists
  • Condition 2 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition2 - Routines
    • Starts with character: B
  • Replace string by string
  • Replace string by string
  • Copy As Is
  • Add period at the end
  • BS in @@Senior Project–
  • BA in @@Senior Project–
  • (blank)
  • (blank)
ADD

Uses degree name to add "Senior Project–[department name]" for searching when thesis.degree.discipline is not included in the metadata (input exists == false)

This may not produce an entirely accurate department name, but at least adds a close approximation. If there is ever a project to update missing data in Digital Commons, we can delete/reharvest and this field will automatically correct.

Searchlsr326YnewXML

dc:thesis.degree.discipline

Conditions:

  • Condition 1 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition1 - Routines
    • Starts with character: M
  • Add to beginning of string
  • Copy As Is
  • Drop String
  • Add period at the end
  • Senior Project–
  • (blank)
  • Department
  • (blank)


Add Cal Poly master's thesis-–[department] for searching
Searchlsr327YnewXML

dc:thesis.degree.name

Conditions:

  • Condition 1 - Logic: False
  • Condition 1 - Source:
    • Type: XML
    • Path: dc:thesis.degree.discipline
    • Success if: Match Any
  • Condition1 - Routines
    • Input exists
  • Condition 2 - Logic: True
  • Condition 2 - Source:
    • Type: XML
    • Path: dc:thesis.degree.name
    • Success if: Match Any
  • Condition2 - Routines
    • Starts with character: M
  • Replace string by string
  • Replace string by string
  • Copy As Is
  • Add period at the end
  • MS in @@Cal Poly master's thesis–
  • MA in @@Cal Poly master's thesis–
  • (blank)
  • (blank)
ADD

Uses degree name to add "Cal Poly master's thesis–[department name]" for searching when thesis.degree.discipline is not included in the metadata (input exists == false)

This may not produce an entirely accurate department name, but at least adds a close approximation. If there is ever a project to update missing data in Digital Commons, we can delete/reharvest and this field will automatically correct.

SortCreation Date3YnewXMLdc:date.created
  • Format Year
  • Check that string not exists
  • Check that string not exists
  • 0
  • 0000
  • 9999


add creation date dc:date.created