Практика моделирования разворачивается на нескольких уровнях:
- Мир: объекты. Не модель - нужен, чтобы строить остальные уровни. Пожалуйста, не забывайте, что реальный мир всегда должен быть!
- M0: Модель (экземпляры, конкретные объекты). Тут ваше перечисление конкретно ваших объектов и связей между ними. Еще называется операционная модель/модель/онтология экземпляров/данные в базе данных. Например, тут могут быть перечислены и описаны ваши объекты с инвентарными номерами и конкретными значениями характеристик.
- М1: Типы/классы объектов в отдельных доменах, модель данных в базе данных. Мета-С-модель, то есть ваша ситуационная мета-модель с классами. Тут может быть перечислено, какие объекты вообще у вас бывают и какие у них бывают характеристики.
- М2: Мета-модель (middle ontology, прикладная онтология, например, какой-то фреймворк или материал учебника, мета-У-модель).
- М3: Мета-мета-модель (upper-ontology, например, BORO), которая определяет каких типов объекты бывают в М2. Например, это может быть представление, что у вас есть физические объекты, которые вы отличаете от всех прочих вот таким вот образом, а есть классы (или какие-то еще объекты ментального пространства).
- М4: Мета-мета-мета-модель (например, представление, что бывают объекты и отношения (теория теорий), в общем, какая-то foundational ontology). На этом уровне тоже бывает несколько разных картин мира, например, что есть объекты и операции конструирования следующих объектов. Там онтолог не берет объекты, чтобы построить между ними верные отношения, а строит (генерирует) все объекты онтологии начиная с очень небольшого количества изначально заданных объектов и определив набор операций конструирования. Сам он в этот момент выступает конструктором, производящим то самое конструирование по правилам, приводящее к порождению онтологии. Объекты, полученные таким способом, не будут иметь проблем, например, с отношением «часть-целое» (понять, к каким объектам оно применимо, а к каким нет) или других проблем, которые могут возникать, когда мы пытаемся понять, какой из двух классов включает в себя другой, - мы порождали объекты этой онтологии в определенном порядке с помощью определенных операций с точно знаем в рамках данной онтологии, какая операция к чему привела. Там даже нет, строго говоря, отношения «включает в себя», а есть операции, на которые мы обращаем внимание при создании новых объектов.
Штука в том, что нельзя построить какой-то уровень без всех остальных, но можно иметь их в неявном виде. Обычно именно это и происходит: человек, даже не особенно осознавая свою деятельностную роль, пишет текст, в котором не были выделены объекты (М0) в соответствии с какими-либо классами (М1); разумеется, по этим объектам было неясно, куда в middle-ontology (М2) и уже тем более в upper-ontology (М3) они относятся, и как это читать. Это информацию можно извлечь из контекста, но не всегда, так возникают двусмысленности в толковании.
Любое составление описания - это прежде всего моделирование, неважно, в какой форме оно делает - написание текста, составление диаграммы, работа в онтологическом редакторе, или составление таблицы.
Поэтому начинать нужно с определения мета-модели (или мета-мета-модели, если вы ее меняете). Представление о том, что бывают объекты и отношения, обычно не меняется.
Итак: онтология - это формализованное описание объектов и отношений какой-то предметной области, разделенное между какими-то интересантами.
Вы можете строить свою прикладную онтологию допиливая то, что нашли в учебнике - то есть, зная, какие примерно классы/типы объектов и затем объекты вам придется найти (заполняете шаблон). Этот подход является противоположным тому, чтобы выделить объекты «как есть» стихийно и дальше попробовать создать для них хорошие классы/типы- и так до момента, когда вы сможете подобрать хорошую верхнеуровневую онтологию.
Мета-У-модель, поскольку она берется из книжки (из учебника, стандарта, и так далее) всегда нуждается в обработке напильником по месту. А мета-С-модель, которую вы построите сами, прямо для своей предметной области (или которая получится после обработки напильником мета-У-модели) - это и есть практическая цель в большинстве случаев.
Например, мы знаем, что чтобы приготовить суп, нужно взять «овощи» и «мясо» (опционально) и их «термически обработать», пользуясь какой-то «посудой» и каким-то «нагревательным прибором». Добавить «приправы».
Соответственно наша мета-С-модель имеет объекты: «овощи», «мясо», «термическая обработка» (хотя здесь многие скажут, что это отношение; забегая вперед, скажу, что вы всегда можете превратить объект в отношение и отношение в объект), «посуда», «нагревательный прибор».
Часто бывает очень удобно взять уже кем-то разработанную мета-У-модель, потому что, как ни странно, ее не зря разработали, - она удобная, проверенная, является SOtA, а не просто используется ради совместимости и того, чтобы онтология была shared.
Расскажите объекты своей мета-модели. Возможно, это вдохновит вас на то, чтобы пересмотреть и то, что вы раньше выделили как объекты модели, потому что вы записали туда не вполне конкретные вещи.
Вы можете проследить, что объекты мета-модели очень похожи на «категории», которые были в задании раньше.