5

LogicBlox 数据库是使用 LogiQL 语言编程的,根据他们的网站,这是 Datalog 的某种变体:

应用程序是使用 LogiQL 语言编写的,它是 Datalog 的扩展版本

Datalog 和 LogiQL 之间究竟有什么区别?

4

3 回答 3

7

LogiQL 确实是 Datalog 的超集,添加了各种功能,包括:

  • 交易支持
  • 可以动态插入和删除事实的扩展数据库(即事实集不是“静态的”)
  • 实体
  • 聚合
  • 更新扩展数据库的增量逻辑
  • 脉冲谓词,其事实仅在事务的生命周期内保留
  • 模块,用于大规模应用程序开发
  • 支持机器学习和优化

可能还有更多我忘记了。

于 2013-10-17T09:19:03.687 回答
4

事实上,用于研究数据库理论的“学术”版本的 Datalog 是有意限制的。Datalog 的每个“工业”变体都添加了自己的扩展来支持编程实际应用程序。除了 Zef 列出的内容之外,LogiQL 支持的其他一些功能包括

  • 有用的原始类型,例如 datetime、int、string - 具有无限数量值的类型
  • 对原始类型的操作,例如获取时间的日期时间函数、解析时间、数字比较、数字函数(例如加法或生成随机数等)。构建实际应用程序真正需要的所有东西,但会使理论变得相当讨厌如果您在学术上研究过它,因此被排除在 Datalog 的学术版之外
  • 构建新实体的能力
  • 否定。目前 LogiQL 支持全局分层否定,这意味着如果谓词 A 是通过对谓词 B 的否定来定义的,那么谓词 B 的定义也不能传递地对谓词 A 进行否定。
于 2013-10-17T16:19:06.807 回答
2

LogiQL 在很大程度上是 Datalog 的超集。最初它在 LogicBlox 内部简称为“Datalog”。与 Datalog 的其他实现非常相似,LogicBlox 风格也添加了一些独特的功能。在某些时候,该语言变得更加广泛,具有如此多的新特性,因此决定将其重命名为“LogiQL”。但 LogiQL 仍然是 LogicBlox 的独特风格和 Datalog 的超集。

于 2013-10-17T14:21:46.307 回答