How does mp upgrade metadata?

One of the stranger things that mp does is try to fix certain problems in your metadata that might exist because the metadata was written to conform to the 1994 version of the FGDC standard.

Why

A few of these structural changes are tricky to do, even for someone who is conversant with both the older and newer versions of the standard. Some of them are simple but repetitive; any task of which this can be said is a good thing to ask a computer to do.

What

  1. Convert G-Ring_Latitude and G-Ring_Longitude to G-Ring
    The 1994 standard had
    Data_Set_G-Polygon_Outer_G-Ring =
        4{G-Ring_Latitude + G-Ring_Longitude}n
    
    Data_Set_G-Polygon_Exclusion_G-Ring =
        4{G-Ring_Latitude + G-Ring_Longitude}n
    
    The 1998 standard provides two new elements to handle these, G-Ring_Point or G-Ring:
    Data_Set_G-Polygon_Outer_G-Ring =
        [4{G-Ring_Point}n | G-Ring]
    
    Data_Set_G-Polygon_Exclusion_G-Ring =
        [4{G-Ring_Point}n | G-Ring]
    
    G-Ring_Point =
        G-Ring_Latitude +
        G-Ring_Longitude
    
    While examining Data_Set_G-Polygon_Outer_G-Ring and Data_Set_G-Polygon_Exclusion_G-Ring if mp finds more than one G-Ring_Latitude, it attempts to create a single G-Ring element to hold the ordered coordinate pairs.
  2. Add new Theme for each Theme_Keyword_Thesaurus, a new Place for each Place_Keyword_Thesaurus, a new Stratum for each Stratum_Keyword_Thesaurus, and a new Temporal for each Temporal_Keyword_Thesaurus
    The 1994 standard had
    Keywords =
        Theme + (Place) + (Stratum) + (Temporal)
    Theme =
        1{Theme_Keyword_Thesaurus + 1{Theme_Keyword}n }n
    Place =
        1{Place_Keyword_Thesaurus + 1{Place_Keyword}n }n
    Stratum =
        1{Stratum_Keyword_Thesaurus + 1{Stratum_Keyword}n }n
    Temporal =
        1{Temporal_Keyword_Thesaurus + 1{Temporal_Keyword}n }n
    
    The 1998 standard replaces this with
    Keywords =
        1{Theme}n +
        0{Place}n +
        0{Stratum}n +
        0{Temporal}n
    
    Theme =
        Theme_Keyword_Thesaurus +
        1{Theme_Keyword}n
    
    Place =
        Place_Keyword_Thesaurus +
        1{Place_Keyword}n
    
    Stratum =
        Stratum_Keyword_Thesaurus +
        1{Stratum_Keyword}n
    
    Temporal =
        Temporal_Keyword_Thesaurus +
        1{Temporal_Keyword}n
    
  3. Add new SDTS_Terms_Description for each SDTS_Point_and_Vector_Object_Type
    The 1994 standard had
    Point_and_Vector_Object_Information =
        [SDTS_Terms_Description |
        VPF_Terms_Description]
    
    SDTS_Terms_Description =
        1{SDTS_Point_and_Vector_Object_Type +
        (Point_and_Vector_Object_Count) }n
    
    The 1998 standard replaces this with
    Point_and_Vector_Object_Information =
        [1{SDTS_Terms_Description}n |
        VPF_Terms_Description]
    
    SDTS_Terms_Description =
        SDTS_Point_and_Vector_Object_Type +
        (Point_and_Vector_Object_Count)
    
  4. Add new VPF_Point_and_Vector_Object_Information for each VPF_Point_and_Vector_Object_Type
    The 1994 standard had
    VPF_Terms_Description =
        VPF_Topology_Level +
        1{VPF_Point_and_Vector_Object_Type +
        (Point_and_Vector_Object_Count)}n
    
    The 1998 standard added a new element VPF_Point_and_Vector_Object_Information and has
    VPF_Terms_Description =
        VPF_Topology_Level +
        1{VPF_Point_and_Vector_Object_Information}n
    
    VPF_Point_and_Vector_Object_Information =
        VPF_Point_and_Vector_Object_Type +
        (Point_and_Vector_Object_Count)
    
  5. If Other_Projection's_Definition is found within Map_Projection, then move it into Map_Projection_Parameters. If the latter does not yet exist, create it.
    The 1994 standard had an element called Other_Projection's_Definition containing free text. The 1998 standard created a new element Map_Projection_Parameters specifically to hold this type of information in a structured way. mp attempts to move the text from Other_Projection's_Definition into Map_Projection_Parameters.
  6. Add new Detailed_Description for each Entity_Type
    The 1994 standard had
    Detailed_Description =
        1{Entity_Type + 0{Attribute}n }n
    
    The 1998 standard replaces this with
    Detailed_Description =
        Entity_Type +
        0{Attribute}n
    
  7. Add new Enumerated_Domain for each Enumerated_Domain_Value
    The 1994 standard had
    Enumerated_Domain =
        1{Enumerated_Domain_Value +
        Enumerated_Domain_Value_Definition +
        Enumerated_Domain_Value_Definition_Source +
        0{Attribute}n }n
    
    In the 1998 standard, the intent was to write this as
    Enumerated_Domain =
        Enumerated_Domain_Value +
        Enumerated_Domain_Value_Definition +
        Enumerated_Domain_Value_Definition_Source +
        0{Attribute}n
    
  8. Add new Attribute_Domain_Values for each Enumerated_Domain, Range_Domain, Codeset_Domain, or Unrepresentable_Domain beyond the first.
    The 1994 standard had
    Attribute_Domain_Values =
        [Enumerated_Domain |
        Range_Domain |
        Codeset_Domain |
        Unrepresentable_Domain]
    
    Enumerated_Domain =
        1{Enumerated_Domain_Value +
        Enumerated_Domain_Value_Definition +
        Enumerated_Domain_Value_Definition_Source +
        0{Attribute}n }n
    
    In the 1998 standard, the intent was to write this as
    Attribute_Domain_Values =
        [Enumerated_Domain |
        Range_Domain |
        Codeset_Domain |
        Unrepresentable_Domain]
    
    Enumerated_Domain =
        Enumerated_Domain_Value +
        Enumerated_Domain_Value_Definition +
        Enumerated_Domain_Value_Definition_Source +
        0{Attribute}n
    
  9. For each Attribute, look for Attribute_Units_of_Measure and Range_Domain. If both are present, detach the former and attach it to the latter. Do the same for Attribute_Measurement_Resolution
    The 1994 standard had
    Attribute =
        Attribute_Label +
        Attribute_Definition +
        Attribute_Definition_Source +
        1{Attribute_Domain_Values}n +
        0{Attribute_Units_of_Measure}1 +
        (Attribute_Measurement_Resolution) +
        (1{Beginning_Date_of_Attribute_Values +
        0{Ending_Date_of_Attribute_Values}1}n ) +
        (Attribute_Value_Accuracy_Information) +
        (Attribute_Measurement_Frequency)
    
    The 1998 standard moves two of those elements into Range_Domain
    Range_Domain =
        Range_Domain_Minimum +
        Range_Domain_Maximum +
        0{Attribute_Units_of_Measure}1 +
        (Attribute_Measurement_Resolution) +
        0{Attribute}n
    
  10. Add new Distribution_Information for each Distributor
    The 1994 standard had
    Metadata =
        Identification_Information +
        0{Data_Quality_Information}1 +
        0{Spatial_Data_Organization_Information}1 +
        0{Spatial_Reference_Information}1 +
        0{Entity_and_Attribute_Information}1 +
        0{Distribution_Information}1 +
        Metadata_Reference_Information
    
    Distribution_Information =
        1{Distributor +
        0{Resource_Description}1 +
        Distribution_Liability +
        0{Standard_Order_Process}n +
        0{Custom_Order_Process}1 +
        (Technical_Prerequisites) +
        (Available_Time_Period) }n
    
    The 1998 standard replaces this with
    Metadata =
        Identification_Information +
        0{Data_Quality_Information}1 +
        0{Spatial_Data_Organization_Information}1 +
        0{Spatial_Reference_Information}1 +
        0{Entity_and_Attribute_Information}1 +
        0{Distribution_Information}n +
        Metadata_Reference_Information
    
    Distribution_Information =
        Distributor +
        0{Resource_Description}1 +
        Distribution_Liability +
        0{Standard_Order_Process}n +
        0{Custom_Order_Process}1 +
        (Technical_Prerequisites) +
        (Available_Time_Period)
    
  11. Add new Single_Date/Time for each Calendar_Date in any Multiple_Dates/Times
    The 1994 standard had
    Multiple_Dates/Times =
        2{Calendar_Date + (Time_of_Day) }n
    
    The 1998 standard replaces this with
    Single_Date/Time =
        Calendar_Date +
        (Time_of_Day)
    
    Multiple_Dates/Times =
        2{Single_Date/Time}n
    
  12. Modify the value of Metadata_Standard_Version
    With all of these changes done, the record purports to conform to FGDC-STD-001-1998. So if the value of Metadata_Standard_Version does not start with FGDC-STD-001, it is set to FGDC-STD-001-1998.

When

For text and SGML files the upgrade option is ON by default. For XML files the upgrade option is OFF by default.

How to turn it on or off

Add the following option to your config file:
    input
        upgrade yes
or, to turn it off,
    input
        upgrade no
In the online validator, check the box marked "Upgrade".