Every GFP operation that accepts a facet argument should accept the following standard facet names. b :DOMAIN
This slot lists the KB classes that this slot applies to. The facet can have one or more classes as its values, which indicates that the slot applies to all of the listed classes. For the list of classes to be meaningful, there should not exist two classes in the list such that one class is an all-super of the other class.
The :VALUE-TYPE facet provides one way to specify a type restriction on the values of a slot. The facet can have only one value, which must be either a single symbol or a list of symbols prefaced by one of the three keywords :and, :or, and :one-of.
If the :VALUE-TYPE facet has the single value D for slot S on class frame C, then D must be a class such that for all instances i of C, all values of slot S on i must be instances of D.
If the value of the :VALUE-TYPE facet is a list beginning with :and, all values of slot S must be instances of all of the classes specified in the list; if the list begins with :or, all values of slot S must be instances of one of the classes specified in the list.
If the :VALUE-TYPE list begins with :one-of, then the facet describes slots whose values must be chosen from a pre-enumerated list of possible values. The cdr of the list is the list of possible values for the slot. Imagine a slot called color, whose values must be chosen from the list (red green blue). The :VALUE-TYPE facet would then contain the list (:one-of red green blue) as its value.
The :CARDINALITY facet specifies the exact number of possible values that a slot may take on. This facet can have only one value, which must be a nonnegative integer. A :CARDINALITY of 1 on template slot S of frame C means that for all instances i of C, there must exist one and only one value for the slot S.
The :MAXIMUM-CARDINALITY facet allows one to specify a partial constraint on the number of values for a slot: that there exists at most N values. The most common value is 1, which means that the slot is single-valued. If an application attempts to assert more than one value in such a slot, a constraint violation occurs. The behavior of a FRS under constraint violations is determined by the :CONSTRAINT-VIOLATION behavior.
The :MINIMUM-CARDINALITY facet allows one to specify a partial constraint on the number of values for a slot: that there exists at least N values. When a new frame is created, N values for this slot must be specified; if not, a constraint violation occurs. Some FRSs automatically generate placeholder values to fill such a slot, rather than signally a violation. The behavior of a FRS under constraint violations is determined by the :CONSTRAINT-VIOLATION behavior.
This facet can have a single value, which is the slot that encodes the inverse relationship of the slot to which the facet is attached. For example, a slot that encodes the child relationship between two people would have as its inverse the parent slot. The INVERSE facet on the child slot would contain parent as its value, and the INVERSE facet on the parent slot would contain the value child.
These facets specify the minimum and maximum bounds on a slot whose values are numbers. Each facet can take a single number as its value.
These facets are used to specify values on template slots that are to be inherited to the corresponding own slots. The values of the :TEMPLATE-VALUES facet on template slot S of class frame C are monotonically inherited to the own slot S on instances of C. The :DEFAULT-TEMPLATE-VALUES facet specifies values that are inherited by default inheritance.
The :COLLECTION-TYPE facet specifies how to deal with multiple values for a slot, i.e. whether ordering is important and whether or not duplicate values are permitted. Possible values are :list, :set, or :multiset. Not all FRS's will support all options -- the collection-types supported are determined by the :COLLECTION-TYPES behavior.
The :DOCUMENTATION facet is used to associate documentation strings with specific slots, usually template slots, on frames.