Объявлять как под-, так и супер-свойства в данных экземпляра или только под-свойства?

Если у меня есть простая онтология, включающая аксиому подсвойства:

ex:hasChair rdfs:subPropertyOf ex:hasParticipant .

Я хочу утверждать, что «Пол Пилл был председателем примера конференции, а Джек Джилл был участником примера конференции». Правильно ли писать:

:exampleConference a ex:AcademicConference ;
                   ex:hasChair :paul_pill ;
                   ex:hasParticipant :jack_jill .

или мне также нужно явно указать, что Пол Пилл был участником (даже если hasChair является подсвойством hasParticipant)? То есть мне нужно написать:

:exampleConference a ex:AcademicConference ;
                   ex:hasChair :paul_pill ;
                   ex:hasParticipant :paul_pill, :jack_jill .

person Gio Bact    schedule 17.07.2014    source источник


Ответы (1)


Это очень сильно зависит от того, есть ли у вас ризонер или нет, когда вы пытаетесь извлечь данные из своей онтологии. Говоря это

hasChair hasParticipant

эквивалентна формуле первого порядка:

x,y.(hasChair(x,y) hasParticipant(x,y))

Это означает, что из hasChair(exampleConference,paulPill) логически следует hasParticipant(exampleConference,paulPill). Однако вам понадобится аргументатор OWL (или RDFS), чтобы доказать это для вас, если вы утверждаете только предложение hasChair. Если вы утверждаете оба предложения hasChair и hasParticipant, то вам не понадобится аргументатор, чтобы выяснить, что hasParticipant(exampleConference,paulPill).

похожий Недавно в списке рассылки пользователей Jena был задан вопрос об обратных свойствах.

Если у a есть функциональная/обратно-функциональная пара, должен ли я создавать операторы в обоих направлениях или использовать какое-то устройство вывода для заполнения? Я создаю здесь много троек, поэтому я склонен делать их сам, опасаясь очень медленного перемещения большой модели.

То есть, если бы у вас было свойствоparticipant, обратное свойству hasParticipant, вопрос в том, достаточно ли его для утверждения

hasParticipant(exampleConference,paulPill)

или вы должны сделать оба

hasParticipant(exampleConference,paulPill)
участвуетв(paulPill,exampleConference)

Ответ почти тот же: если у вас есть рассудок, то достаточно одного. Если нет, то вы, вероятно, хотите оба.

person Joshua Taylor    schedule 17.07.2014