The role argument is a single-valued relation, or the name of such a relation.
The value argument is the new value of role. If value is a list, the list is interpreted as a single role filler. If value is a symbol, the value is coerced to an instance unless the the range of role indicates that it should be interpreted as a constant.
The context argument is the context, or the name of the context, where lookup of instance and role begins. This defaults to the current context.
If the no-error-p argument is t, then error messages are suppressed.
(defrelation r :characteristics :single-valued) (set-value 'Joe 'r 3) ==> 3 (set-value 'Joe 'r '(3 4 5)) ==> (3 4 5) (set-value (fi Joe) (fr r) nil :context "CL-USER-THEORY") ==> NIL (set-value 'Joe 'r 'Mary) ==> |I|MARY (defrelation s :characteristics :single-valued :range Symbol) (set-value 'Joe 's 'Mary) ==> MARY (set-value 'Joe 's 3 :no-error-p t) ==> NIL :TYPE-CLASH