Как прокомментировал @ glts , вот правильный ответ: список рассылки .
Я решил сделать ключевые слова более конкретными, добавил это в пространство имен домена:
(doseq [ns ["entity-1" ,,, "entity-n"]]
(->> (str "project.domain." ns)
(symbol)
(create-ns)
(alias (symbol ns))))
А затем ::entity-n/attribute
оценивается как :project.domain.entity-n/attribute
.
Для атрибутов из примера вопроса необходим только один дополнительный :
:
(s/def ::location/id ::nilable-nat-int)