Declares a new slot and types it using domain . Typing is enforced using an if-added rule. For example:
declares the slot has-disease to be a relation between people and diseases. If one then asserts:
Algernon concludes that p1 isa people, and d1 isa diseases.
In general, domains must be Algernon sets, defined by the time the slot is accessed. A warning is given if a domain is undefined when the :slot is asserted. However, a domain may also be declared to be one of the Lisp datatypes, :number, :string, :symbol or :list. The variable *lisp-type-domains* holds the current complete list of permissible Lisp datatypes. The domain specification nil is completely unconstrained.
:slot takes the following ``keyword'' arguments:
This is a limited-purpose version of :slot, allowing only the :cardinality keyword, used in the early stages of setting up the knowledge-base.
See section 4 for examples of the use of :taxonomy and :slot.