= The elements of a template definition = The purpose of this page is to give an overview of the elements that go into defining an ISO 15926 template in its ''generic'' form, by which is meant the definition of what it expresses, without consideration of practical implementation. A template is primarily defined in an implementation-agnostic form, using first-order logic. Implementations will attempt to capture such definitions. The explanations given here are informal on purpose, and directed toward the practical use of templates. Formal-logical definitions to match will be provided in due course. == Template roles == Roles are unary predicates. A role is used to specify constraints on single things. Note that "thing" is used here in the generic sense of ISO 15926-2 Thing, and may have intended interpretation as variously a physical object, a class, a metaclass, a number, and so forth. A template role will typically lay down constraints of the following kinds, about an argument ''x'': * The ISO 15926 entity type(s) of ''x'' * Data type, if ''x'' is a piece of data * Classifiers: What class (classes) does ''x'' belong to? * Superclasses: Of what class (classes) is ''x'' a variant? * == Template signatures == == Template rules ==