«Игнорирование транзитивности и/или сложных аксиом подсвойств»
Я пытаюсь смоделировать свойство, которое является транзитивным, асимметричным и иррефлексивным. Я понимаю, что рассуждения OWL не поддерживают эту сложную взаимосвязь.
Однако есть ли способ «обмануть» мыслителя? Я хочу использовать это для целей проверки, поэтому я также пробую правила SWRL (1), но правило не работает (что имеет смысл, причина та же).
(1) isBaseFor(?y1, ?y2) ^ isBaseFor(?y2, ?y3) -> isBaseFor(?y2, ?y3)
Я подумываю об использовании SQWRL, однако это проверка, аналогичная SHACL или SPARQL (это означает, что мне нужно запускать запрос проверки отдельно, чего я пытаюсь избежать).
Есть идеи?
1 ответ
«Хитрость» заключается в том, чтобы создатьisBaseFor
как иррефлексивный и асимметричный (без переходной характеристики) и добавьте правило SWRL для переходной характеристики. Вот манчестерский синтаксис:
ObjectProperty: isBaseFor
Characteristics:
Irreflexive,
Asymmetric
Individual: y1
Facts:
isBaseFor y2
Individual: y2
Facts:
isBaseFor y3
Individual: y3
DifferentIndividuals:
y1,y2,y3
Rule:
isBaseFor(?y1, ?y2), isBaseFor(?y2, ?y3) - isBaseFor(?y1, ?y3)
Это правильно выдаст несоответствия для:
- и
isBaseFor(y2, y1)
из-за асимметричной характеристики. -
isBaseFor(y3, y3)
из-за иррефлексивной характеристики.
Он правильно выведет транзитивное отношение на основе правила SWRL с учетом утверждений.isBaseFor(y1, y2)
иisBaseFor(y2, y3)
.