Моя проблема в том, что если я хочу проверить, находится ли экземпляр в диапазоне, я использую следующее правило:
Rule1: Error(?d), TimeRelatedError(?c), TimeRelatedError_start_at(?c, ?s), error_at(?d, ?b), greaterThan(?b, ?s) -> is_after_TimeRelatedError_start(?d, true)
Rule2: Error(?d), TimeRelatedError(?c), TimeRelatedError_end_at(?c, ?e), error_at(?d, ?b), lessThan(?b, ?e) -> is_before_TimeRelatedError_end(?d, true)
Это работает, если в моей онтологии есть только один TimeRelatedError, если у меня больше экземпляров, он всегда будет вызывать true (поскольку один из TimeRelatedError всегда находится до/после начальной/конечной точки). У вас есть идеи, как решить эту проблему? Я думаю, что смогу решить эту проблему, если каким-то образом назначу свой TimeRelatedError экземпляру Error, но я не знаю, как это сделать. Пожалуйста, профессионалы OWL/SWRL, помогите мне с этой задачей :)
in_range
. Вам не нужна связь с самим диапазоном? Пока вы только делаете вывод, что ошибка находится в каком-то диапазоне, но что, если у вас есть несколько диапазонов? Разве не имеет смысла отслеживать, какой диапазон? - person UninformedUser   schedule 07.08.2019