ailev.ru

11 октября 2010 · Комментарий

Без заголовка

Попробую сформулировать как это выглядит. Мыслим о платформе онтологического программирования как о двух взаимосвязанных компонентах. Первый компонент -- семантический репозиторий, который помимо схемы и 4D-фактов о сущностях реального мира содержит также декларативные описания инвариантных соотношений между темпоральными частями этих сущностей. Описание соотношений делается в терминах логики предикатов первого порядка. Делать такие описания достаточно легко на тех же шаблонах, которые определяются специализированную локальную онтологию (OIM, хоть это и deprecated термин) для таких соотношений. Однако, в силу четырёхмерности онтологии в семантическом репозитории "время остановилось": описания соотношений есть, а вот действия нет. На философский вопрос о возможности движения мы отвечаем выделением второго компонента -- "пульт" или активатор. Задачей активатора является порождение изменений в фактах, которые представлены репозиторием -- "импульс воли". Для 4D-онтологии изменения фактов сводится к порождению темпоральных частей сущностей репозитория, как новых, так и ранее известных. Дальше проще: поскольку соотношения между темпоральными частями уже заданы в репозитории, появление новых вызывает каскад проистекающих из этого факта преобразований других фактов, которое в свою очередь также выражается в появлении новых темпоральных частей. Etc, etc, etc, до тех пор, пока волна активации не затухнет. Взаимодействие с внешними ресурсами (теми же веб-сервисами), кстати, можно достаточно легко "упихнуть" в 4D-соотношения, если представить их как монады в том смысле, что они декларативно описывают последовательность операций с side effect'ом. Тут потребуется некоторая локальная онтология для описания такого набора монад. Теперь разовью пример из предыдущего ответа: 1) Берём простую онтологию: есть банковский счёт со своим текущим остатком, есть операции со своей суммой (пусть будут просто операции списания и операции начисления). Онтология четырёхмерная, у банковского счёта есть темпоральные части. 2) Описываем соотношение: любая операция по банковскому счёту связывает две последовательные темпоральные части банковского счёта, при этом сумма операции и остаток банковского счёта до операции вместе равны остатку банковского счёта после операции. Это соотношение тривиально формулируется в терминах логики предикатов. 3) Активатор позволяет сделать из того же питона вызов "новая операция для указанного банковского счёта", после чего в семантическом репозитории появляется сущность операции с указанной суммой и счётом. 4) Волна активации раскручивает соотношение из п.2, что приводит к появлению новой темпоральной части соответствующего банковского счёта и вычислению его остатка в этой части. Сигнатуры вызовов для активатора могут легко байндится к любому языку, будь до веб-сервисы или тот же питон.

К записи · К обсуждению