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

What is the difference between OWL and UML in the Software Engineering Process

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

我读了 this paper by Atkinson,它很好地概述了 OWL 和 UML 在语义和句法层面上的差异和等同性。

但是它没有提供明确的指示,在哪些用例中使用 OWL 可能更好,而不是 - 例如 - UML class 图。

可能是底层开发过程决定了采用的建模语言(例如,模型驱动 = 选择 UML,ontology-驱动 = 选择 OWL),但对我自己来说这个区别还不清楚吗?

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

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

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

实际上 OWL 在 UML 中作为配置文件可用。参见 OMG specfication。因此,您可以在 "one soup".

中将 UML 与 OWL 配置文件一起使用

让我们从定义开始。

Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering, that is intended to provide a standard way to visualize the design of a system. (Wikipedia)

UML 有很多图表,但是 classics 的 none 是为 ontology 建模而设计的。因此,研究人员为此目的创建了OWL。

The W3C Web Ontology Language (OWL) is a Semantic Web language designed to represent rich and complex knowledge about things, groups of things, and relations between things. (W3C)

如 Thomas Kilian 在另一个答案中所说:

OWL is available as profile in UML. See OMG specfication. So you can use UML with OWL profile in "one soup".

因此,OWL 可以成为软件工程过程中使用的一组 UML 图的一部分。 OWL 优于 classic UML 图的主要优点是当您必须使用本体设计系统时。 class 图的目的是表示 classes,而不是本体。如果您的系统不依赖于 ontology,请坚持使用 classic UML 图;你不需要 OWL。如果您的系统使用 ontology 并且您需要在图表上表示它,请使用 OWL.

OWL 用于描述一个领域,并且能够具体地,使用语义,指定一个领域的知识以及描述它的特殊性。以 Friend of a Friend ontology 为例。使用它,您可以描述人们之间的关系。

您可能会说您可以使用 UML 做同样的事情,您是对的。您可以使用 OWL 和 UML 指定属性、关系等。但是,您不能使用 UML 来推断领域知识。 OWL,作为一种语义 Web 语言,使用开放世界或封闭世界假设对域进行建模。基本上,您根据领域中描述的内容假设知识。然后,您可以使用特定指令使用规则来推断知识,或者只是查看您创建的谓词和语句。此外,您可以使用特定的查询语言(例如 SPARQL)来查询您的 ontology,就像您使用 SQL 查询数据库一样。

TL;DR:使用 UML 指定如何将特定领域转化为软件,使用 OWL 指定有关领域的知识,因为它比 UML 丰富得多。

综合答案

  • UML 是一种用于建模的(图形)语言
  • OWL 是 knowledge representation (KR) 在语义角度上使用的语言

首先,OWL目的不是建模。使用 KR 技术是软件工程领域的一种选择。它应该不同于任何软件工程过程。两种语言都有不同的用途。

当然,您可以[使用]OWL来描述[软件系统]的构造。但这种举措的兴趣主要在于自动推理您的软件构建过程,并且在单个项目的上下文中不会很有帮助。这只有在您的所有项目都完成后才会有效,以便产生结果 knowledge base (KB)。

详细解释

根据 W3C wiki section about OWL:

The W3C Web Ontology Language (OWL) is a Semantic Web language designed to represent rich and complex knowledge about things, groups of things, and relations between things. OWL is a computational logic-based language such that knowledge expressed in OWL can be exploited by computer programs, e.g., to verify the consistency of that knowledge or to make implicit knowledge explicit

应该对什么是建模语言进行一些辩论。例如,Wikipedia article on the topic 考虑广义,也可以涵盖 OWL。我在这里使用 建模 术语仅考虑软件工程 activity (这是您在问题中关注的那个)。

您可能需要建模来定义本体,就像您需要进行软件项目开发一样。但是这种 OWL 建模不会考虑软件工程元素,而是考虑项目的域数据。换句话说,在软件构建过程中使用 UML 旨在设置软件元素。使用 OWL,您不会关注这些元素,除非您尝试对软件构造进行自动推理。

除此之外,UML 和 OWL 之间存在关系。 W3C框架中的一个note by Walter W. Change讨论了这个问题。我会考虑两种不同的关系来总结这个问题。

用UML表示OWL知识

名为 ODM 的 OMG 规范(针对 Ontology 定义元模型)提供了用于定义本体的元模型。在本规范的框架中,引入了 UML 概要文件的使用,作为弥合两种语言之间差距的一种方式。在 ODM 1.1 规范中,第 8.4.2 节:

The goal of a UML profile from the ODM perspective is to provide a bridge between the UML and knowledge representation communities on a well-grounded, semantic basis, with a broader goal of relating software and logical approaches to representing information.

UML 概要文件的使用在an article. You might find such a profile in the ODM 1.0 specification resources 中作为非规范文档引入。根据这里的考虑,这个UML配置文件可能是一个建模本体的工具。

使用OWL/Semantic Web 技术来表示UML

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

早期 (2000) academic work provides a semantic RDF document modeling the UML elements (based on the OMG specification). This work preceded the draft works on the OWL W3C recommendation (2002).

将域 ontology 映射到 UML 模型的重要性和好处在于集成这两种建模技术提供的好处和质量。也就是说,如果已经有具有一定权限的领域本体,这些知识库可以帮助创建 UML class 图,例如构建它的描述逻辑提供的公理化保证,除了启用 UML推论的力量 这种形式主义提供的转换旨在证明 ontology 的重用有助于减少 class 图中的歧义。

为了修改 UML 的参考文献和 OWL 比较,有一篇来自 Jesper Zedlitz Konzeptuelle Modellierung mit UML und OWL – Untersuchung der Gemeinsamkeiten und Unterschiede mit Hilfe von Modelltransformationen 的博士论文(德文) (使用 UML 和 OWL 进行概念建模 - 使用模型转换探索相同点和不同点)

在这篇论文中研究了是否以及在何种程度上可以在两种建模语言之间进行转换。在结论(第 222 页)中指出 OWL 有可能进行更复杂的建模,因此并不总是可以从 OWL 转换为 UML。

实际上,根据我之前在本体方面的工作,我看到使用 ontology 工具(如 Protege)非常有用,并且在描述实体之间的关系方面非常有用,并且使用像 OLGA 这样的工具可以帮助你进行映射这 ontology 到许多面向对象的语言。

是的,我们没有像 UML 这样使用图形表示来设计我们的模型的能力,但它提供了广泛的选项来描述您的模型。