我正在尝试将UML类图转换为Ontoloy,我有一个问题。
假设我有以下设置:
rel1
ClassA ------> ClassB
rel1
ClassC ------> ClassD
对于第一种情况,我将Relation“rel1”转换为Object Property,如下所示:
_x:rel1 rdf:type owl:ObjectProperty ;
rdfs:domain _x:ClassA ;
rdfs:range _x:ClassB .
但我不知道如何去做第二个。我想要的是: rel1具有域范围对(ClassA,ClassB)OR(ClassC,ClassD)。首先我考虑使用联合,但它没有以适当的方式对其进行建模,因为像(ClassA,ClassD)或(ClassC,ClassB)这样的组合是可能的。
我希望有人可以提供帮助。
谢谢你, 约翰
答案 0 :(得分:2)
您的rel1
协会所说的内容是ClassA
和ClassC
的联盟,其范围为ClassB
和ClassD
的联合,您可以指定如下:
ObjectProperty: rel1
Domain: ClassA or ClassC
Range: ClassB or ClassD
为属性指定域和范围限制的主要好处是,如果通过该属性链接2个人,则推理器可以推断出个人的类型。如上所述指定域和范围将不允许这样做,因为ClassA or ClassC
是一个匿名类,而reasoners通常只对命名类进行推断,而不是匿名类。要解决这个问题,您可以执行以下操作:
Class: Rel1Domain
EquivalentTo: ClassA or ClassC
Class: Rel1Range
EquivalentTo: ClassB or ClassD
ObjectProperty: rel1
Domain: Rel1Domain
Range: Rel1Range