установки на пример правиле AssertingHasSiblingMulti1
для настройки несколько слотов данного в AddingRuleWithJessTab я создал следующее правило Jess для установки значений нескольких слотов на моем foundPollutionSources собственности:Джесс в Protege: мульти-слот проблема
(defrule findPHPolluters
(declare (salience 553))
(object
(is-a http..#PollutionSources)
(OBJECT ?sitepoll)
(http..potentialPollutant
$? ?b&:(eq (instance-name ?b)(instance-name http..#pH)) $?)
(http..#pollutionSourceName ?psName)
(http..#pollutionType ?psType)
)
(object
(is-a http..#MeasurementSite)
(OBJECT ?loc)
(http..#hasSourcesOfPollution $?sitepoll_list)
)
(object
(is-a http..#ModeratePHMeasurement)
(OBJECT ?mob)
(http..#observationResultLocation ?loc)
(http..#foundPollutionSources $?existing_poll_list)
)
=>
(if (not (member$ ?sitepoll $?sitepoll_list)) then
(printout t "pH pollution source: " ?psName " (Location: " ?psType ")" crlf)
(slot-set ?mob http..#foundPollutionSources (create$ $?existing_poll_list ?sitepoll))
)
)
Но, когда я запускаю это правило появляется следующее исключение:
Джесс сообщила об ошибке в рутинной ValueVector.set при выполнении правила LHS (MTELN) при выполнении правила LHS (TECT). Сообщение: Bad индекс 117 в вызове, чтобы установить() на этом векторе: ...
Я не хочу распечатывать экземпляры, которые вы говорите, но вместо этого я хотел бы заполнить значения слота foundPollutionSources экземплярами? Sitepoll. Я попытался удалить символ «$», ошибка не появляется, но еще раз цель не достигнута – Edi