The QRD describes the shape, or the dimensional structure, of the result set to be returned for rendering. It will generally be generated from the layout specification and is used to assist the rendering operation by delivering the data to be iterated on in the expected form. That is, the QRD unambiguously specifies a result set structure and represents a meta-model of the QSAPI. The QRD can be specified either as one of the available templates or as a set of named edges. Optional master-detail links, generated from the layout containment relationships, define the master and detail contexts of the relationships. a collection of edges. a generic edge type that is generated from the layout information (i.e. the placement of dataItems within a report and their nesting, grouping and aggregations) OQP currently caches 100 members along each edge of a cross tab report and disables this cache when the "all rows" query hint is enabled. RSVP, when rendering cross tab reports, re-traverses the column edge for each row of data. If the number of members along the column edge exceeds the cache size, performance is impacted. In the case of charts, RSVP re-traverses both the row and column edge, consequently a large result set as input to a chart can exhibit even worse performance than a cross tab. What is required is a mechanism by which RSVP can control the caching of members along individual edges of a result set, independent of the "all rows" query hint. The solution is to introduce a new, optional attribute to the edge element of the QRD, called "memberCache", the purpose of which is to indicate how members are to be cached along an edge. The three supported values for the attribute are -default - Members along an edge are cached, to the maximum specified by the qfs_config.xml file. -none- None of the members along an edge are cached. -all - All of the members along an edge are cached. If the attribute does not appear for an edge, members are cached to the maximum specified in the qfs_config.xml file and if the "all rows" query hint is disabled. If the attribute appears on an edge, it overrides the value of the "all rows" query hint. In addition, the size of the OQP member edge cache is controlled by the qfs_config.xml property "PPRowCacheSize", the default value of which is 1000. The property must be assigned a value greater than zero, otherwise it defaults to 1000. a collection of MD links. Defines a master-detail relationship. A master context and a detail context child elements specify the link filter based on refrenced dataItems or paramters. a canonical edge specification that defines a list or a xtab/chart edge Controls suppression on the edge with the following attributes: 1. nulls - a boolean attribute indicating if edge members are to be suppressed if they correspond only to null fact/measure values. 2. zero - a boolean attribute indicating if edge members are to be suppressed if they correspond only to zero fact/measure values. 3. divByZero - a boolean attribute indicating if edge members are to be suppressed if they correspond only to fact/measure values with status of divByZero. 4. overflow - a boolean attribute indicating if edge members are to be suppressed if they correspond only to fact/measure values with a status of overflow. an arbitrary shaped set of values on an edge unions of value sets, each refrences a dataItem and defines a group body, header, and/or footer a valueSet, also known as a memberSet, defines a collection of values or members to be returned for this edgeGroup. It represents a (nesting) level in an explorer style edge. The refDataItem attribute of this element represents the "key" associated with the level. Level properties can be specified in the groupBody child element as a list of dataItemRefs. Seven default memeber properties can be specified as property expression. a list overall header a list overall footer specifies how members of the group are sorted a node in a tree of member sets a list report detail column. a reference to a selection dataItem. In a context that requires many dataItemRefs (a group footer for example), each dataItemRef must be unique. for linking master/detail queries for linking master/detail queries represents an arbitrary shaped set of members (data values) on an edge. A flat list of non-nested edge groups in an edge specification can be used to represent the unioning of member sets. Each group in the list can have one or more valueSets that represent the group's members (based on a caption key and associated body attributes), an optionial header and/or footer, a sort, and a supression. An explorer-mode crosstab edge can be specified by a set of nested edge groups. A reporter-mode crosstab edge can be specified by nesting and unioning edge groups. A grouped list report can be specified by a set of nested edge groups with the inner most edge group representing the details. This special group is not keyed on anly level (i.e. it valueSet has not refDataItem attribute) and its body references the detail columns as level attributes. a data section in a cross tab or a chart template cross tab fact values a list report overall header. a list report overall footer. defines a member that represents a summary of the group members. Logically returned before the group members defines a member that reoresents a summary of the group members. Logically returned after the group members The groupSort child element of the valueSet element defines the sort order for the group members within a context defined by the entire result set. A query author can define a sort using projected and non projected items as was the case in Baltic. The groupSort can reference a data item form the associated query even if the data item was not used in QRD. For a detail group (i.e. a group with a valueSet that has no data item reference and has a group body reference a list of items) the order the groupSort items dictates the order in which the details are sorted. RoleValue('_memberUniqueName'), RoleValue('_memberCaption'), RoleValue('_levelUniqueName'), RoleValue('_levelNumber'), RoleValue('_levelLabe')l, RoleValue('_parentUniqueName'), RoleValue('_dimensionUniqueName'), RoleValue('_hierarchyUniqueName'), RoleValue('_queryItemModelID') defines the attributes to be returned for each member in the group. [DEPRECATED] The solveOrder attribute should now be specified on the dataItem. Specifies the solve order for this calculation. If no solve order is specified then the solve order will be follow the default rules that the server uses to determine solve order.