Проблемы использования экзистенциальных ограничений в Protege

Я хочу выяснить, имеет ли Лицо, принадлежащее к классу А, хотя бы одно отношение ко ВСЕМ лицам, принадлежащим к классу В.

У меня проблема с поиском подходящего выражения, которое дает мне желаемые результаты запроса DL. Для приведенного ниже примера:

Classs: Course {CourseA, CourseB, CourseC, CourseD}
Class: Program {UG_CE, G_CE}
Class: Student {John}

ObjectProperty: is-PartOf (Course,Program)

ObjectProperty: hasEnrolledIn (Student, Course)

для физических лиц: CourseA и CourseB, я подтвердил свойство:

is-PartOf UG_CE

Для Индивидуального Джона были утверждены следующие 3 свойства:

hasEnrolledIn CourseA
hasEnrolledIn CourseB
hasEnrolledIn CourseC

Я также добавил к индивидуальному типу

hasEnrolledIn only ({CourseA , CourseB , CourseC}) 

для решения проблем OWA.

Я хочу знать, записался ли Джон на все курсы, которые требуются для UG_CE, обратите внимание, что Джон записался на все курсы и дополнительный курс.

После вызова аргумента следующий запрос не даст мне желаемого результата:

Student that hasEnrolledIn only (is-PartOf value UG_CE)

поскольку "только" ограничивается определением точного количества отношений, оно не служит намеченной цели. Кроме того, я не могу использовать Макс или Мин, так как количество курсов выведено и неизвестно заранее.

Может ли другой подход решить мою проблему?

1 ответ

Решение

Хотя хорошо "закрывать" мир в отношении того, какие классы посещает Джон, столь же важно закрывать его в отношении того, какие классы требуются для UG_CE. Я думаю, что вам нужен такой подход:

М требует А.
М требует Б.
M: требуется только {A, B}.

J поступил в A.
Я поступил в Б.
J поступил в C.
J: зарегистрирован только в {A, B, C}.

Для отдельного ученика J вы можете узнать, зачислены ли они во все классы, необходимые для M, спросив, является ли набор классов, требуемый для M, подмножеством набора классов, зачисленных студентом:

(обратное(требует) значение M) SubClassOf (обратное(enrolledIn) значение J)

или, в нотации DL, с перечисленными классами (множество возможных способов выразить это):

∃ требуется-1. {M} ⊑ ∃ зарегистрирован в-1. {J}

Теперь, если у OWL было отрицание свойства, вы могли бы получить набор учеников, которые только не зачислены в классы, не требующиеся для выражения вроде этого:

not(enrolledIn) только not(обратное(требует) значение M)

Это требует таких вещей, что единственные курсы, на которые они не зачислены, - это курсы, которые не требуются М. Однако OWL не имеет выражений отрицания свойств, поэтому я не уверен, куда это нас уходит. Самое простое, что можно сделать - добавить свойство "не зарегистрирован", хотя это не выглядит элегантно.

Другие вопросы по тегам