Разработчик под ником Mateu опубликовал на GitHub прототип гиперреляционной базы знаний kb-prolog - проект, выросший из магистерской диссертации и претендующий на нестандартный подход к хранению и структурированию данных. Это не просто учебная работа: за ней стоит вполне рабочая архитектура, которая может заинтересовать всех, кто давно ищет альтернативу классическим графовым хранилищам.
Что такое kb-prolog и зачем он нужен
Классические триплхранилища работают по схеме «Субъект - Предикат - Объект». Просто, понятно, но тесно. kb-prolog добавляет четвёртое измерение - свойства самого утверждения. Мало того, субъекты и объекты сами могут быть утверждениями. Это называется реификацией, и именно она позволяет делать утверждения об утверждениях - то, с чем классические RDF-графы справляются крайне неловко.
Написан проект на C и Prolog. В качестве основной среды выполнения используется Trealla Prolog, доступ к SQLite и графической библиотеке Raylib организован через FFI с загрузкой разделяемых библиотек. Никакой экзотики - продуманная, хотя и нишевая инженерия.
Ключевые технические решения
- Хранилище, адресуемое по содержимому: файлы хешируются через SHA-256 и фиксируются атомарно вместе с метаданными графа. Дедупликация идёт автоматически - дублей не будет.
- Time-travel из коробки: каждое обновление порождает новую версию утверждения, связанную с предыдущей через replaces_id. История разматывается по цепочке - без лишних телодвижений.
- Графический интерфейс: встроенный просмотрщик на Raylib поддерживает предпросмотр изображений, строку запросов и поиск узлов. Для прототипа - неожиданно зрелое решение.
Почему это важно
Гиперреляционные графы - направление, которое набирает обороты в академической среде и постепенно просачивается в индустриальные решения. Системы вроде Wikidata уже давно упёрлись в ограничения классических триплетов и вынуждены изобретать обходные пути. kb-prolog предлагает другую отправную точку.
Да, это диссертационный прототип. Не продакшн-решение. Но именно такие проекты нередко становятся фундаментом для чего-то серьёзного - особенно когда исходники открыты под GPL v3 и любой может забрать идею и довести её до ума. Mateu положил на стол интересные карты. Что с ними сделает сообщество - покажет время.