关于这个问题,我看到两套说法:
第一种说法来自W3China论坛的wolfel :
工程上确实借鉴了本体这个哲学术语。本体在工程上主要用在数据建模和知识库构建上。本体通常指的是概念,概念之间的关系以及个体对概念的所属关系,它通常用来表示术语(taxonomy),这种术语是数据库或者知识库存储,查询和处理的对象。
面向对象设计是软件开发的方法学--它是用来开发软件的,不是用来表示数据或者知识的。如果使用OOP开发软件,首先要面向对象建模,这也就构建了概念(class)和概念之间的关系(比如基类和派生类)。但是,OOP更重要的是把模型转化成程序代码,并且要尽可能的使得构建过程变得灵活,使软件的各模块之间松散耦合。我觉得这才是OOP的精髓。
OOP的建模语言UML和本体语言OWL也许是同一个范畴的技术,但可以明显看出UML的建模能力远远弱于OWL。 UML只是对软件结构建模,而OWL却是一套基于逻辑的严格的知识表示语言,具有丰富的表达能力。OWL能够表示客观世界的中复杂知识,而不像UML那样仅仅表示软件系统中概念和数据结构。
另一点不同之处是OOP没有严格的模型论语义,而基于描述逻辑的本体却有。这就意味着它可以自动检查语义一致性,进行自动推理发现隐含知识,查询回答和对查询结果进行解释。OOP作为一种设计方法学,显然不具有这么强大的能力,OOP在应用领域里也不需要具备这种能力。
=====================================================================================
另外一种说法[来自]冯志勇,李文杰,李晓红.本体论工程及其应用.清华大学出版社.2007
本体的开发方法和对象层次的开发方法学在粗粒度上是相似的。但是在细粒度上,本体关注于声明方面;面向对象集中于性能相关的方面。因此两者的本质区别在于本体研究利用声明表示,而面向对象模式主要研究固有的程序。在面向对象模式中,类的意思、类间的关系以及方法都嵌入程序中且是不明确的;而在本体模式中,对声明的描述大多保持其形式化和清晰化。
==================================================================================
11/05/11 补记
W3C内部也有讨论:
Ontology Driven Architectures and Potential Uses of the Semantic Web in Systems and Software Engineering http://www.w3.org/2001/sw/BestPractices/SE/ODA/
A Semantic Web Primer for Object-Oriented Software Developers
本文探讨了本体与面向对象编程(OOP)的区别。一方面,本体关注于概念及概念间关系的声明式表述,适用于知识库构建;另一方面,OOP侧重于实现软件模块的灵活性和松耦合。此外,文章还比较了本体语言OWL与建模语言UML的不同。

2万+

被折叠的 条评论
为什么被折叠?



