A metalevel in Noos is also a feature term constructed by means of a description. Moreover, a metalevel description is just an concept description plus a metalevel relation with another (base-level) term (called the referent of the metalevel). Since metalevels are defined in the same way that concepts and methods, feature values of metalevel features can be defined by reference to other concepts or metalevels, defining a path or defining a (metalevel) method. All metalevels descriptions should be a refinement of metalevel, i.e. the constituent should be metalevel or some refinement of it. Metalevels can have an identifier (a name) but usually they are anonymous. Anonymous metalevels are defined as the description that has a metalevel relation with some other description D with the (meta of D) idiom. That is to say, a metalevel is defined as follows (where usually metalevel is metalevel itself).
Since a metalevel description is also a description, it can have its own metalevel that can be indicated by using two meta constructs in its definition, as in (meta meta of D). Although this ``metalevel tower'' can grow in principle as far as needed, in practice only two or three metalevels are used.
The features of a metalevel have a specific correspondence with respect to the features with the same name on the referent. A feature f of the metalevel meta(D) hold the methods that are applicable to the feature f of the referent D. In other words, since a method is a way to solve a particular task, the set of methods are alternative ways to infer a feature value for f of D. Thus we can conceive of the sets of feature values in a feature f of a metalevel meta(D) as a disjunction over the methods that can be used in the feature f of D. A disjunctive expression of methods is used when there is not sufficient knowledge to uniquely determine the method that is guaranteed to solve a specific task--namely the task of inferring a value for any given feature f of a description. Since any of the specified methods, Noos provides a backtracking mechanism that assures all options will be tried if needed. This capability facilitates the modeling of search-based methods in Noos--specially when using the preference orderings explained later in Chapter 5.
In the following schema of a metalevel description, methods
can be reflected down to the feature-
of D to be used as methods.
However, this syntax is used mainly for specifying metalevel methods (see §2.4.3). There is a simplified syntax that allows to define alternative methods for a feature without the need to explicitly define the metalevel object: the double parenthesis syntax. For instance, the equivalent of the metalevel description schema is the following using double parenthesis.
That is to say, a set of methods in a double parenthesis feature is specifying a disjunctive set of applicable methods to that feature. Mind you, this syntactic sugar does not need to type the metalevel description but it is, in fact, creating such a metalevel. In other words, there is a metalevel with feature values the sets of methods being defined, as illustrated in the following example.
Notice that the meta construct used before to define the the metalevel relation is in this example as a query when typed on the listener. The second query to the metalevel of thing shows that the two alternative methods specified for foo are the values of the corresponding metalevel feature foo.