OWL中的子组和超组(类/子类)关系

时间:2016-04-05 20:32:19

标签: schema rdf owl ontology rdfs

我需要一些关于OWL语法的帮助。我有一个名为“人物”的合成人口类。 Person包含填充信息,PersonWithinAdminRegion是另一个类表示person类的子组。例如' Person'课程包含有关美国所有人的信息。 FloridaPerson或MiamiPerson可以作为PersonWithinAdminRegion的一个例子。基本上,PersonWithinAdminRegion是超组Person的子组。它不是子类,因为子类继承了超类的属性并添加了更多。在我的情况下情况并非如此。我的问题是如何用OWL语法显示超组的子组?

Person a owl:Class.
PersonWithinAdminRegion ? ?

2 个答案:

答案 0 :(得分:3)

OWL中没有继承。因此,子类不会继承任何属性。子类层次结构是一种只包含一个语义的包含层次结构:子类的成员是(超级)类的成员。一个例子:

:Person a owl:Class .
:PersonWithinAdminRegion a owl:Class .
:PersonWithinAdminRegion rdfs:subClassOf :Person .
:FloridaPerson a :PersonWithinAdminRegion .

由此可以推断:

:FloridaPerson a :Person .

就是这样。不会推断出任何其他属性或值。例如。 RDFS和OWL语义更像是集合论(分类)而不是面向对象的类定义。

所以看起来上面的内容会为你提供你想要的语义。如果你想深入了解包容层次结构,请说:

:PersonInFloridaRegion rdfs:subClassOf :PersonWithinAdminRegion .
:p1 a :PersonInFloridaRegion .

...然后你就可以推断:

:p1 a :PersonWithinAdminRegion .
:p1 a :Person .

......等等。

答案 1 :(得分:1)

尽管我仍然不确定您的建模视角,以及Person是否有某些属性,但PersonWithinAdminRegion却没有。这是一个解决方案的想法。

您可以创建一个通用类Person,以及subclass USAPerson,然后PersonWithinAdminRegionsubclass Persons同时也是PersonWithinAdminRegion的兄弟姐妹。因此:

  1. USAPerosnPersonWithinAdminRegion都是Person;
  2. Persons将包含USAPersons,因此在制作Person的子集时,您仍然可以控制USAPerosn;
  3. PersonWithinAdminRegion仍然无法拥有USAPerson拥有的属性。

    Person a owl:Class
    USAPerson a owl:Class
    PersonWithinAdminRegion a owl:Class
    
    USAPerson rdfs:subClassOf Peron
    PersonWithinAdminRegion rdfs:subClassOf Peron
    
  4. 希望这有帮助。