以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  对规则引擎和推理引擎的理解  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=123950)


--  作者:scutpalmer
--  发布时间:4/1/2012 4:32:00 PM

--  对规则引擎和推理引擎的理解
菜鸟继续求赐教!
请各位达人指正本人如下的理解是否有误:

规则引擎也就是基于规则的推理引擎,这里规则等价于程序语言中的if-then语句。我的理解相当于将程序中if-then语句表示的应用逻辑从程序中解耦分离出来,以形式化的规则来定义,然后由规则引擎来执行。这样可以通过改变规则来灵活的改变业务逻辑,而不需要改变程序本身,具有更好的应用可维护性。同时基于规则引擎来执行规则也可以获得更好的效率;
基于规则的推理引擎需要和程序一起来实现应用逻辑;
举例来说,成绩大于60分则考试通过,规则对应为:if A.score > 60 then A.passed=true.
若要对全班的所有同学进行判断,则需要通过编写程序构造循环,分别对每个同学的实例来调用规则引擎执行该规则,完成全班同学的判断;
所以规则引擎实际上不会有太多的智能性;

而基于本体的推理引擎即推理机,在执行时需同时加载本体和规则。类比编程,本体相当于以新的方式来定义类和对象这些数据结构,其特点是以少的语句来构建知识库并蕴含较多的信息量,这也是智能性的基础。规则则相当于应用逻辑,因为本体的智能性,和直接写程序对比,形式上相对简单的规则语句描述即可实现比较复杂的逻辑。
同样是上述的例子,规则同样是:if A.score > 60 then A.passed=true.
加载本体之后,推理引擎会自动对所有同学实例执行该规则,无需再编写另外的循环程序来完成对同学实例的逐一判断;
所以基于本体的推理引擎具有较强的智能性;


--  作者:scutpalmer
--  发布时间:4/6/2012 8:49:00 AM

--  
有没有达人能指点迷津哦
--  作者:zouyuanrenren
--  发布时间:5/17/2012 1:27:00 AM

--  
你的理解有所偏差。
首先你要了解,你所说的两个都是很大的概念,而且两者之间不是相互独立的。规则引擎是推理引擎的一种。规则引擎完全也可以看作是推理机。规则的定义有很多种,本体的定义也有很多种。有些本体语言的推理也是可以通过规则来实现的。

就你举的例子而言,规则引擎不需要你所说的循环构造。你的那条规则可以写作
If
hasScore(A, s);
s>60
then
passed(A,true);
retract (passed(A,false));
其中A和s都可以是变量。
这条规则的意思就是说,当变量A和变量s间存在hasScore关系,且s的值大于60时,增加A和true之间的passed关系,并取消A和false之间的passed关系。

既然A是变量,那规则引擎就可以遍历所有的学生,本身不需要额外的程序代码的支持。


--  作者:海豚_128
--  发布时间:12/25/2012 1:51:00 PM

--  
想补充几句:规则引擎是通过在本体知识库中外部或内部的加if-then霍恩逻辑实现推理的方法。而描述逻辑的推理引擎比如pellet等是通过描述逻辑中的tableau算法实现的推理过程。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,546.875ms