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

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

Я заявил:

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

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

Invention subClassOf fulfills exactly 1 Need

Это означает, что я не хочу, чтобы какое-либо лицо типа Invention которое не fulfills Need или более одного.

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

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

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

  • Boots ничего не выполняют
  • Boots выполняют любое лицо, которое не Need

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

благодаря

1 ответ

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

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

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

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

licensed under cc by-sa 3.0 with attribution.