本体推理的局限:
主要实现了基于本体概念描述的推理,无法支持规则性知识的推理。
用户无法定义自己的推理过程。
引入规则推理:
可以根据特定的场景定制规则,以实现用户自定义的推理过程。
Datalog语言可以结合本体推理和规则推理。
Datalog是面向知识库和数据库设计的逻辑语言,表达能力与OWL相当,支持递归,同时用于撰写规则,实现规则推理。
Datalog基本语法:
组成:
原子(Atom):p(t1,t2,...tn),其中p是谓词,n是目数,ti是项(变量或者常量),如has_child(X,Y)
规则(Rule):H:-B1,B2...Bm;由原子构成,其中H是头部原子, B1,B2...Bm是体部原子,如has_child(X,Y):-has_son(X,Y)
事实(Fact):F(c1,c2,c3….cn):- 没有体部且没有变量的规则,如:has_child(Alice,Bob):-
Datalog程序是规则的集合:
程序:has_child(X,Y):-has_son(X,Y).
has_child(Alice,Bob):-
Datalog推理过程样例:
规则集:
1path(x,y):-edge(x,y).
2path(x,y):-path(x,z),path(z,y).
事实集:
1edge(a,b).
2edge(b,c).
结果:
通过1可以得到path(a,b)即ab有path
通过2可以得到path(b,c)即bc有path
通过结果1,2得到path(a,c).即ac有边
支持Datalog推理工具举例:
KAON2(Java)、RDFox(Python)
基于产生式规则的推理:
产生式规则推理最早出现在专家系统中。
产生式系统:
一种前向推理系统,可以按照一定机制执行规则从而达到某些目标,与一阶逻辑类似,也有区别。应用方向:自动规划、专家系统。
产生式系统的组成:
事实集合;产生式/规则集合;推理引擎
事实集/运行内存(Working Memory,WM):事实的集合,用于存储当前系统中所有的事实。
事实(Working Memory Element,WME):
描述对象:形如(type attr1:val1 attr2:val2...attrn:valn)其中type,attr,val均为原子(常量),如student name:Alice age:24
描述关系(Refication):如(basicFact relation:olderThan firstArg:John secondArg:Alice)
简称(olderThan John Alice)
产生式集合(Production Memory,PM):
产生式规则的集合
产生式:IF conditions THEN actions,其中,conditions是条件组成的集合,称为LHS;actions是由动作组成的序列,称为RHS
LHS:
条件的集合,各个条件之间是且的关系。当LHS所有条件均被满足则该规则触发。
每个条件形如(type attr1:spec1 att2:sppec2...attrn:specn),其中spec表示对attr的约束,形式可以采用以下中的一种:
原子:如Alice(Person name:Alice);
变量,如x(斜体的)(person name:x);
表达式:如n+4 (person age:[n+4])
布尔测试:如{>10} (person age:{>10});
约束的与或非操作。
RHS:
动作的序列,执行时依次执行,动作的种类如下:
ADD pattern:向WM中加入形如pattern的WME
REMOVE i:从WM中移除当前规则第i个条件匹配的WME。
MODIFY i(attr spec):对于当前规则第i个条件匹配的WME将其对应于attr属性的值改为spec。
产生式系统举例:
IF(Student name:x)
Then ADD(Person name:x)
也可以写成(Student name:x)=>ADD(person name :x)如果有一个学生名为x那么向事实集中加入一个事实,表示有一个名为x的人。
产生式系统的组成:
产生式系统=事实集+产生式集合+推理引擎
推理引擎:控制系统的执行:
1.模式匹配:用规则的条件部分匹配事实集中的事实,整个LHS都被满足的规则被处罚,并加入议程(agenda)。
2.解决冲突:按照一定的策略从被触发的多条规则中选择一条。
3.执行动作:执行被选择出来的规则的RHS,从而对WM进行一定的操作。
产生式规则中常用的算法:
RETE算法