В чем разница между Datalog и LogiQL?

База данных LogicBlox запрограммирована с использованием языка LogiQL, который, согласно их сайту, является разновидностью Datalog:

Приложения пишутся на языке LogiQL, расширенной версии Datalog.

В чем именно разница между Datalog и LogiQL?


person Nanne    schedule 17.10.2013    source источник


Ответы (3)


LogiQL действительно является расширенным набором Datalog, добавляющим различные функции, в том числе:

  • Сопровождение сделки
  • Расширенная база данных, в которую можно динамически вставлять и удалять факты (т. Е. Набор фактов не является «статическим»)
  • Сущности
  • Агрегации
  • Дельта-логика для обновления расширенной базы данных
  • Импульсные предикаты, факты которых хранятся только в течение срока действия транзакции.
  • Модули для крупномасштабной разработки приложений
  • Поддержка машинного обучения и оптимизации

Наверное, есть еще что-то, что я забыл.

person Zef Hemel    schedule 17.10.2013
comment
Это обратно совместимо? Например, если у меня есть код Datalog, будет ли он приемлем для LogiQL? - person Nanne; 17.10.2013
comment
Нет, это не так, например: предок (X, Y): - родитель (X, Y). в LogiQL записывается как предок (x, y) ‹- родитель (x, y). хотя перевод вполне очевиден. - person Zef Hemel; 18.10.2013

Действительно, «академическая» версия Datalog, используемая для изучения теории баз данных, намеренно ограничена. Каждый «промышленный» вариант Datalog добавляет свои собственные расширения для поддержки программирования реальных приложений. В дополнение к тому, что перечислил Zef, LogiQL поддерживает некоторые другие функции:

  • Полезные примитивные типы, такие как datetime, int, string — типы с бесконечным числом значений.
  • Операции над примитивными типами, например. функции datetime для получения текущего времени, анализа времени, числовых сравнений, числовых функций, таких как сложение или генерация случайных чисел и т. д. Все, что вам действительно нужно для создания реальных приложений, но может сделать теорию довольно неприятной, если вы изучали ее академически, и, таким образом, исключен из академической версии Datalog.
  • Возможность создания новых объектов
  • Отрицание. В настоящее время LogiQL поддерживает глобально стратифицированное отрицание, то есть если предикат A определяется путем отрицания предиката B, то определение предиката B также не может транзитивно отрицать предикат A.
person Shan Shan Huang    schedule 17.10.2013

LogiQL во многом является расширенным набором Datalog. Первоначально внутри LogicBlox он назывался просто «Журнал данных». Как и в других реализациях Datalog, в LogicBlox были добавлены уникальные дополнения. В какой-то момент язык стал намного обширнее, с таким количеством новых добавленных функций, что вместо этого было решено переименовать его в «LogiQL». Но LogiQL по-прежнему является уникальной разновидностью LogicBlox и расширенным набором Datalog.

person lennartcl    schedule 17.10.2013