使 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
,其中 :3
是 AtomicNumber
class 的一个实例。
好的,现在考虑我有数据 属性 hasElementName
并且我也想要它的情况,这样当我有三元组 :Lithium :hasElementName "Lithium"
时,三元组 :Lithium :hasElementProperty "Lithium"
被推断。我现在设置它的方式是不可能的,因为 hasElementName
是数据 属性,因此不能是对象 属性 [=] 的子 属性 17=]。
我曾尝试使用文字具体化(参见 Literal Reification)并取得成功,但我觉得可能有更好的方法来做到这一点,因为文字具体化的目的是让人们可以使用文字作为对象,而这不是我需要的做。
任何想法将不胜感激。
谢谢
这在 OWL 2 DL 中是不可能的,仅在 OWL 2 FULL 中是不可能的 - 这意味着推理机和工具可能会抱怨你的 ontology,或者你可能会得到意想不到的结果。
如果您的应用程序需要在同一 属性 下收集所有值,我会继续使用文字具体化 - 似乎是实现所需结果的最简单方法。
假设我有 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
,其中 :3
是 AtomicNumber
class 的一个实例。
好的,现在考虑我有数据 属性 hasElementName
并且我也想要它的情况,这样当我有三元组 :Lithium :hasElementName "Lithium"
时,三元组 :Lithium :hasElementProperty "Lithium"
被推断。我现在设置它的方式是不可能的,因为 hasElementName
是数据 属性,因此不能是对象 属性 [=] 的子 属性 17=]。
我曾尝试使用文字具体化(参见 Literal Reification)并取得成功,但我觉得可能有更好的方法来做到这一点,因为文字具体化的目的是让人们可以使用文字作为对象,而这不是我需要的做。
任何想法将不胜感激。
谢谢
这在 OWL 2 DL 中是不可能的,仅在 OWL 2 FULL 中是不可能的 - 这意味着推理机和工具可能会抱怨你的 ontology,或者你可能会得到意想不到的结果。
如果您的应用程序需要在同一 属性 下收集所有值,我会继续使用文字具体化 - 似乎是实现所需结果的最简单方法。