Element Specification eSpec-q

December 1999
Element specification definition eSpec-q consists essentially of a 'valueRestrictor' and an optional 'elementSelector'. The valueRestrictor in the ASN.1 definition below takes the form of a type-1 query, whose purpose is to limit the scope of the retrieved information.

Example of valueRestrictor
Suppose eSpec-q is to be applied to holdings records (based on the holding schema, 1.2.840.10003.13.7). The valueRestrictor may be used to restrict the retrieved information to holdings for a specific institution: In this case the valueRestrictor would take the form of a type-1 query where:
The optional elementSelector in the ASN.1 definition below takes the form of an element specification, for example, eSpec-1 (which may degenerate to an element set name). It may be used in the normal manner, to select the actual desired elements to be retrieved (subject to restriction by valueRestrictor).
Example of elementSelector
Again suppose eSpec-q is to be applied to holdings. elementSelector may take the form of eSpec-1 to request that retrieved record be composed of siteLocation, dateOfReport, numberOfCopies, and UnionCatLendingInfo.
In the two examples above, the combined use of the valueRestrictor and elementSelector would result in the retrieval of siteLocation, dateOfReport, numberOfCopies, and UnionCatLendingInfo, for all holdings for which the institution code is 'MdMC-T', for all result set records indicated in the Present request.

If the elementSelector is omitted, the target chooses the element set.

ASN.1 Definition Follows

{Z39-50-elementSpec eSpec-q (3)} DEFINITIONS ::=
IMPORTS Term,  AttributeList, AttributeElement
FROM Z39-50-APDU-1995
Espec-q ::= SEQUENCE{
        valueRestrictor     [1] IMPLICIT ValueRestrictor,
        elementSelector     [2] IMPLICIT EXTERNAL OPTIONAL}

ValueRestrictor ::= SEQUENCE{
        attributeSetId                 OBJECT IDENTIFIER,
        nodeSelectionCriteria          RPNStructure}
  RPNStructure ::= CHOICE{
      op        [0] AttributesPlusTerm,
      rpnRpnOp  [1] IMPLICIT SEQUENCE{
                      rpn1      RPNStructure,
                      rpn2      RPNStructure,
                      op        [46] CHOICE{
                           and     [0] IMPLICIT NULL,
                           or      [1] IMPLICIT NULL,
                        and-not    [2] IMPLICIT NULL} }}

   AttributesPlusTerm ::= [102] IMPLICIT SEQUENCE{
             attributes   AttributeList,
             term         Term}