С https://github.com/protegeproject/swrlapi/issues/63:
К сожалению, синтаксический анализатор SWRLAPI не поддерживает выражения класса OWL в правилах.
Нет временной шкалы для их включения.
К счастью, можно использовать представление «Правила» (Windows> Представления> Представления онтологий> Правила ):
Rule: (not Person)(?x) -> NonHuman(?x)
анализируется правильно и работает как задумано .
На самом деле вам не нужен SWRL в этом частном случае. Просто напишите (not Person) SubClassOf NonHuman
в разделе Общие аксиомы класса или сначала определите NonPerson
, если вам не нравятся аксиомы GCI.
Не забудьте о OWA.