Обсуждаем способы задать адресацию

Грубо говоря между улицей и городом есть районы, а между городом и страной есть еще районы/регионы. Необязательные, но есть.

Фактически, скрипту ничего не надо знать, кроме стартового уровня, включающего дома - улицы/квартала/комплекса. Далее он просто идет по восходящей и собирает имена в строку. Об этом я и говорил с самого начала. Т.е. берем дом, смотрим в какое отношение он включен, и пишем “$имя_отношения$, д.$номер_дома$”, далее смотрим, куда включено наше отношение, и так, пока не дойдем до конца.
Дома могут быть включены более, чем в одно отношение, и это просто обозначает, что для них есть более чем одна адресная строка.

Обратный разбор - от строки к конкретному дому несколько сложнее, но тоже реализуемо. Просто надо будет чуть поработать со строками…