Как использовать правила SWRL на Protegé 4.3 с помощью Pellet

Я только начал работать над онтологиями с Protegé и пытаюсь понять, как использовать правила SWRL. Боюсь, я не понимаю концепции или того, как правильно с ними обращаться, так как я не могу произвести никакого вывода. Я объясню немного больше простого случая, который я создал, чтобы проверить это:

Я создал трех индивидуумов, названных A, B и C. Каждый из них имеет тестовое свойство, которое имеет логический диапазон. На вкладке утверждений свойств каждого из них я инициализировал их значения, поэтому они равны test(A,true), test(B,true) и test(C,true). Чтобы проверить, как работают правила, я создал такое правило: test(A,true), test(B,true) -> test(C,false). Насколько я понимаю, если тестовое свойство A и B истинно, то свойство C станет ложным. Для этого я запускаю резонер (Pellet), но ничего не происходит. Я имею в виду, что он говорит, что механизм рассуждений активен, и сообщения о «несогласованной онтологии» не появляются, но значение теста C не меняется. Я уверен, что это должна быть действительно простая путаница, но я не могу найти ее нигде и не проверить, активировано ли правило.

Заранее спасибо.


person jmnavarro    schedule 12.12.2013    source источник


Ответы (1)


Вывод так не работает, вы не можете отказаться от test(C, true), если вы это утверждали. Ваша онтология, вероятно, включает в себя как test(C, true), так и test(C, false), что вполне допустимо, если вы не указали иное; в этом случае тогда вы увидите несоответствие.

person Michael    schedule 12.12.2013
comment
Спасибо за ваш ответ. Тогда какой будет правильная процедура для инициализации значения свойства и последующего его изменения внутри правила? - person jmnavarro; 13.12.2013
comment
Вы не можете отозвать утвержденную информацию с помощью правила, это просто так не работает. В вашем примере вы должны оставить значение для test на C неуказанным и создать правило таким образом, чтобы оно всегда выводило для него значение. Таким образом, если вы измените утверждение для A или B, предполагаемое значение test для C изменится соответствующим образом. - person Michael; 13.12.2013
comment
Хорошо, я полагаю, что утверждения данных работают так, как я сначала подумал... Итак, есть ли какой-либо способ работы с OWL и SWRL для инициализации (понимания этого, например, в Java) значения свойства и изменения его на другое значение, когда правило активировано? - person jmnavarro; 16.12.2013
comment
Да, если правило сделает это. - person Michael; 18.12.2013
comment
Привет снова! Я снова работаю над этой проблемой. Чтобы проверить эту проблему инициализации, я создал тестовый класс под названием Test, индивидуум этого класса под названием Indiv и свойство под названием Prop с тестовым доменом и диапазоном int. После этого я создал такое правило: Test(Indiv)->Prop(Indiv,5). Если я правильно понял ваше объяснение, теперь у Indiv должно быть 5 в свойстве Prop, но я не вижу, чтобы что-то происходило (возможно, это другой вопрос, как я могу увидеть на Protegé изменение, которое делает правило?) - person jmnavarro; 27.01.2014
comment
Новые вопросы не следует публиковать в виде комментариев. - person Michael; 27.01.2014
comment
Хм, хорошо, я думаю, хотя было бы немного полезнее, если бы, помимо исправления меня, вы указали, как правильно задать этот вопрос, который полностью связан с рассматриваемой проблемой. - person jmnavarro; 28.01.2014