Разработчик под ником Mateu опубликовал на GitHub проект kb-prolog - гиперреляционную базу знаний, написанную на C и Prolog. Это не очередная обёртка над SQLite. Это прототип с собственной философией хранения данных, созданный в рамках магистерской диссертации и неожиданно оказавшийся куда интереснее академического упражнения.
Что внутри и почему это не банальный граф
Ядро kb-prolog строится вокруг гиперреляционного графа. Знания здесь хранятся не просто как пары «субъект - объект», а как утверждения вида (Субъект, Предикат, Объект, Свойства). Ключевая деталь: субъекты и объекты сами могут быть утверждениями. Это реификация - возможность делать утверждения об утверждениях. Звучит философски, но на практике позволяет строить семантически богатые структуры, которые обычные графовые БД просто не потянут.
Хранилище адресуется по содержимому. Файлы хешируются через SHA-256, атомарно фиксируются вместе с метаданными графа, дедупликация происходит автоматически. Никакой ручной возни с дублями. Обновления не перезаписывают старые данные - они создают новые версии утверждений, связанные через replaces_id. Откат по истории работает через цепочку версий. Time-travel из коробки.
Prolog как первый класс, а не костыль
Принципиальный выбор автора - Trealla Prolog в качестве основной среды выполнения. Это не декоративное решение. Prolog здесь не обёртка и не язык конфигурации - это полноценный рантайм. SQLite и Raylib подключаются через разделяемые C-библиотеки посредством FFI. Архитектура получилась перевёрнутой относительно привычных схем: не C управляет Prolog, а наоборот.
Для работы с графом предусмотрен интерактивный просмотрщик на базе Raylib - с предпросмотром изображений, строкой запросов и поиском по узлам. Не просто CLI-инструмент для энтузиастов, а полноценный визуальный интерфейс.
Контекст и потенциал
Гиперреляционные базы знаний - активно развивающаяся ниша. Классические тройки RDF давно критикуют за ограниченность: они плохо справляются с метаданными и контекстом. Именно поэтому появились форматы вроде RDF* и проекты наподобие Wikidata, где реификация - не экзотика, а норма. kb-prolog движется в том же направлении, но со ставкой на Prolog-экосистему и локальное хранение без зависимости от облака.
Проект распространяется под лицензией GNU GPL v3.0. Код открыт, документация есть. Для исследователей в области семантических технологий и всех, кто работает с базами знаний, - повод как минимум заглянуть в репозиторий и посмотреть, как устроена архитектура изнутри.
Ключевые характеристики проекта
- Язык реализации: C и Prolog (Trealla Prolog как рантайм)
- Хранение: гиперреляционный граф с реификацией утверждений
- Хранилище: CAS с SHA-256-хешированием и автодедупликацией
- Версионирование: time-travel через цепочку replaces_id
- Интерфейс: графический просмотрщик на Raylib с поиском и предпросмотром
- Лицензия: GNU General Public License v3.0
- Статус: прототип магистерской диссертации, открытый исходный код на GitHub