def urn_to_hrn(urn):
    """
    convert a urn to hrn
    return a tuple (hrn, type)
    """

    # if this is already a hrn dont do anything
    if not urn or not urn.startswith(URN_PREFIX):
        return urn, None

    name = urn[len(URN_PREFIX):]
    hrn_parts = name.split("+")
    type = hrn_parts.pop(2)

    # Remove the authority name (e.g. '.sa')
    if type == 'authority':
        hrn_parts = hrn_parts[:-1]

    # convert hrn_parts (list) into hrn (str) by doing the following    
    # remove blank elements
    # replace ':' with '.'
    # join list elements using '.'
    hrn = '.'.join([part.replace(':', '.') for part in hrn_parts if part]) 
    
    return str(hrn), str(type)
dataset/ETHPy150Open fp7-ofelia/ocf/expedient/src/python/sfa/util/namespace.py/urn_to_hrn/original