Protégé 4.3: Согласованность онтологий

В настоящее время я создаю онтологию изобретений в Protégé 4.

Я заявил:

  • недвижимость fulfills
  • два класса: Invention и Need

Все еще на Protégé, мой класс Invention определяется следующим утверждением:

Invention subClassOf fulfills exactly 1 Need

Это означает, что мне не нужен человек типа Invention, который не fulfills Need или более одного.

Чтобы проверить это утверждение, я создал индивидуума типа Invention с именем Boots и двух индивидуумов типа Need, названных соответственно Move_faster и Eat_faster.

Я утверждал, что Boots fulfills Move_faster и Boots fulfills Eat_faster, что должно нарушить мою последовательность, потому что изобретение должно удовлетворять только одну Потребность.

Но когда я запускаю HermiT reasoner, моя онтология остается согласованной, даже если:

  • Boots не выполняет ничего
  • Boots удовлетворяет любого человека, не являющегося Need

Это нормально?

Спасибо


person Spadon_    schedule 04.04.2014    source источник


Ответы (1)


Да это все нормально. OWL имеет предположение об открытом мире и не имеет предположение об уникальном имени. В совокупности это означает, что при наличии двух имен (например, Move_faster и Eat_faster) автор рассуждений OWL не может делать никаких предположений относительно того, действительно ли эти имена обозначают одно и то же лицо.

Описываемая вами онтология не противоречива, потому что вполне возможно, что Move_faster и Eat_faster на самом деле одно и то же (действительно, рассуждающий OWL сделает именно такой вывод), и в этом случае все равно будет верно, что Boots выполняет ровно одно Need. Единственный способ создать здесь несоответствие - добавить утверждение Move_faster owl:differentFrom Eat_faster.

Точно так же, если Boots ничего не выполняет в вашей онтологии, логик OWL просто предположит, что есть некий безымянный Need, который Boots действительно выполняет. Это предположение об открытом мире в действии.

Boots выполнение чего-то, что не является (известно как) Need, также не является несоответствием, потому что fulfills exactly 1 Need ограничение ничего не говорит о вещах, которые может выполнить экземпляр этого класса, которые не являются членами Need. Вам нужно будет добавить allValuesFrom ограничение, чтобы сделать это несогласованным - и даже тогда оно несовместимо только в том случае, если известно, что выполненная вещь является членом класса, который не пересекается с Need.

person Alex    schedule 04.04.2014