извинения, если вопрос уже был задан или если ответ тривиален.Я пытался найти способ реализации этого конкретного случая, но я не нашел никакого решения.
ПРОБЛЕМА: Это то, что я хотел бы смоделировать:
Давайте представим, что свойство 'isFriendOf' не было симметричным и что для этого отношениячтобы быть возможным (x isFriendOf y), должны быть выполнены два условия:
x sendsFriendRequestTo y
y acceptsFriendRequestFrom x
И что, когда эти два свойства присутствуют в нашей онтологии, свойство x isFriendOf y автоматически выводитсяТо есть:
(x sendsFriendRequestTo y) AND (y acceptsFriendRequestFrom x) -> x isFriendOf y
Что я пробовал до сих пор
Я пытался смоделировать это свойство как цепочку свойств следующими способами:
1) sendsFriendRequestTo some (acceptsFriendRequestFrom Self) -> isFriendOf
(рассуждающий выдает ошибку, а в журнале говорится: Непростое свойство Obj используется просто )
2) sendsFriendRequestTo o acceptsFriendRequestFrom -> isFriendOf
(хотяЯ понимаю, что это не может быть правильной композицией двух свойств)
Комментарии
Я могу определить классы как пересечение двух классов / концепций;но мне не ясно, как определить свойство как пересечение двух других свойств (и в этом случае, как указать домен и диапазон конечного свойства?).
Я нашел что-то в "Rolification" (то есть, определил класс, а затем принудительно обработал его как роль), но я не уверен, что понял, как это работает, или еслиэто было бы полезно для того, что я пытаюсь смоделировать.
Любая помощь?