Horn 子句是从句(字面量的分离),最多有一个正数,即未否定的字面量。最多包含一个肯定(非否定)字面量的子句称为 Horn 子句。
演绎数据库:
一种可以根据存储在数据库中的明确定义的规则集得出结论的数据库类型。 RDBMS 和逻辑编程结合使用。演绎数据库设计是在称为 Datalog 的纯声明式编程语言的帮助下完成的。
喇叭条款的类型:
- 明确条款/严格喇叭条款 –
它只有一个正字面量。 - 单位条款——
没有否定字面量的定语从句。 - 目标条款——
Horn 子句没有正面字面量。
在 Datalog 中,规则表示为一种称为 Horn 子句的限制形式的子句,其中一个子句最多可以包含一个正字面量。
一个公式可以有以下量词:
- 通用量词 –
可以理解为——“对于所有x,P(x)成立”,意思是P(x)对宇宙中的每一个物体x都成立。例如,所有卡车都有轮子。 - 存在量词——
可以理解为——“存在一个x使得P(x)”,意思是P(x)对宇宙中至少一个对象x成立。例如,有人关心你。
喇叭条款的形式:
-
NOT(P1) OR NOT(P2) OR ... OR NOT(Pn) OR Q
-
NOT(P1) OR NOT(P2) OR ... OR NOT (Pn)
喇叭条款的转换:
(1) 中的 Horn 子句可以转化为子句——
P1 AND P2 AND ... AND Pn → Q
按照以下规则写入 Datalog
Q :- P1, P2, ..., Pn
因此,上述数据记录规则是一个 Horn 子句。
如果谓词 P1 AND P2 AND … AND Pn,对于与其变量参数的特定绑定都为真,则 Q 也为真,因此可以推断。
(2) 中的 Horn 子句可以转化为——
P1 AND P2 AND ... AND Pn →
在Datalog中写入如下:
P1, P2, ..., Pn
上面的Datalog表达式可以被视为完整性约束,其中所有谓词必须为真才能满足查询。
Datalog 中的查询由两个组件组成:
- Datalog 程序,它是一组有限的规则。
- 字面量P(X1, X2, X3, … Xn),其中每个 X 是变量或常量。