3

我正在尝试将 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)或(ClassC,ClassD)。首先我考虑使用联合,但它没有以适当的方式对其进行建模,因为像 (ClassA, ClassD) 或 (ClassC, ClassB) 这样的组合是可能的。

我希望有人能帮忙。

谢谢你,约翰

4

1 回答 1

2

您的rel1协会所说的是,它的域是并集,范围是和的并集ClassA,您可以按如下方式指定:ClassCClassBClassD

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    
于 2018-05-25T06:15:14.173 回答