Последние несколько дней я неоднократно натыкался в самых разных местах на рецепт счастья в описании мира. Успех в моделировании чрезвычайно прост, как 1-2-3:
1. Онтология. Для выражения мира нужны концепты, они отвечают на вопрос "что есть в мире". Другие названия для этой составляющей счастья мировыражения: модель данных, концептуальная схема, схема, метамодель. Онтология критична для обмена знаниями.
Модели хранятся внутри компьютера как онтология, схема. Если вам не нужен доступ к моделям, этого достаточно.
Семантика (значения концептов, увязанных в концептуальную схему) -- это тоже тут. Там, где есть онтология, там можно приписывать слово "семантический".
Без онтологий очень тяжело. Поглядите на вопль комьюнити Business Rules и Complex Event Processing, как им тяжело жить без явной онтологии (особенно онтологии времени):
http://intranet.cs.man.ac.uk/ruleML/presentations/keynote1.ppt 2. Лексика. Концепты по большому счету безымянны, а разные люди называют их по-разному в разных языках. Доступ к концептам дает лексика (vocabulary), терминология критична для понимания.
Если вам (а не вашему компьютеру) нужно как-то редактировать ваши модели (или программы -- все равно), то вам потребуется лексика. "Метки", "имена", "идентификаторы", "термины", "названия" -- это все лексика, терминология, словари.
3. Нотация. Чтобы выразить отношения между концептами, вам нужна нотация, синтаксис. Графический или текстовый, или смешанный, или навроде математической нотации, или даже альтернативные нотации для одной и той же модели/программы, используемые для разных случаев.
Нотации дают удобство мыслительных операций для людей. Диаграммы Фейнмана, женевская химическая нотация, арабские цифры вместо римских -- это все были прорывы в выразительности. Нотации неразрывно связаны с концептами и лексикой, они превращают их в язык, на котором можно писать и читать.
Чтобы построить предметно-специфицированный язык (domain-specific language, DSL), вам потребуются:
-- онтология (метамодель, схема)
-- лексика (именно о ней заботятся при локализациях: кому удобно читать-писать по-русски, пусть используют русскую лексику. Кому удобно по-английски -- пусть переключаются на английский, это не должно ни на что влиять)
-- нотация (пусть она будет для этой предметной области привычна. Если вам нужно работать с музыкантами -- пусть это будут ноты на пяти линейках, а если у вас диджеи, то предложите им piano roll).
Проблема в том, что счастья нет:
-- ISO 15926 хорош как онтология, но в нем нет огромного числа важных концептов.
-- SBVR хорош для терминологии, но онтология в нем никудышная.
-- про нотации вообще сказать нечего, полная свобода делать свои собственные ошибки.
Я согласен, что вы можете получить счастье в одном конкретном случае: если вам требуется создавать описания мира, адресующие какой-то один узкий интерес одного заинтересованного лица. Создание одного языка моделирования/программирования поддерживается сегодня огромным количеством инструментария (особенно, если вам неважна интерактивность и вы готовы удовольствоваться "компилятором", при этом оставаясь в рамках текстовой нотации).
Но как только вам потребовалось описывать мир так, чтобы удовлетворить самых разных интересантов, и чтобы эти описания все были связаны между собой и поддерживалась их целостность, да еще и обеспечивалось коллективная работа над этим описанием, да еще объемы этих описаний велики (какая-нибудь нефтяная платформа с находящимся на ней небольшим нефтеперерабатывающим заводом, описанная с точностью, достаточной для ее изготовления), то у вас БОЛЬШИЕ ПРОБЛЕМЫ -- и с онтологией (должна быть одна, хотя в ней будет много-много метамоделей), и с лексиками (их уже будет много) и нотациями (их тоже немало -- десятки, если не сотни).
Нынешние линейки САПРов решают эту задачу "на коленке", все решения глубоко внутрифирменные. Языковые верстаки пытаются вывести решение этой задачи в обычную разработческую рутину.