Datalog 中的多态性与元模型中的继承
在数据库领域,Datalog 语言凭借其简单性、声明性,以及能将描述问题的“规则”与实现解决方案的引擎分离的特性,在众多实验和研究项目中得到了广泛应用。然而,随着数据模型的不断发展和复杂化,传统 Datalog 在处理一些问题时显得力不从心。本文将探讨如何通过引入继承和多态性来扩展 Datalog,以提高其在模型管理中的有效性和规则的可重用性。
1. 相关工作
早在 80 年代初,就有人提出将多态性、类型和继承等概念引入逻辑和基于规则的系统。近年来,许多方法借鉴了面向对象编程的理论和方法,提出了多种处理方法、类型、覆盖和多重继承的技术。
- Gulog :一种演绎式面向对象逻辑语言,可将其程序转换为带否定的 Datalog 程序。
- Datalogmeth :扩展了 Datalog,增加了类和方法,其程序也可转换为带否定的 Datalog 程序。
- SelfLog :一种模块化逻辑编程,具有非单调继承特性。在此基础上扩展的 Datalog 增加了继承,有明确的类优先级规则,可重写为带额外谓词的 Datalog 程序。
- Datalog++ :扩展了 Datalog,包含类、对象、签名、is - a 关系、方法和带覆盖的继承,其程序可重写为带否定的 Datalog 程序。
- f - logic :具有多态类型、类和子类,可区分结构继承和行为继承,并提供了三种处理行为继承覆盖的方法。
与上述方法不