Можно ли сравнить два свойства типа данных, используя <= в операторе OWL?
Я новичок в онтологиях и OWL, поэтому мне нужна помощь.
У меня есть два свойства типа данных (или переменные): VARmin и VARmax. Оба должны быть>=0 и <=1. Это ограничение мне удалось создать и все нормально. Я сделал это:
(VARmin некоторый float[<= 1, >= 0]) и (VARmax некоторый float[<= 1, >= 0])
Проблема в том, что мне нужно сравнить эти переменные, как в следующей форме: VARmin <= VARmax. Я попробовал это:
VARmin некоторый float[<=" 'VARmax' "^^float]
но я получил эту ошибку: "UnsupportedOperationException: значение NULL недопустимо для фасета 32"
Я исследовал возможное решение этой ошибки и получил объяснение о конкретных типах данных, таких как "Годы" и форму для сравнения целых чисел здесь: https://mailman.stanford.edu/pipermail/p4-feedback/2007-October/000414.html Но это не мой случай.
Я снова исследовал, но решения не совпадают с моей проблемой. Может ли кто-нибудь помочь мне, пожалуйста!
PS: я использую Protégé версии 4.0 и Pellet
1 ответ
Чтобы решить этот вопрос, используя SWRL, я создал следующее правило:
SomeClass ("someclass"), VARmin("someclass", "varmin"), moreThanOrEqual("varmin", 0.0), lessThanOrEqual("varmin, 1.0), VARmax(" someclass, "varmax"),? varmax, 1.0), lessThanOrEqual(? varmin,? varmax) -> ComparisonOK (? someclass)
В зависимости, я нашел этот ответ [1], который мне очень помог создать разногласия, чтобы отрицать каждый случай, указанный в приведенном выше правиле, например:
SomeClass (? Someclass), VARmin(? Someclass,? Varmin), lessThan (? Varmin, 0.0) -> ComparisonNotOK (? Someclass)