Встроенные SWRL не работают в Protege 5.2

Я пытаюсь использовать встроенные функции SWRL в Protege 5.2, но они, похоже, не работают. Все другие мои правила (написанные без каких-либо встроенных) выводятся и хорошо видны, когда я запускаю свой резонер (гранулу). Я не уверен, нужно ли мне что-то настраивать в протеже или каким-либо другим способом использовать встроенные. Даже простой пример, как показано ниже, не работает:

Person(?x) ^ hasAge(?x,?age)^ swrlb:greaterThan(?age, 17) -> Adult(?x)  

Буду признателен за любую помощь. Спасибо.


person Amir    schedule 07.04.2018    source источник
comment
Pellet поддерживает почти все встроенные функции, поэтому он должен работать до тех пор, пока 1) есть данные, соответствующие предпосылке правила и 2) тип данных age является целым числом. Не уверен, но вы пытаетесь явно добавить в правило тип данных "17"^^xsd:integer (или xsd:int, какой бы тип данных у вас ни был для возраста)   -  person UninformedUser    schedule 08.04.2018


Ответы (1)


Некоторые ризонеры не поддерживают встроенные типы, даже если они поддерживают SWRL. В зависимости от причины вы можете увидеть красный треугольник в правом верхнем углу Protege. При нажатии на нее будет подробно описана возникшая ошибка.

К сожалению, я не знаю ризонера, поддерживающего встроенные типы для SWRL.

В этом случае есть обходной путь. Вы можете указать:

Class: Adult  
    hasAge some xsd:int[> "17"^^xsd:int]
person Henriette Harmse    schedule 07.04.2018