A Look at Upcoming Innovations in Electric and Autonomous Vehicles kb-prolog вышел в открытый доступ. База знаний с характером!

kb-prolog вышел в открытый доступ. База знаний с характером!

kb-prolog вышел в открытый доступ. База знаний с характером!

Разработчик под ником 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