def _split_nested_property_string(nested_string: str):
    """
    E.g., given jbo:interprets#jbo:within#rdfs:label, return a list of tuples:
    [('jbo:interprets', 'interprets'), ('jbo:within', 'interprets_within'), ('rdfs:label', 'interprets_within_label')]

    :param nested_string:
    :return:
    """
    result = []
    prop_var = ''
    for prop in nested_string.split('#'):
        prop_var += '_' + prop.split(':')[1]
        if prop_var.startswith('_'):
            prop_var = prop_var[1:]
        result.append((prop, prop_var))
    return result
