OWL和UML在软件工程过程中有什么区别?

16

目前我正在尝试弄清楚如何在软件工程过程中使用OWL和UML来描述感兴趣的领域。

我阅读了Atkinson的这篇文章,它很好地概述了OWL和UML在语义和语法层面上的差异和相等之处。

然而,它并没有提供一个清晰的指示,在哪些用例中使用OWL可能更好,而不是例如UML类图。

可能是潜在的开发过程决定了采取何种建模语言(例如,面向模型驱动=采用UML,面向本体论驱动=采用OWL),但对于我自己来说,这种差异仍然不清楚。

在两种语言中,我都可以建立术语,作为本体工程师,我可以从中重复使用以推断出新的知识。作为软件工程师,我使用这个术语来构建一个(单一的)系统。

那么,OWL和UML之间的区别只是研究领域吗?还是我可以使用OWL来描述我的(单一的)软件系统的构建?

此外,这引发了一个问题,选择哪种建模语言的决定是否仅由我试图实现的目标驱动?

7个回答

13

一个综合的答案

  • UML是一种用于建模的(图形)语言
  • OWL是一种用于语义视角下的知识表示(KR)的语言

首先,OWL的目的不是建模。在软件工程领域中,使用KR技术是一种选择。它应该与任何软件工程过程区分开来。这两种语言有不同的目的。

当然,你可以使用OWL来描述[软件系统]的构建。但这样做的兴趣主要在于自动推理你的软件构建过程,并且对于单个项目的情况并没有太大帮助。只有在为所有项目做这样的事情以便拥有连贯的知识库(KB)时,才会有效。

详细解释

根据W3C关于OWL的维基部分

W3C Web本体语言(OWL)是一种语义Web语言,旨在表示有关事物、事物组和事物之间关系的丰富而复杂的知识。OWL是一种基于计算逻辑的语言,因此可以利用以OWL表达的知识进行计算机程序开发,例如验证该知识的一致性或使隐含的知识变得显式。关于建模语言的定义存在争议,但维基百科文章认为建模语言的范围较广,也包括OWL。在此,我仅考虑“建模”术语指软件工程活动(这是您在问题中关注的内容)。您可能需要建模来定义本体论,就像开发软件项目时所需的一样。但是,这种OWL建模不会考虑软件工程元素,而是考虑您项目的领域数据。换句话说,在软件构建过程中使用UML旨在设置软件元素。使用OWL时,除非您正在尝试自动推理软件构建,否则不会关注这些元素。
Besides this, UML and OWL have a relationship. Walter W. Chang's note in the W3C discusses this question. The question can be summarized considering two distinct relations.
One of them is using UML to represent OWL knowledge. An OMG specification called ODM (for Ontology Definition Metamodel) provides a metamodel for defining ontologies. In section 8.4.2 of the ODM 1.1 specification, the use of a UML profile is introduced as a way to bridge the gap between both languages. Its goal is to provide a semantic basis for the UML and knowledge representation communities and relate software and logical approaches to representing information.

介绍了UML配置文件的使用,一篇文章中有相关内容。您可以在ODM 1.0规范资源中找到这样的配置文件,作为非规范文件。根据所考虑的内容,这个UML配置文件可能是建模本体论的工具。

使用OWL /语义Web技术表示UML

RDF是用于编写OWL本体论的基础格式。

早期(2000)的学术工作提供了一个语义RDF文档来建模UML元素(基于OMG规范)。这项工作先于OWL W3C推荐草案(2002年)。


6

实际上,OWL在UML中作为配置文件可用。请参见OMG规范。因此,您可以在“一个汤”中使用带有OWL配置文件的UML。


谢谢你的回答 - 那是非常有用的信息!好的,我可以混合它们。然而,为什么我应该在SE过程中混合这两种语言仍然不清楚?有什么好处吗?我认为将它们混合在“一锅汤”中,结果会变得非常复杂... - rzo1
不,你可以在OWL中描述高层次的内容,必要时可以转换到UML。 - qwerty_so
1
我猜你的核心问题与“我能用法语说歌德的话吗”或“我能用德语说卢梭的话吗”是一样的。 歌德曾经说过:“他们(法国人)把一切都翻译成自己的语言,从那时起,它就有了完全不同的意义”。 - qwerty_so

4
OWL被用于描述一个领域,并且使用语义学的方法来具体说明该领域的知识以及描述其特定性。例如,可以使用Friend of a Friend本体论来描述人们如何相互关联。
你可能会说你可以使用UML做同样的事情,这是正确的。你可以使用OWL和UML指定属性、关系等等。然而,你不能使用UML推断领域知识。OWL作为一种语义Web语言,使用开放或封闭的世界假设来建模一个领域。基本上,你根据领域中所描述的内容假设知识。然后,你可以使用规则来推断知识,或者只需查看你创建的谓词和语句即可。此外,你可以使用特定的查询语言,如SPARQL,来查询本体论,就像使用SQL查询数据库一样。
简而言之:使用UML,你可以指定如何将特定领域转换为软件;使用OWL,你可以指定有关该领域的知识,因为它比UML更加丰富。

4
让我们从定义开始。
统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种标准的方式来可视化系统的设计。 (维基百科)
UML有许多图表,但没有一个经典的图表是为本体论建模而设计的。因此,研究人员创建了OWL以达到这个目的。
W3C Web本体语言(OWL)是一种语义Web语言,旨在表示关于事物、事物组和事物之间关系的丰富和复杂的知识。 (W3C)
正如Thomas Kilian在另一个答案中所说:
OWL作为UML的配置文件可用。请参阅OMG规范。因此,您可以在“一个汤”中使用带有OWL配置文件的UML。
因此,OWL可以成为在软件工程过程中使用的UML图集合的一部分。 OWL相对于经典的UML图的主要优点是,当您必须使用本体论设计系统时。类图的目的是表示类,而不是本体论。如果您的系统不依赖于本体论,请坚持使用经典的UML图; 您不需要OWL。如果您的系统使用本体论并且需要在图表上表示它,请使用OWL。

4
为了修改UML和OWL比较的参考,可以参考Jesper Zedlitz的博士论文(德语),题目为“使用模型转换探索UML和OWL之间的相似性和差异”(Conceptual Modeling with UML and OWL - Exploring the Similarities and Differences Using Model Transformations),链接如下:https://macau.uni-kiel.de/receive/dissertation_diss_00012618
该论文研究了是否以及在何种程度上可以在这两种建模语言之间进行转换。结论(第222页)指出,OWL具有更复杂的建模可能性,因此并非总是能够从OWL转换到UML。

1
实际上,从我之前在本体论方面的工作来看,使用像Protege这样的本体论工具非常有帮助,可以丰富地描述实体之间的关系,并使用像OLGA这样的工具将本体映射到许多面向对象的语言中。
是的,我们没有使用图形表示来设计我们的模型,如UML,但它提供了广泛的选项来描述您的模型。

-1

将领域本体映射到UML模型的重要性和好处在于整合这两种建模技术提供的优势和质量。也就是说,如果已经存在某个特定级别的领域本体知识库,则这些知识库可以帮助创建UML类图,例如由描述逻辑提供的公理保证,除了启用UML推理能力外,还能提供此形式化方法所提供的。通过转换,旨在显示本体重用可以帮助减少类图中的歧义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接