Разработчик под ником Mateu опубликовал на GitHub проект kb-prolog - гиперреляционную базу знаний с адресуемым по содержимому хранилищем и встроенным графическим интерфейсом. Прототип писался для магистерской диссертации, но вырос в нечто куда более интересное.
Что такое kb-prolog и зачем он нужен
В основе проекта - идея хранить знания не в плоских таблицах и не в классических тройках «субъект - предикат - объект», а в гиперреляционном графе. Каждое утверждение здесь имеет вид (Субъект, Предикат, Объект, Свойства), и любой из его элементов сам может быть утверждением. Это называется реификацией. Проще говоря, система умеет делать утверждения об утверждениях - подход, который давно обсуждается в сообществе семантического веба, но редко реализуется так компактно.
Код написан на C и Prolog. Среда выполнения - Trealla Prolog, доступ к SQLite и графической библиотеке Raylib организован через FFI с загружаемыми разделяемыми библиотеками. Лицензия - GNU GPL v3.0, исходники открыты полностью.
Техническая начинка: хеши, версии и граф
Хранилище работает по принципу content-addressed storage: файлы хешируются через SHA-256 и атомарно фиксируются вместе с метаданными графа. Дедупликация происходит автоматически - одинаковые данные не дублируются. Это роднит kb-prolog с подходами, знакомыми по системам вроде Git или IPFS, только здесь всё заточено под логические базы знаний.
Версионирование реализовано через механизм time-travel: каждое обновление порождает новую версию утверждения, связанную с предыдущей через поле replaces_id. История разворачивается как цепочка - можно пройтись по ней назад и восстановить любое состояние базы.
Ключевые возможности проекта
- Гиперреляционный граф с поддержкой реификации - утверждения могут ссылаться на другие утверждения
- Content-addressed storage с SHA-256 и автоматической дедупликацией
- Time-travel: полная история изменений через цепочку версий
- Trealla Prolog как основная среда выполнения, доступ к SQLite и Raylib через C FFI
- Интерактивный граф-вьюер с предпросмотром изображений, строкой запросов и поиском по узлам
Почему это важно за пределами диссертации
Prolog как язык работы со знаниями переживает что-то вроде тихого ренессанса. На фоне бума больших языковых моделей всё больше исследователей возвращается к символическим подходам - туда, где рассуждения прозрачны и проверяемы. kb-prolog вписывается в этот тренд органично. Граф-хранилище с версионированием и логическим движком под капотом - это не просто учебный прототип, а вполне рабочая архитектурная идея.
Проект пока в статусе прототипа, и Mateu, судя по описанию, не претендует на законченный продукт. Но открытый код и внятная концепция делают его интересным отправным пунктом для тех, кто занимается семантическими системами, knowledge graphs или просто хочет посмотреть, как Prolog справляется с нетривиальной инженерной задачей.