Каква е разликата между 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
Не, не е, например това: ancestor(X,Y) :- parent(X,Y). в LogiQL се записва като ancestor(x, y) ‹- parent(x, y). преводът обаче е доста очевиден. - person Zef Hemel; 18.10.2013

Наистина, "академичната" версия на Datalog, използвана за изучаване на теорията на базите данни, е целенасочено ограничена. Всеки "индустриален" вариант на Datalog добавя свои собствени разширения за подпомагане на програмирането на реални приложения. В допълнение към изброените от Zef неща, LogiQL поддържа някои други функции

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

LogiQL е до голяма степен надмножество на Datalog. Първоначално той беше просто посочен вътрешно в LogicBlox като "Datalog". Подобно на други реализации на Datalog, имаше допълнения, уникални за вкуса на LogicBlox. В един момент езикът стана много по-обширен, с толкова много нови добавени функции, че беше решено вместо това да бъде преименуван на „LogiQL“. Но LogiQL все още е уникалният вкус на LogicBlox и надстройката на Datalog.

person lennartcl    schedule 17.10.2013