关于这个问题,我看到两套说法:
第一种说法来自W3China论坛的wolfel :
工程上确实借鉴了本体这个哲学术语。本体在工程上主要用在数据建模和知识库构建上。本体通常指的是概念,概念之间的关系以及个体对概念的所属关系,它通常用来表示术语(taxonomy),这种术语是数据库或者知识库存储,查询和处理的对象。
面向对象设计是软件开发的方法学--它是用来开发软件的,不是用来表示数据或者知识的。如果使用OOP开发软件,首先要面向对象建模,这也就构建了概念(class)和概念之间的关系(比如基类和派生类)。但是,OOP更重要的是把模型转化成程序代码,并且要尽可能的使得构建过程变得灵活,使软件的各模块之间松散耦合。我觉得这才是OOP的精髓。
OOP的建模语言UML和本体语言OWL也许是同一个范畴的技术,但可以明显看出UML的建模能力远远弱于OWL。 UML只是对软件结构建模,而OWL却是一套基于逻辑的严格的知识表示语言,具有丰富的表达能力。OWL能够表示客观世界的中复杂知识,而不像UML那样仅仅表示软件系统中概念和数据结构。
另一点不同之处是OOP没有严格的模型论语义,而基于描述逻辑的本体却有。这就意味着它可以自动检查语义一致性,进行自动推理发现隐含知识,查询回答和对查询结果进行解释。OOP作为一种设计方法学,显然不具有这么强大的能力,OOP在应用领域里也不需要具备这种能力。
==============&#