OWL 不同类的相同对象属性
Posted
技术标签:
【中文标题】OWL 不同类的相同对象属性【英文标题】:OWL Same Object Property for different Classes 【发布时间】:2018-11-03 20:35:01 【问题描述】:我正在尝试将 UML 类图转换为 Ontoloy,但我有一个问题。
假设我有以下设置:
rel1
ClassA ------> ClassB
rel1
ClassC ------> ClassD
对于第一种情况,我将关系“rel1”转换为对象属性,如下所示:
_x:rel1 rdf:type owl:ObjectProperty ;
rdfs:domain _x:ClassA ;
rdfs:range _x:ClassB .
但我不知道如何进行第二个。我想要的是: rel1 具有域-范围对 (ClassA,ClassB) OR (ClassC, ClassD)。首先我考虑使用联合,但它没有以适当的方式对其建模,因为像 (ClassA, ClassD) 或 (ClassC, ClassB) 这样的组合是可能的。
希望有人能帮忙。
谢谢你, 约翰
【问题讨论】:
【参考方案1】:您的rel1
关联的意思是,它具有ClassA
和ClassC
的联合域,其范围是ClassB
和ClassD
的联合域,您可以按如下方式指定:
ObjectProperty: rel1
Domain: ClassA or ClassC
Range: ClassB or ClassD
为属性指定域和范围限制的主要好处是,如果通过该属性链接了 2 个个体,则推理器可以推断出个体的类型。如上所述指定域和范围将不允许这样做,因为ClassA or ClassC
是一个匿名类,并且推理器通常只对命名类而不是匿名类进行推理。要解决此问题,您可以执行以下操作:
Class: Rel1Domain
EquivalentTo: ClassA or ClassC
Class: Rel1Range
EquivalentTo: ClassB or ClassD
ObjectProperty: rel1
Domain: Rel1Domain
Range: Rel1Range
【讨论】:
好吧,我忘了提到的是,关系应该是(ClassA,ClassB)或(ClassC,ClassD)。我不希望像 (ClassA, ClassD) 这样的组合成为可能。所以我不知道工会是否能做到这一点。 那么你真的有2个不同的属性,它应该被称为不同的名字。 IE。rel1AB
和 rel1CD
以及您需要的域和范围。
问题是,我应该根据 UML 类图来做。而且我不允许更改它。但如果没有解决方法,也许我必须这样做。顺便说一句,我使用了你在论文中描述的许多 UML 到 OWL 规则,所以谢谢你。这真的很有帮助:)
你可以设置局部约束来排除不需要的对;即,添加一个公理,说明 ClassA 是 forall rel1 ClassB 的子类。这意味着任何在 ClassA 的个人和 ClassD 的个人之间使用 rel1 都会失败(假设 ClassB 和 ClassD 是不相交的)。否则,您必须放弃通用范围并指定每次使用时您希望成为 rel1 的填充物。
@John 当 UML 中不同类之间有关联 rel1
时,rel1
的实际限定名是不同的。 IE。它是A::rel1
与C::rel1
。因此,严格来说,它们是不同的关联。但是,如果您按照我的建议将域和范围收集在一起,您会发现各种建模启发式违规行为。我将在my dissertation 的第 7 章讨论这个问题。以上是关于OWL 不同类的相同对象属性的主要内容,如果未能解决你的问题,请参考以下文章