Ограничения OWL для сусла

Я новичок в OWL и все еще изучаю ограничения. Я пытаюсь смоделировать эти утверждения:

  1. Человек (P) может быть мужчиной (M) или женщиной (F), но не одновременно
  2. Человек должен быть мужчиной или женщиной
  3. У мужчины нет платьев
  4. У женщины есть хотя бы одно платье (D)

До сих пор я моделировал это так:

P -> canBe -> M  
P -> canBe -> F  
M <- disjoint -> F  
F -> has (>= 1) -> D

Я не понимаю, как добавить ограничение, что человек должен быть мужчиной или женщиной, и как показать, что у мужчины нет платьев. Я также не уверен в своем моделировании в целом и буду благодарен за любые отзывы.


person Jack    schedule 02.03.2014    source источник


Ответы (1)


В общем, могут быть разные способы достижения одной и той же цели. Это означает, что следующие ответы не обязательно являются единственной возможностью, но они первые, которые приходят мне в голову.

1. Человек (P) может быть мужчиной (M) или женщиной (F), но не обоими сразу.
2. Человек должен быть мужчиной или женщиной.

Для этих двух утверждений необходимо принять важное решение при моделировании. Являются ли Male и Female подклассами класса Person, или вы используете какое-либо свойство, например hasSex, который связывает человека с полом? Если вы используете подход подкласса, вы можете сделать это, объявив, что

Человек - это не пересекающийся союз Мужской и Женский.

Это означает, что каждый экземпляр Person является экземпляром Male или экземпляром Female, и что классы Male и Female не пересекаются, поэтому ничто не является экземпляром обоих. (Конечно, если вы можете говорить о не-личностных вещах, о мужском и женском, тогда вы не захотите использовать именно этот подход.)

Если вы используете такое свойство, как hasSex, то это либо свойство объекта, либо свойство данных. В первом случае вам понадобится класс Sex с двумя индивидуумами мужчина и женщина, и вы бы объявили, что они отличаются от друг друга, и вы можете сделать hasSex функциональным свойством и объявить его диапазон как класс Sex. Отчасти это, конечно, зависит от того, насколько общие ваши классы и свойства. Если вы не объявляете диапазон для свойства, вы все равно захотите использовать какой-то класс ограничений в качестве суперкласса Person. Например.,

Человек = 1 hasSex. {Мужчина, женщина}
Человек hasSex. {Мужчина, женщина}

Эти аксиомы говорят, что каждый человек имеет ровно одно значение из {male, female} как значение для свойства * hasSex *, и что каждое значение, которое человек имеет для hasSex, должно быть из {male, female} .

3. У мужчины нет платьев
4. У женщины есть хотя бы одно платье (D)

Если вы используете общее свойство has, которое может применяться не только к платьям (в отличие, например, от свойства hasDress, которое применяется только к платьям), и у вас есть класс для Dress, это просто:

Мужчина = 0 имеет. Платье
Женщина ≥1 имеет. Платье

person Joshua Taylor    schedule 02.03.2014
comment
Спасибо! Это был отличный исчерпывающий ответ. Если я просто не нарисую никакой связи между Male и Dress, этого достаточно, чтобы сделать вывод, что male has no dresses, или мне все равно нужно будет нарисовать связь M -> hasDress = 0 -> D? - person Jack; 03.03.2014
comment
OWL исходит из предположения об открытом мире; просто потому, что вы чего-то не сказали, не означает, что это не может быть правдой. Максимальное количество платьев в классе 0. Платье - это класс людей, у которых может быть доказано отсутствие платьев. То, что вы не знаете, что у кого-то есть платье, не означает, что у него его нет, и OWL уважает это. Если у мужчин нет платьев, вам нужна аксиома, говорящая об этом. - person Joshua Taylor; 03.03.2014
comment
Попался. Еще раз спасибо за подробные объяснения! - person Jack; 03.03.2014