2013-10-17 1 views
4

La base de données LogicBlox est programmé en utilisant le langage de LogiQL, qui est selon leur site une sorte de variante de Datalog:Quelle est la différence entre Datalog et LogiQL?

Les applications sont écrites en utilisant la langue LogiQL, une version étendue de Datalog

Quelles sont exactement les différences entre Datalog et LogiQL?

Répondre

7

LogiQL est en effet une surcouche de Datalog, en ajoutant diverses fonctions, dont:

  • Support des transactions
  • Une base de données extensionnelle où les faits peuvent être dynamiquement insérés et retirés (ie l'ensemble des faits ne sont pas « statique «)
  • entités
  • agrégations
  • logique Delta pour mettre à jour la base de données extensionnelle
  • prédicats Pulse dont les faits ne sont conservés pendant toute la durée d'une transaction
  • Modules, pour le développement d'applications à grande échelle
  • soutien à l'apprentissage et l'optimisation machines

Il y a probablement plus que j'oublie. LogiQL est un sur-ensemble de Datalog.

+0

Est-il rétrocompatible? Comme, si j'ai le code Datalog, serait-ce acceptable LogiQL? – Nanne

+0

Non ce n'est pas, par exemple: ancêtre (X, Y): - parent (X, Y). dans LogiQL est écrit comme ancêtre (x, y) <- parent (x, y). la traduction est assez évidente cependant. –

2

A l'origine, il était simplement appelé en interne chez LogicBlox "Datalog". Tout comme les autres implémentations de Datalog, il y avait des ajouts uniques à la saveur LogicBlox. À un moment donné, le langage est devenu beaucoup plus étendu, avec tellement de nouvelles fonctionnalités ajoutées, qu'il a été décidé de le renommer en "LogiQL" à la place. Mais LogiQL est toujours la saveur unique et le sur-ensemble de Datalog de LogicBlox.

4

En effet, la version «académique» de Datalog utilisée pour étudier la théorie des bases de données est volontairement limitée. Chaque variante "industrielle" de Datalog ajoute ses propres extensions pour supporter la programmation de vraies applications. En plus des choses Zef énumérées, d'autres supports de caractéristiques sont de

  • types primitifs utiles tels que datetime, int, string - types qui ont nombre infini de valeurs
  • des opérations sur les types primitifs, par exemple fonctions datetime pour obtenir le temps maintenant, temps d'analyse, comparaisons numériques, fonctions numériques telles que l'addition ou la génération de nombres aléatoires, etc. Tout ce dont vous avez vraiment besoin pour construire de vraies applications, mais peut rendre la théorie plutôt désagréable si vous l'étudiez académiquement, et donc laissé hors de la version académique de Datalog
  • Possibilité de construire de nouvelles entités
  • Négation. Actuellement, LogiQL supporte la négation stratifiée globalement, ce qui signifie que si un prédicat A est défini en annulant le prédicat B, alors la définition du prédicat B ne peut pas, inversement, annuler le prédicat A.
Questions connexes