2

我有一个 UML 概念图;我想将其表示为 DL 本体。UML 类被捕获为 DL 概念,其中关联是通过角色捕获的。一个重要的观点是 UML 类之间的多重性。一对一的多重性 (0..* - 0..1) 由功能对象属性捕获,并使 (0..1) 一侧强制,即 (0..* - 1) 引用谈论强制参与意味着单边的最大和最小重数为 1。

这是参考

在此处输入图像描述

类 C1 和 C2 之间的关联 A 在 DL 中通过我们强制断言的角色 A 形式化

在此处输入图像描述

为了表达每个给定 C1 实例的 C2 实例参与的多重性 ml..mu,我们使用断言

在此处输入图像描述

我只是无法理解 C2 强制参与断言是如何通过 C1 上的断言来表达的,最后一个断言是如何读取的?

4

1 回答 1

2

使用A a 作为属性名称有点不寻常,所以我将使用p代替。UML 图也没有表达属性的方向,这使得其余的讨论有点混乱。不过,可以从您提供的公理中收集到一些信息。

如果 UML 旨在表达:

  1. C 1的实例通过p与 C 2的至少 n l和大多数 n u实例相关联。
  2. C 1的至少 m l和大多数 m u实例通过p与 C 2的每个实例相关。

那么你可以使用 DL 公理:

C 1 ⊑ ≥n l pC 2
C 1 ⊑ ≤n u pC 2
C 2 ⊑ ≥m l p -1 .C 1
C 2 ⊑ ≥m u p -1 .C 1

那些说如果x 是一个 C 1 (C 2 ),那么 x 与适当数量的 C 2 (C 1 ) 实例相关联p ( p -1 )。现在,由于在 UML 中表达的关系只会关联两个类的实例,即没有其他类型的实例将通过属性p关联,那么您更有可能将p的域和范围声明为 C 1和C 2分别具有:

∃p ⊑ C 1
∃p -1 ⊑ C 2

然后使用上述公理的更简单版本:

C 1 ⊑ ≥n l p
C 1 ⊑ ≤n u p
C 2 ⊑ ≥m l p -1
C 2 ⊑ ≥m u p -1

要回答非常具体的问题:

只是无法理解 C2 强制参与断言是如何通过 C1 上的断言来表达的,最后一个断言是如何读取的?

问题中最后一个公理中的符号不​​寻常,我不确定到底应该是什么。我不确定这些小回旋曲应该是什么。它看起来像:

C 1 ⊑ ∃ p

尽管。如果是这样,它被读作

C 1是∃ p 的子类

这意味着

如果x是 C 1的实例,则x是 ∃ p 的实例

意思就是

如果x是 C 1的一个实例,则x是至少具有p值的事物类别的一个实例(即,至少有一个y使得p (x,y))。

在一阶逻辑中,您可以将其表示为:

∀x.(C 1 (x) → ∃yp(x,y))

于 2014-11-11T12:42:53.523 回答