def parse_rose_stream_name(stream_name):
    """
    Convert the Rose stream name given to this ESGF dataset into more useful
    components.....

    :param str stream_name: The Rose stream name given to this ESGF data set.
    :returns: The dataset components from the stream name.
    :rtype: dict
    """
    cmpts = stream_name.split('_')
    cmpt_names = ['source_id', 'experiment_id', 'variant_label',
                  'table_id', 'cmor_name']

    return {cmpt_name: cmpts[index]
            for index, cmpt_name in enumerate(cmpt_names)}