2016-04-05 2 views
1

Мне нужна помощь в отношении синтаксиса OWL. У меня есть синтетический класс населения под названием «Человек». Лицо содержит информацию о населении, а PersonWithinAdminRegion - это другой класс, представляющий подгруппу класса человека. Например, класс «Человек» содержит информацию обо всех лицах в США. FloridaPerson или MiamiPerson могут быть примером PersonWithinAdminRegion. В принципе, PersonWithinAdminRegion является подгруппой Supergroup Person. Это не подкласс, потому что подкласс наследует свойства суперкласса и добавляет еще несколько. Это не так в моей ситуации. Мой вопрос заключается в том, как показать подгруппу супергруппы в синтаксисе OWL?Отношение подгруппы и супергруппы (класс/подкласс) в OWL

Person a owl:Class. 
PersonWithinAdminRegion ? ? 
+0

Вы уверены в своей моделирующей перспективе? Не являются ли MiamiPerson и FloridaPerson также личностью (что является абстракцией всех людей США в вашем контексте)? Не могли бы вы прояснить больше, указав пример свойства, которое у человека есть, но, например, MiamiPerson не делает этого? –

ответ

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

Здесь не совсем вопрос, но есть смысл, когда свойства «унаследованы» классами ** super **. Например., если A - суперкласс из B, а область свойства p - B, то A также является областью p. (Так как «область р представляет собой В» означает, что «если p (x, y), то x является B», а «B является подклассом A» означает «если x является B, то x является A» , то «p (x, y)» также означает, что «x является A».) Таким образом, домены и диапазоны «наследуются в обратном порядке». –

+0

Еще не объектно-ориентированное наследование. Это просто последствия вывода в стандартных профилях рассуждений RDFS. Называть это «наследование» только смущает вопрос для тех, кто ищет поведение ОО. – scotthenninger

+0

Определенно не одно и то же. Я только указал на это, потому что, по моему опыту, это был один из самых удивительных аспектов для людей, когда они смотрят на, выведенные домены и диапазоны, именно потому, что это * противоположность * того, что вы получаете с объектно-ориентированным наследованием (по крайней мере, когда люди объединяют свойства OWL и поля/методы на языках OO). –

1

Несмотря на то, что я все еще не уверен в вашей моделирующей перспективе и есть ли какие-то свойства, которые есть у Person, но PersonWithinAdminRegion, нет. Вот идея для решения.

Вы можете создать общий класс Person и subclass его USAPerson, то в PersonWithinAdminRegion, который является subclass из Persons, а также и родственный PersonWithinAdminRegion. Таким образом:

  1. Оба USAPerosn и PersonWithinAdminRegion являются 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 
    

Надеется, что это помогает.