Минуточку. Когда Вы говорите, что типы (той или иной системы) - это материал, то это понятно, как нечто вроде выбора языка описания *данных*. Но когда Вы говорите про способ, то сюда входит всё то, что умеют делать онтологи? Просто слышать, что стыковка по смыслу делается на основании совпадения 4D объема, как-то зябко.

Вот онтологи умеют делать такие диаграммы (и говорят, что в подобных описаниях нормально будет иметь порядка 200 типов "из коробки" — upper ontology).
Требуется выбрать язык описания для такого — foundational ontology. Сегодня это RDF/OWL с логикой первого порядка, или даже CycL с логикой "полуторного порядка". А программирование всё одно на каких-то прикладных языках, типа Java или Julia. Вот и вопрос: а сразу нельзя на типах Julia? Там вроде как нормальная такая система типов. А сам язык вполне достаточен для всех нужных операций над этими типами. И типы там динамические, всё довольно гибко должно получаться.
Как это лучше сделать?! Все проблемы на стыках предметных областей, а не в рамках одной предметной области — у онтологов, программистов, логиков всё в порядке внутри их предметных областей. А проблемы только на стыке, когда нужно всё собрать в готовое решение, и чтобы работало.