def check_recommended_global_attributes(self, dataset):
recommended_ctx = TestCtx(BaseCheck.MEDIUM, '<STR_LIT>')<EOL>variable_defined_platform = any((hasattr(var, '<STR_LIT>') for var in dataset.variables))<EOL>if not variable_defined_platform:<EOL><INDENT>platform_name = getattr(dataset, '<STR_LIT>', '<STR_LIT>')<EOL>recommended_ctx.assert_true(platform_name and platform_name in dataset.variables, '<STR_LIT>')<EOL><DEDENT>sea_names = [sn.lower() for sn in util.get_sea_names()]<EOL>sea_name = getattr(dataset, '<STR_LIT>', '<STR_LIT>')<EOL>sea_name = sea_name.replace('<STR_LIT:U+002CU+0020>', '<STR_LIT:U+002C>')<EOL>sea_name = sea_name.split('<STR_LIT:U+002C>') if sea_name else []<EOL>for sea in sea_name:<EOL><INDENT>recommended_ctx.assert_true(<EOL>sea.lower() in sea_names,<EOL>'<STR_LIT>'.format(sea)<EOL>)<EOL><DEDENT>for attr in ['<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>attr_value = getattr(dataset, attr, '<STR_LIT>')<EOL>try:<EOL><INDENT>parse_datetime(attr_value)<EOL>recommended_ctx.assert_true(True, '<STR_LIT>')  <EOL><DEDENT>except ISO8601Error:<EOL><INDENT>recommended_ctx.assert_true(False, '<STR_LIT>'.format(attr, attr_value))<EOL><DEDENT><DEDENT>units = getattr(dataset, '<STR_LIT>', '<STR_LIT>').lower()<EOL>recommended_ctx.assert_true(units == '<STR_LIT>', '<STR_LIT>'.format(units))<EOL>units = getattr(dataset, '<STR_LIT>', '<STR_LIT>').lower()<EOL>recommended_ctx.assert_true(units == '<STR_LIT>', '<STR_LIT>'.format(units))<EOL>value = getattr(dataset, '<STR_LIT>', '<STR_LIT>')<EOL>recommended_ctx.assert_true(value.lower() in ['<STR_LIT>', '<STR_LIT>'], '<STR_LIT>'.format(value))<EOL>ack_exists = any((getattr(dataset, attr, '<STR_LIT>') != '<STR_LIT>' for attr in ['<STR_LIT>', '<STR_LIT>']))<EOL>recommended_ctx.assert_true(ack_exists, '<STR_LIT>')<EOL>contributor_name = getattr(dataset, '<STR_LIT>', '<STR_LIT>')<EOL>contributor_role = getattr(dataset, '<STR_LIT>', '<STR_LIT>')<EOL>names = contributor_role.split('<STR_LIT:U+002C>')<EOL>roles = contributor_role.split('<STR_LIT:U+002C>')<EOL>recommended_ctx.assert_true(contributor_name != '<STR_LIT>', '<STR_LIT>')<EOL>recommended_ctx.assert_true(len(names) == len(roles), '<STR_LIT>')<EOL>recommended_ctx.assert_true(contributor_role != '<STR_LIT>', '<STR_LIT>')<EOL>recommended_ctx.assert_true(len(names) == len(roles), '<STR_LIT>')<EOL>if hasattr(dataset, '<STR_LIT>'):<EOL><INDENT>recommended_ctx.assert_true(getattr(dataset, '<STR_LIT>', '<STR_LIT>') != '<STR_LIT>', '<STR_LIT>')<EOL><DEDENT>return recommended_ctx.to_result()<EOL>
Check the global recommended attributes for 1.1 templates. These go an extra step besides
just checking that they exist.

:param netCDF4.Dataset dataset: An open netCDF dataset

Basic "does it exist" checks are done in BaseNCEICheck:check_recommended
:title = "" ; //..................................................... RECOMMENDED - Provide a useful title for the data in the file. (ACDD)
:summary = "" ; //................................................... RECOMMENDED - Provide a useful summary or abstract for the data in the file. (ACDD)
:source = "" ; //.................................................... RECOMMENDED - The input data sources regardless of the method of production method used. (CF)
:platform = "platform_variable" ; //................................. RECOMMENDED - Refers to a variable containing information about the platform. May also put this in individual variables. Use NODC or ICES platform table. (NODC)
:instrument = "instrument_parameter_variable" ; //................... RECOMMENDED - Refers to a variable containing information about the instrument. May also put this in individual variables. Use NODC or GCMD instrument table. (NODC)
:uuid = "" ; //...................................................... RECOMMENDED - Machine readable unique identifier for each file. A new uuid is created whenever the file is changed. (NODC)
:sea_name = "" ; //.................................................. RECOMMENDED - The names of the sea in which the data were collected. Use NODC sea names table. (NODC)
:id = "" ; //........................................................ RECOMMENDED - Should be a human readable unique identifier for data set. (ACDD)
:naming_authority = "" ; //.......................................... RECOMMENDED - Backward URL of institution (for example, gov.noaa.nodc). (ACDD)
:time_coverage_start = "" ; //....................................... RECOMMENDED - Use ISO8601 for date and time. (ACDD)
:time_coverage_end = "" ; //......................................... RECOMMENDED - Use ISO8601 for date and time.(ACDD)
:time_coverage_resolution = "" ; //.................................. RECOMMENDED - For example, "point" or "minute averages". (ACDD)
:geospatial_lat_min = 0.0f ; //...................................... RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_lat_max = 0.0f ; //...................................... RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_lat_units = "degrees_north" ; //......................... RECOMMENDED - Use UDUNITS compatible units. (ACDD)
:geospatial_lat_resolution= "" ; //.................................. RECOMMENDED - For example, "point" or "10 degree grid". (ACDD)
:geospatial_lon_min = 0.0f ; //...................................... RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_lon_max = 0.0f ; //...................................... RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_lon_units = "degrees_east"; //........................... RECOMMENDED - Use UDUNITS compatible units. (ACDD)
:geospatial_lon_resolution= "" ; //.................................. RECOMMENDED - For example, "point" or "10 degree grid". (ACDD)
:geospatial_vertical_min = 0.0f ; //................................. RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_vertical_max = 0.0f ; //................................. RECOMMENDED - Replace with correct value. (ACDD)
:geospatial_vertical_units = "" ; //................................. RECOMMENDED - Use UDUNITS compatible units. (ACDD)
:geospatial_vertical_resolution = "" ; //............................ RECOMMENDED - For example, "point" or "1 meter binned". (ACDD)
:geospatial_vertical_positive = "" ; //.............................. RECOMMENDED - Use "up" or "down". (ACDD)
:institution = "" ; //............................................... RECOMMENDED - Institution of the person or group that collected the data.  An institution attribute can be used for each variable if variables come from more than one institution. (ACDD)
:creator_name = "" ; //.............................................. RECOMMENDED - Name of the person who collected the data. (ACDD)
:creator_url = "" ; //............................................... RECOMMENDED - URL for person who collected the data. (ACDD)
:creator_email = "" ; //............................................. RECOMMENDED - Email address for person who collected the data. (ACDD)
:project = "" ; //................................................... RECOMMENDED - Project the data was collected under. (ACDD)
:processing_level = "" ; //.......................................... RECOMMENDED - Provide a description of the processing or quality control level of the data. (ACDD)
:references = "" ; //................................................ RECOMMENDED - Published or web-based references that describe the data or methods used to produce it. (CF)
:keywords_vocabulary = "" ; //....................................... RECOMMENDED - Identifies the controlled keyword vocabulary used to specify the values within the attribute "keywords". e.g. NASA/GCMD Earth Science Keywords (ACDD)
:keywords = "" ; //.................................................. RECOMMENDED - A comma separated list of keywords coming from the keywords_vocabulary. (ACDD)
:acknowledgment = "" ; //............................................ RECOMMENDED - Text to use to properly acknowledge use of the data. (ACDD)
:comment = "" ; //................................................... RECOMMENDED - Provide useful additional information here. (ACDD and CF)
:contributor_name = "" ; //.......................................... RECOMMENDED - A comma separated list of contributors to this data set. (ACDD)
:contributor_role = "" ; //.......................................... RECOMMENDED - A comma separated list of their roles. (ACDD)
:date_created = "" ; //.............................................. RECOMMENDED - Creation date of the netCDF.  Use ISO8601 for date and time. (ACDD)
:date_modified = "" ; //............................................. RECOMMENDED - Modification date of the netCDF.  Use ISO8601 for date and time. (ACDD)
:publisher_name = "" ; //............................................ RECOMMENDED - Publisher of the data. (ACDD)
:publisher_email = "" ; //........................................... RECOMMENDED - Email address of the publisher of the data. (ACDD)
:publisher_url = "" ; //............................................. RECOMMENDED - A URL for the publisher of the data. (ACDD)
:history = "" ; //................................................... RECOMMENDED - Record changes made to the netCDF. (ACDD)
:license = "" ; //................................................... RECOMMENDED - Describe the restrictions to data access and distribution. (ACDD)
:metadata_link = "" ; //............................................. RECOMMENDED - This attribute provides a link to a complete metadata record for this data set or the collection that contains this data set. (ACDD)