本体和面向对象的区别(转)

转自http://blog.sina.com.cn/s/blog_4933654d01000c17.html

 

这次的答辩委员会中有一位德高望重的教授,他每次都会问研究本体的人这样一个问题“本体和面向对象有什么区别”。我仔细想了想,ms没什么蛮大区别,但是我深知这样回答会让我答辩挂掉,因此在做了详细的调查后将自己的高见和别人的拙见写在Blog上面,有备无患。   

    本体重在描述客观世界,希望对客观世界有个统一标准的描述,DC标准库就是很好的一个例子;面向对象只是一种设计方法,一种解决方法。

    虽然工程上确实借鉴了这个哲学术语,然而本体在工程上主要用在数据建模和知识库构建上。本体通常指的是概念,概念之间的关系以及个体对概念的所属关系,它通常用来表示术语(taxonomy),这种术语是数据库或者知识库存储,查询和处理的对象;面向对象设计是软件开发的方法学--它是用来开发软件的,不是用来表示数据或者知识的。使用OOP开发软件确实首先要面向对象建模,也构建了概念(class),概念之间的关系(比如基类和派生类),但是OOP更重要得是把建模转化成程序代码,并且要尽可能的构建灵活,各模块之间松散耦合的软家系统,我觉得这才是OOP的精髓。

    OOP的建模语言UML和本体语言OWL也许是同一个范畴的东西,可以明显看出UML的建模能力远远弱于OWL,因为UML只是对软件结构建模,而OWL却是一套基于逻辑的严格的知识表示语言,具有丰富的表达能力来表示客观世界的中复杂知识和数据结构。

    另一点不同之处是OOP没有严格的模型论语义,而基于描述逻辑的本体却有。这就意味着它可以自动检查语义一致性,进行自动推理发现隐含知识,查询回答和对查询结果进行解释。OOP作为一种设计方法学,显然不具有这么强大的能力。

posted @ 2013-03-24 11:38  simba工作室  阅读(837)  评论(0编辑  收藏  举报