Как определить свойство как пересечение двух «условий» в OWL2 / Protege / Ontology - PullRequest
0 голосов
/ 30 мая 2018

извинения, если вопрос уже был задан или если ответ тривиален.Я пытался найти способ реализации этого конкретного случая, но я не нашел никакого решения.

ПРОБЛЕМА: Это то, что я хотел бы смоделировать:
Давайте представим, что свойство '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" (то есть, определил класс, а затем принудительно обработал его как роль), но я не уверен, что понял, как это работает, или еслиэто было бы полезно для того, что я пытаюсь смоделировать.

Любая помощь?

1 Ответ

0 голосов
/ 31 мая 2018

Боюсь, в OWL вы не можете полностью это представить.Вы можете выбрать два варианта: либо указать частичную аксиоматизацию того, что вы хотите в OWL, и жить с этим, либо полагаться на другие формализмы.Для вашего конкретного примера подойдет основанная на правилах структура (см. комментарий AKSW ).Также возможно объединить OWL со специальными программными расширениями, чтобы справиться с тем, что OWL не может выразить.Например, если вы хотите представить знания о физических системах, где числовые значения связаны в соответствии с арифметическими формулами, OWL не может вам помочь (например, связь между ускорением и внешними силами).Но вы можете объединить иерархию классов OWL со свойствами типов данных со специальной реализацией физических формул, чтобы охватить этот случай.

Один OWL может охватывать многие варианты использования с точки зрения представления знаний, но в целом этоОшибочно полагать, что онтология закодирует все знания, которые вам нужны для решения любой проблемы, с которой вы сталкиваетесь.Должен быть программный код, который устраняет пробелы, с которыми формализм представления знаний не может справиться.

Если у вас есть конкретный человек ex:p, вы можете сказать, с кем этот человек дружит в OWLследующим образом (в синтаксисе Turtle ):

[ a owl:Restriction;
  owl:onProperty ont:isFriendWith;
  owl:hasValues ex:p ] owl:equivalentClass
    [ owl:someValuesFrom [
        a owl:Restriction;
        owl:onProperty [ owl:inverseOf ont:sendsFriendRequestTo ];
        owl:hasValue ex:p ],
    [ owl:someValuesFrom [
        a owl:Restriction; 
        owl:onProperty ont:acceptsFriendRequestFrom;
        owl:hasValue ex:p ] 
 ] .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...