使 OWL 数据和对象属性成为相同 属性 的子属性

Making OWL data and object properties sub-properties of the same property

假设我有 classes:

> Element
> ElementProperty

elementProperty 的子class是:

> AtomicNumber
> AtomicMass

还要考虑以下对象属性及其域和范围:

> hasElementProperty
  Domain:Element
  Range:ElementProperty

其中 hasElementProperty 具有以下子属性:

> hasAtomicNumber
  Domain:Element
  Range:AtomicNumber
> hasAtomicMass
  Domain:Element
  Range:AtomicMass

所以当我说 :Lithium :hasAtomicNumber :3 时,将推断出三元组 :Lithium :hasElementProperty :3,其中 :3AtomicNumber class 的一个实例。

好的,现在考虑我有数据 属性 hasElementName 并且我也想要它的情况,这样当我有三元组 :Lithium :hasElementName "Lithium" 时,三元组 :Lithium :hasElementProperty "Lithium"被推断。我现在设置它的方式是不可能的,因为 hasElementName 是数据 属性,因此不能是对象 属性 [=] 的子 属性 17=]。 我曾尝试使用文字具体化(参见 Literal Reification)并取得成功,但我觉得可能有更好的方法来做到这一点,因为文字具体化的目的是让人们可以使用文字作为对象,而这不是我需要的做。 任何想法将不胜感激。

谢谢

这在 OWL 2 DL 中是不可能的,仅在 OWL 2 FULL 中是不可能的 - 这意味着推理机和工具可能会抱怨你的 ontology,或者你可能会得到意想不到的结果。

如果您的应用程序需要在同一 属性 下收集所有值,我会继续使用文字具体化 - 似乎是实现所需结果的最简单方法。