Thu, 06/11/2008 - 22:31 — robertm
This page contains the XSugar stylesheet for inter-converting between CF-metadata's plain-text format for standard names and a corresponding XML format. This stylesheet may be used for parsing standard names (i.e. check that they conform to rules specifying how such names may be constructed), as well as for conversion in either direction.
Note that everything below the horizontal line is that actual XSugar stylesheet - this is the master copy. So only edit it if you know what you are doing!
/* Robert Muetzelfeldt 16 Oct 2008 This is a direct re-casting of the rules given in http://cf-pcmdi.llnl.gov/documents/cf-standard-names/guidelines for CF-metadata Standard Names in XSugar. */ /* Notes: 'Substance' needs to be further analysed in terms of its constituent parts */ BaseName = amount|area|area_fraction|density|energy|energy_content|energy_density|frequency|frequency_of_occurence|heat_flux|heat_transport|horizontal_streamfunction|horizontal_velocity_potential|mass|mass_flux|mass_fraction|mass_mixing_ratio|mass_transport|mole_fraction|mole_flux|momentum_flux|partial_pressure|period|power|pressure|probability|radiative_flux|specific_eddy_kinetic_energy|speed|stress|temperature|thickness|velocity|volume|volume_flux|volume_fraction|volume_transport|vorticity Condition = clear_sky|deep_snow|no_snow Direction = upward|downward|northward|southward|eastward|westward|x|y Medium = air|atmosphere_boundary_layer|mesosphere|sea_ice|sea_water|soil|soil_water|stratosphere|thermosphere|troposphere Substance = condensed_water|oxygen|sulfate_aerosol|ammonium_dry_aerosol|black_carbon_dry_aerosol|cloud_condensed_water|cloud_ice|cloud_liquid_water|convective_cloud_condensed_water|convective_cloud_ice|convective_cloud_liquid_water|dimethyl_sulfide|dust_dry_aerosol|frozen_water|graupel|mercury_dry_aerosol|nitrate_dry_aerosol|ozone|particulate_organic_matter_dry_aerosol|pm1_aerosol|pm10_aerosol|pm2p5_aerosol|precipitation|primary_particulate_organic_matter_dry_aerosol|rain|seasalt_dry_aerosol|secondary_particulate_organic_matter_dry_aerosol|snow|stratiform_cloud_ice|stratiform_cloud_liquid_water|sulfate_dry_aerosol|sulfur_dioxide|unfrozen_water|water Surface = toa|tropopause|surface|adiabatic_condensation_level|cloud_top|convective_cloud_top|cloud_base|convective_cloud_base|freezing_level|ground_level|maximum_wind_speed_level|sea_floor|sea_ice_base|sea_level|top_of_atmosphere_boundary_layer|top_of_atmosphere_model|top_of_dry_convection Process = advection|convection|deep_convection|diabatic_processes|diffusion|dry_convection|gravity_wave_drag|gyre|isostatic_adjustment|large_scale_precipitation|longwave_heating|moist_convection|overturning|shallow_convection|shortwave_heating|thermodynamics WhereType = cloud|land|open_sea|sea|sea_ice|vegetation NL = \r\n|\r|\n Text = [a-z]+(_[a-z0-9]+)* file : [standard_names Ss] =[standard_names Ss] > standard_names : [standard_name1 S] [NL] [standard_names Ss] = [standard_name1 S] > [standard_names Ss] standard_names >: [Text T] [NL] [standard_names Ss] = [Text T] > [standard_names Ss] standard_names : = /* The following is actually the "direction of the spatial component", so "component" is a bad name (but kept here for consistency with the original terminology). Note that the rules allow for two direction terms to be used for a tensor quantity. Clearly, only certain pairings are possible, but I have not built this restriction in as yet. */ standard_name1 : [surface S] [component C] [standard_name N] [at_surface AS] [in_medium M] [due_to_process P] [where_type T] [assuming_condition AC] = [surface S] [component C] [standard_name N] [at_surface AS] [in_medium M] [due_to_process P] [where_type T] [assuming_condition AC] surface : [Surface S] "_" = [Surface S] > surface : = component : [Direction D1] "_" [Direction D2] "_" = [Direction D1] > [Direction D2] > component : [Direction D] "_" = [Direction D] > component : = at_surface : "_at_" [Surface S] = [Surface S] > at_surface : = in_medium : "_in_" [Medium M] = [Medium M] > in_medium : = due_to_process : "_due_to_" [Process P] = [Process P] > due_to_process : = where_type : "_where_" [WhereType W] = [WhereType W] > where_type : = assuming_condition : "_assuming_" [Condition C] = [Condition C] > : = substance : [Substance S] = [Substance S] > standard_name : "change_over_time_in_" [standard_name X] = [standard_name X] > standard_name : "convergence_of_" [standard_name X] = [standard_name X] > standard_name : "horizontal_convergence_of_" [standard_name X] = [standard_name X] > standard_name : "correlation_of_" [standard_name X] "_and_" [standard_name Y] = [standard_name X] [standard_name Y] > standard_name : "correlation_of_" [standard_name X] "_and_" [standard_name Y] "_over_" [standard_name Z] = [standard_name X] [standard_name Y] [standard_name Z] > standard_name : "covariance_of_" [standard_name X] "_and_" [standard_name Y] = [standard_name X] [standard_name Y] > standard_name : "covariance_of_" [standard_name X] "_and_" [standard_name Y] "_over_" [standard_name Z] = [standard_name X] [standard_name Y] [standard_name Z] > standard_name : [Direction D] "_derivative_of_" [standard_name X] = [Direction D] [standard_name X] > standard_name : "derivative_of_" [standard_name X] "_wrt_" [standard_name Y] = [standard_name X] [standard_name Y] > standard_name : "direction_of_" [standard_name X] = [standard_name X] > standard_name : "divergence_of_" [standard_name X] = [standard_name X] > standard_name : "horizontal_divergence_of_" [standard_name X] = [standard_name X] > standard_name : "histogram_of_" [standard_name X] = [standard_name X] > standard_name : "histogram_of_" [standard_name X] "_over_" [standard_name Y] = [standard_name X] [standard_name Y]> standard_name : "integral_of_" [standard_name X] "_wrt_" [standard_name Y] = [standard_name X] [standard_name Y]> /* I'm really uncomfortable handling standard functions (integral, ln, log10) like this. Given that we are now moving into MathML territory, why not just include MathML? */ standard_name : "ln_" [standard_name X] = [standard_name X] > standard_name : "log10_" [standard_name X] = [standard_name X] > standard_name : "magnitude_of_" [standard_name X] = [standard_name X] > standard_name : "probability_distribution_of_" [standard_name X] = [standard_name X] > standard_name : "probability_distribution_of_" [standard_name X] "_over_" [standard_name Z] = [standard_name X] [standard_name Z] > standard_name : "probability_distribution_function_of_" [standard_name X] = [standard_name X] > standard_name : "probability_distribution_function_of_" [standard_name X] "_over_" [standard_name Z] = [standard_name X] [standard_name Z] > standard_name : "product_of_" [standard_name X] "_and_" [standard_name Y] = [standard_name X] [standard_name Y] > standard_name : "ratio_of_" [standard_name X] "_to_" [standard_name Y] = [standard_name X] [standard_name Y] > standard_name : "square_of_" [standard_name X] = [standard_name X] > standard_name : "tendency_of_" [standard_name X] = [standard_name X] > /* Hand-crafted rules */ standard_name : "mass_concentration_of_" [substance S] [in_medium M] = [substance S] [in_medium M] > standard_name : "mass_fraction_of_" [substance S] [in_medium M] = [substance S] [in_medium M] > /* This is a quick fix to get things up and running! */ standard_name : [BaseName BN] = [BaseName BN] >
- Printer-friendly version
- Log in or register to post comments