Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

Типы языков программирования как foundational ontology

Вот тут сравнивают OP (object paradigm) из BORO book и ORM (object-role model) как пример 4D против 3D онтологии, 2012 год -- https://arxiv.org/abs/1207.2619. И делают вывод, что 4D выигрывает во всём, кроме двух вещей:
-- нужно серьёзно поломать мозг (ну, как для ньютоновской физики, где палец давит в стол, а стол давит в палец, по сравнению с аристотелевской, где палец давит в стол, а стол в палец давить никак не может). Ну, это задача образования. Люди обучаемы, в том числе люди обучаемы state-of-the-art 4D онтологии, при этом одной хорошей онтологии не хватит никогда (это ж не физика!), учится этому придётся много, и нужно сразу будет учить онтологическому кругозору.
-- отсутствие нормальной визуальной нотации. При этом признаётся, что чаще всего в 3D онтологии никакой онтологии времени нет, а есть "просто типы" из foundational ontology. И можно просто нарисовать 4D объекты и отношения в рамках "просто типов" из foundational ontology. Но это кривовато. Я согласен, что это кривовато, но отлично работает! Какой-нибудь IFC в BIM именно так и устроен -- абстрактная структура для изображения объектов, отношений, атрибутов, презентаций и т.д., но потом на ней реализуется ad hoc модель предметной области, от "презентации онтологии" переходим к собственно онтологии, от foundational к upper, от "моделирования мира" к "каков мир" -- с молчаливой улыбкой в ответ на вопрос, что структура мира существенно зависит от тех выборов, которые мы сделали в момент, когда выбирали средства для моделирования этого мира. Вот с чем я не согласен, так это с тем, что удобная нотация для foundational ontology должна быть визуальной. Это я подробно писал в книжке "Визуальное мышление. Доклад о том, почему им нельзя обольщаться" (https://ridero.ru/books/vizualnoe_myshlenie/).

В языках программирования ровно оно: foundational ontology без каких-то внятных онтологических посылок. Типы, и всё. Холст, на котором рисовать, никаких предположений, что там будет рисоваться, какой мир. Никаких замечаний про моделирование мира не делается, поэтому 4D или 3D вопрос не поднимается. Можно пообсуждать, где разница между
-- upper ontology (верхнеуровневая онтология: из чего же состоит мир -- в том числе 3D/endurantiosm и 4D/perdurantism оттуда)
-- foundational ontology (онтология выразительных средств, язык разговора об онтологии, innate priors о моделируемом мире -- выбранная теория понятий, https://plato.stanford.edu/entries/concepts/ включая де-факто победившую в онтологии theory theory https://www.iep.utm.edu/th-th-co/ и далее проход в типизацию -- различие между типами и конкретностями, и дальше ход на теорию типов и языки программирования).

Обо всём этом см. мои рассуждения того же 2012 года "Понятия и категории: в мозгу, софте, справочных данных", https://ailev.livejournal.com/1007293.html. Не очень много изменилось с тех пор, разве что стал понятен де-факто тупик с триплами как универсальным представлением, и появилось понимание статистической природы языка и отнесения к типам в связи с развитием deep learning, плюс самые разные варианты смешения символьного и коннекционистского вывода. Ибо будущее в этом стыке, и нужно это будущее учитывать уже сегодня. Вот, например, какие интересные проекты входят на поверхность: https://www.ai21.com/sense-bert (комментарий про эту попытку внести побольше семантики в BERT см. в https://medium.com/syncedreview/israeli-ai-research-company-led-by-stanford-professor-and-mobileeye-ceo-introduces-model-to-solve-747acaad8357).

Вот нужно с этим как-то доразобраться, пункты для todo list:
-- теория типов и современные языки программирования как основа для foundational ontology в оппозицию теории баз данных и моделей данных. Нужно как-то соединить кресты металлические с крестами католическими (foundational ontology от upper ontology примерно так и соединены). И в эту точку ещё и про статистическое отнесение к типам, и про выучивание типов что-то понять. На эту тему только что прошло обсуждение в чате Julia, и там дали ссылку на сообщество, обсуждающее типы в языках программирования: https://t.me/joinchat/Ai4h2D9SWO8GfISyv-CHsQ
-- предложение нормального текстового моделирования онтологии на языке с современными типами (Julia с онтологическим DSL тут вполне пойдёт, просто сделать нужные макросы. И даже если речь идёт о статистически определяемых типах, это тоже можно отмоделировать, почему бы и нет).

А ещё нужно ответить на "социальный вопрос": будут ли пользоваться аналогом "стандартной библиотеки" или "прикладных пакетов" в языках программирования в случае онтологий? Или каждый раз на коленке писать собственный онтологический код, выполнять кривое онтологическое моделирование? В проектах интеграции жизненного цикла предпочитают каждый раз моделировать с нуля, чужими справочными данными не пользуется никто и никогда. Вопрос, по большому счёту, тот же, что и для языков программирования и фреймворков, только в этих языках нужны прежде всего операции, а тут речь идёт о моделировании мира. И операции люди предпочитают брать из фреймворков, а вот модели мира (над которыми потом делать свои операции) -- нет. Модели мира каждый делает сам, в зависимости от своих потребностей. С чужими моделями мира (а хоть и "популярными") в свои проекты не принимают. Но без какой-то связной модели мира плохо. Всё-таки прикладные системы делать хорошо на основе предобученных моделей, просто подстройкой к прикладной предметной области, как описано в https://ailev.livejournal.com/1485511.html. Какой-то knowledge graph это как раз из этой области, мы ж о его создании говорим? О языке его представления.

При этом текущий стандарт текстовых нотаций для онтологии/knowledge graph -- или OWL, или язык логики первого порядка (Common Logic aka ISO/IEC24707:2018), или язык представления знаний с логикой "полуторного порядка" типа CycL (https://en.wikipedia.org/wiki/CycL). Ну, или есть ещё языки манипулирования данных (не запросов! запросы ведь ничего в базе данных не меняют, схему базы данных не строят) самых разных баз данных -- там другой заход, очень простые foundational ontology, никакого сравнения с системами типов из языков программирования. Всё, что нужно сделать -- это предложить какую-то удобную нотацию для простого варианта чего-то похожего на онтологию из BORO book или HQDM, привязанную к системному подходу. Это в сочетании с Julia и пакетами инженерного моделирования и будет SysMoLan (https://ailev.livejournal.com/1443879.html). А теоретическая часть ляжет в основу курса вычислительного мышления -- https://ailev.livejournal.com/1477090.html

И всё это ни разу не должно быть визуальное. Если речь идёт о программировании, моделировании, онтологизировании, симуляции, обучении и т.д. -- всё только текстовое. Всё визуальное -- это первые 15 минут поиграться фломастером на флипчарте, и даже без какой-то нотации. Просто в пространстве раскидать какие-то идеи для будущих концептов, чтобы было удобно показывать на них пальцем, и всё. Можно и слова раскидать по флипчарту, кружочки и квадратики раскидывают только потому, что слов-имён для новых концептов ещё нет, просто место их обозначают. Но таки потом долго и плодотворно моделировать нужно только в тексте, с использованием онтологической IDE, студии моделирования-онтологизирования-программирования.

И да, социологические вопросы интересны только тогда, когда с этим knowledge graph работают люди -- в тех же проектах интеграции данных жизненного цикла. А если с ним работают алгоритмы AI, то всё ОК. Для них таблетки знаний жуются долго, но всё-таки прожёвываются. Это не непреодолимое препятствие, речь тут в конечном итоге идёт не о людях. Люди тоже будут участвовать, но их нужно очень мало, хотя и очень высокой квалификации. Остальное сделают кремниевые мозги.

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10216065238597805
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 32 comments