2015-05-19 3 views
1

Я хочу, чтобы выяснить, если физическое лицо, принадлежащий к классу А, имеет наименьшее одно отношение со всеми физическими лицами класса В.Проблемы при использовании экзистенциальные ограничений в 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 

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

hasEnrolledIn only ({CourseA , CourseB , CourseC}) 

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

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

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

Student that hasEnrolledIn only (is-PartOf value UG_CE) 

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

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

+0

«отметьте, что Джон записал все курсы [для UG_CE] и дополнительный курс». Откуда мы это знаем? Откуда мы знаем, что для UG_CE нет дополнительных курсов, которые еще не были упомянуты? –

+0

Для будущих читателей, вероятно, здесь тоже работает решение http://stackoverflow.com/questions/37380729/require-individuals-property-values-to-be-a-superset-of-anothers/37390763#37390763. –

ответ

0

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

        M требует A.
        M требует B.
        M: требует только {A, B}.

        J enrolledIn А.
        J enrolledIn Б.
        J enrolledIn С.
        J: enrolledIn только {А, В, С }.

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

        (обратное (требуется) значение М) SubClassOf (обратное (enrolledIn) значение Дж)

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

        ∃ & thinsp; требует -1 {M} & sqsubseteq;. . ∃ & thinsp; enrolledIn -1 {J}

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

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

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

+0

Я все еще думаю о том, как переработать последний бит и получить общий запрос для набора людей. Легко попросить набор учеников, обучающихся в некоторых классах для M (но этого недостаточно), или только классы для M (но это слишком ограничительно). Здесь нам нужно попросить студентов, чтобы они не были зачислены в классы, которые не требуются. Классы, которые не требуются, легки (не (обратное (требуется) значение M)), но «не зарегистрировано» сложнее. –

+0

Я думал о подобном подходе ранее, однако, я хотел избежать необходимости утверждать отрицательные свойства объекта. Сценарий заключается в том, что объектное свойство «J enrolledIn A» выведено аргументом, я бы не хотел добавлять вручную «J: зарегистрирован только для {A}», а затем отрицательно утверждать, что «J enrolledIn B» и J enrolledIn C. похоже, что нет возможности предположить, что разумный субъект мог бы сделать вывод о том, что курсы, которые J не зарегистрировал в качестве свойства отрицательного объекта. – AlAnoodZ

+0

@ user3689319 Ну, OWL2 имеет отрицательные свойства объекта, поэтому, если рассудитель может понять, что J не зарегистрирован в B, он может * подтвердить * NegativeObjectPropertyAssertion (J, enrolledIn, B).Проблема в том, что выражения отрицательного свойства нет, поэтому аргумент не может подтвердить ObjectPropertyAssertion (J, not (enrolledIn), B). –

Смежные вопросы