2 {z39-50-recordSyntax sutrs (101)} DEFINITIONS ::=
4 IMPORTS InternationalString FROM Z39-50-APDU-1995;
5 SutrsRecord ::= InternationalString
6 -- Line terminator is ASCII LF (X'0A').
7 -- Recommended maximum line length is 72 characters.
11 {z39-50-recordSyntax opac (102)} DEFINITIONS ::=
13 IMPORTS InternationalString FROM Z39-50-APDU-1995;
15 OPACRecord ::= SEQUENCE {
16 bibliographicRecord [1] IMPLICIT EXTERNAL OPTIONAL,
17 holdingsData [2] IMPLICIT SEQUENCE OF HoldingsRecord OPTIONAL}
19 HoldingsRecord ::= CHOICE {
20 marcHoldingsRecord [1] IMPLICIT EXTERNAL,
21 holdingsAndCirc [2] IMPLICIT HoldingsAndCircData}
23 HoldingsAndCircData ::= SEQUENCE {
24 -- the following elements are required to display
25 -- holdings in conformance with NISO standards.
26 typeOfRecord [1] IMPLICIT InternationalString OPTIONAL,-- LDR 06
27 encodingLevel [2] IMPLICIT InternationalString OPTIONAL, -- LDR 017
28 format [3] IMPLICIT InternationalString OPTIONAL, -- 007
30 receiptAcqStatus [4] IMPLICIT InternationalString OPTIONAL, -- 008 06
31 generalRetention [5] IMPLICIT InternationalString OPTIONAL, -- 008 12
32 completeness [6] IMPLICIT InternationalString OPTIONAL, -- 008 16
33 dateOfReport [7] IMPLICIT InternationalString OPTIONAL, -- 008
35 nucCode [8] IMPLICIT InternationalString OPTIONAL, -- 852 $a
36 localLocation [9] IMPLICIT InternationalString OPTIONAL, -- 852 $b
37 shelvingLocation [10] IMPLICIT InternationalString OPTIONAL, -- 852 $c
38 callNumber [11] IMPLICIT InternationalString OPTIONAL, -- 852 $h
40 shelvingData [12] IMPLICIT InternationalString OPTIONAL, -- 852 $j
42 copyNumber [13] IMPLICIT InternationalString OPTIONAL, -- 852 $t
43 publicNote [14] IMPLICIT InternationalString OPTIONAL, -- 852 $z
44 reproductionNote [15] IMPLICIT InternationalString OPTIONAL, -- 843
45 termsUseRepro [16] IMPLICIT InternationalString OPTIONAL, -- 845
46 enumAndChron [17] IMPLICIT InternationalString OPTIONAL, -- all 85x,
48 volumes [18] IMPLICIT SEQUENCE OF Volume OPTIONAL,
49 -- repeats for each volume held
50 circulationData [19] IMPLICIT SEQUENCE OF CircRecord OPTIONAL
51 -- repeats for each circulating item.
55 enumeration [1] IMPLICIT InternationalString OPTIONAL,
56 chronology [2] IMPLICIT InternationalString OPTIONAL,
57 enumAndChron [3] IMPLICIT InternationalString OPTIONAL }
59 CircRecord ::= SEQUENCE {
60 availableNow [1] IMPLICIT BOOLEAN,
61 availablityDate [2] IMPLICIT InternationalString OPTIONAL,
62 availableThru [3] IMPLICIT InternationalString OPTIONAL,
63 restrictions [4] IMPLICIT InternationalString OPTIONAL,
64 itemId [5] IMPLICIT InternationalString OPTIONAL,
65 renewable [6] IMPLICIT BOOLEAN,
66 onHold [7] IMPLICIT BOOLEAN,
67 enumAndChron [8] IMPLICIT InternationalString OPTIONAL,
68 midspine [9] IMPLICIT InternationalString OPTIONAL,
69 temporaryLocation [10] IMPLICIT InternationalString OPTIONAL}
73 {z39-50-diagnostic diag-1 (2)} DEFINITIONS ::=
75 IMPORTS Term, Specification, AttributeList, SortElement,
77 DefaultDiagFormat, InternationalString FROM Z39-50-APDU-1995;
80 DiagnosticFormat ::= SEQUENCE OF SEQUENCE{
81 diagnostic [1] CHOICE{
82 defaultDiagRec [1] IMPLICIT DefaultDiagFormat,
83 explicitDiagnostic [2] DiagFormat} OPTIONAL,
84 message [2] IMPLICIT InternationalString OPTIONAL}
87 DiagFormat ::= CHOICE{
89 tooMany [1000] IMPLICIT SEQUENCE{
90 tooManyWhat [1] IMPLICIT INTEGER{
94 incompleteSubfields (4),
97 dataBasesSpecified (7),
98 resultSetsCreated (8),
99 indexTermsProcessed (9)},
100 max [2] IMPLICIT INTEGER OPTIONAL},
103 badSpec [1001] IMPLICIT SEQUENCE{
104 -- element set name or specification
105 spec [1] IMPLICIT Specification,
106 -- esn or element spec not supported
107 db [2] IMPLICIT DatabaseName OPTIONAL,
108 -- if db specified, above spec not
109 -- supported for db; otherwise,
110 -- spec not supported period.
111 goodOnes [3] IMPLICIT SEQUENCE OF Specification
113 -- target supplies ones that are
118 dbUnavail [1002] IMPLICIT SEQUENCE{ -- database unavailable
119 db [1] IMPLICIT DatabaseName,
120 why [2] IMPLICIT SEQUENCE{
121 reasonCode [1] IMPLICIT INTEGER{
123 existsButUnavail (1),
128 InternationalString OPTIONAL}},
131 unSupOp [1003] IMPLICIT INTEGER{ -- unsupported operator
138 attribute [1004] IMPLICIT SEQUENCE{
139 -- Applies for unsupported attribute set,
140 -- attribute type, attribute value, or term (for
141 -- a given attribute type or value).
142 id [1] IMPLICIT OBJECT IDENTIFIER,
143 -- if only "id" occurs, then
144 -- attribute set is not supported
145 type [2] IMPLICIT INTEGER OPTIONAL,
146 -- must occur if value occurs.
147 value [3] IMPLICIT INTEGER OPTIONAL,
148 -- if omitted, and Type occurs,
149 -- then Type is what is unsupported
150 term [4] Term OPTIONAL
151 -- If occurs, term is illegal or
152 -- not supported, for attribute
153 -- value, if value occurs;
154 -- otherwise, for type.
158 attCombo [1005] IMPLICIT SEQUENCE{
159 -- attribute combination not supported
160 unsupportedCombination [1] IMPLICIT AttributeList,
161 recommendedAlternatives [2] IMPLICIT SEQUENCE OF
162 AttributeList OPTIONAL},
165 term [1006] IMPLICIT SEQUENCE{
166 problem [1] IMPLICIT INTEGER{
174 proximity [1007] CHOICE{ -- proximity diagnostics:
175 resultSets [1] IMPLICIT NULL,
176 -- proximity between sets not
178 badSet [2] IMPLICIT InternationalString,
179 -- bad result set specified
180 relation [3] IMPLICIT INTEGER,
181 -- 1 to 6 ; relation not supported
182 unit [4] IMPLICIT INTEGER,
183 -- unsupported unit code
184 distance [5] IMPLICIT INTEGER,
185 -- unsupported distance
186 attributes [6] AttributeList,
187 -- proximity not supported with
188 -- specified attribute combination
189 ordered [7] IMPLICIT NULL,
190 -- ordered flag not supported
191 exclusion [8] IMPLICIT NULL
192 -- exclusion flag not supported
196 scan [1008] CHOICE{ -- scan diagnostics:
197 nonZeroStepSize [0] IMPLICIT NULL,
198 -- only zero step size
200 specifiedStepSize [1] IMPLICIT NULL,
201 -- specified step size not
203 termList1 [3] IMPLICIT NULL,
204 -- term list not supported
205 -- (no alternative supplied)
206 termList2 [4] IMPLICIT SEQUENCE OF
208 -- term list not supported
209 -- (alternatives supplied)
210 posInResponse [5] IMPLICIT INTEGER{
211 -- value of positionIn-
212 -- Response not supported
215 mustBeNonNegative (3),
217 resources [6] IMPLICIT NULL,
218 -- resources exhausted
219 -- looking for satisfying
221 endOfList [7] IMPLICIT NULL
222 -- beginning or end of term
228 sequence [0] IMPLICIT NULL,
229 -- cannot sort according
231 noRsName [1] IMPLICIT NULL,
232 -- no result set name
234 tooMany [2] IMPLICIT INTEGER,
235 -- Too many input result
236 -- sets, maximum supplied.
237 incompatible [3] IMPLICIT NULL,
238 -- records with different
239 -- formats not compatible for
241 generic [4] IMPLICIT NULL,
242 -- generic sort not supported
243 -- (db specific only)
244 dbSpecific [5] IMPLICIT NULL,
245 -- db specific sort not
247 sortElement [6] SortElement,
248 key [7] IMPLICIT INTEGER{
250 -- too many sort keys
252 -- duplicate sort keys
253 action [8] IMPLICIT NULL,
254 -- unuspported missing data
256 illegal [9] IMPLICIT INTEGER{
258 -- illegal sort relation
260 -- illegal case value
262 -- illegal missing data
266 inputTooLarge [10] IMPLICIT SEQUENCE OF
268 -- one or more of the
269 -- input result sets too
271 aggregateTooLarge [11] IMPLICIT NULL
272 -- aggregate result set
275 segmentation [1010] CHOICE{
276 segmentCount [0] IMPLICIT NULL,
277 -- Cannot guarantee record will fit
278 -- within max segments. Target
279 -- suggests that origin try again
280 -- to retrieve record, without
281 -- including max-segment-count.
282 segmentSize [1] IMPLICIT INTEGER
283 -- record cannot be segmented into
284 -- fragments such that the largest
285 -- will fit within max segment
286 -- size specified. Target supplies (in
287 -- bytes) the smallest acceptable value.
288 -- of Max-segment-size to retrieve
292 extServices [1011] CHOICE{
293 req [1] IMPLICIT INTEGER{ -- bad request
295 -- package name already in use
297 -- no such package, on
302 -- extended service type not
304 permission [2] IMPLICIT INTEGER{
305 -- permission denied on ES, because:
307 -- id not authorized, or
309 -- cannot modify or delete
310 immediate [3] IMPLICIT INTEGER{
311 -- immediate execution:
314 -- not supported for this service,
316 -- not supported for these
321 accessCtrl [1012] CHOICE{
322 noUser [1] IMPLICIT NULL,
323 -- no user to display challenge to
324 refused [2] IMPLICIT NULL,
325 -- access control information
327 simple [3] IMPLICIT NULL,
328 -- only simple form supported
329 -- (target used externally defined)
330 oid [4] IMPLICIT SEQUENCE OF OBJECT
332 -- oid not supported (origin
333 -- supplies alternative suggested
335 alternative [5] IMPLICIT SEQUENCE OF OBJECT
337 -- origin insists that target use
338 -- an alternative challenge for
339 -- this data (e.g. stronger
340 -- authentication or stronger
341 -- Access control). The origin
342 -- supplies suggested alternative
344 pwdInv [6] IMPLICIT NULL,
346 pwdExp [7] IMPLICIT NULL
351 recordSyntax [1013] IMPLICIT SEQUENCE{
352 -- record cannot be transferred in requested syntax
353 unsupportedSyntax [1] IMPLICIT OBJECT
355 suggestedAlternatives [2] IMPLICIT SEQUENCE OF
362 {z39-50-recordSyntax explain (100)} DEFINITIONS ::=
365 IMPORTS AttributeSetId, Term, OtherInformation, DatabaseName, ElementSetName,
366 IntUnit, Unit, StringOrNumeric, Specification,
368 AttributeList, AttributeElement
369 FROM Z39-50-APDU-1995;
371 Explain-Record ::= CHOICE{
372 -- Each of these may be used as search term
373 -- when Use attribute is 'explain-category'.
374 targetInfo [0] IMPLICIT TargetInfo,
375 databaseInfo [1] IMPLICIT DatabaseInfo,
376 schemaInfo [2] IMPLICIT SchemaInfo,
377 tagSetInfo [3] IMPLICIT TagSetInfo,
378 recordSyntaxInfo [4] IMPLICIT RecordSyntaxInfo,
379 attributeSetInfo [5] IMPLICIT AttributeSetInfo,
380 termListInfo [6] IMPLICIT TermListInfo,
381 extendedServicesInfo [7] IMPLICIT ExtendedServicesInfo,
382 attributeDetails [8] IMPLICIT AttributeDetails,
383 termListDetails [9] IMPLICIT TermListDetails,
384 elementSetDetails [10] IMPLICIT ElementSetDetails,
385 retrievalRecordDetails [11] IMPLICIT RetrievalRecordDetails,
386 sortDetails [12] IMPLICIT SortDetails,
387 processing [13] IMPLICIT ProcessingInformation,
388 variants [14] IMPLICIT VariantSetInfo,
389 units [15] IMPLICIT UnitInfo,
390 categoryList [100] IMPLICIT CategoryList}
392 -- Element set name 'B' (brief) retrieves:
393 -- - 'commonInfo' (except for otherInfo within commonInfo)
395 -- - other elements designated as 'non-key brief elements'
396 -- Esn 'description' retrieves brief elements as well as 'description', and
397 -- specific additional descriptive elements if designated.
398 -- Element set name 'F' (full) retrieves all of the above, as well as those
399 -- designated as "non-brief elements". Some elements designated as OPTIONAL
400 -- may be madatory in full records, and are so identified. (Note that all
401 -- elements that are not part of the brief element set must be designated as
402 -- OPTIONAL in the ASN.1, otherwise it would be illegal to omit them).
403 -- Other esns are defined (below) as needed.
406 -- - - - - - - - - - - - - Info Records
407 -- Info records are mainly for software consumption
408 -- They describe individual entities within the target system:
410 -- Individual databases
417 -- The information about each Schema, Tag Set, Record Syntax and Attribute
418 -- Set should match the universal definitions of these items. The only
419 -- exception is that a target may omit any- items it doesn't support, for
420 -- example the description of the BIB-1 attribute set may omit attributes
421 -- that the target does not support under any circumstances.
422 -- Databases that may be searched together can be listed in the
423 -- dbCominations element of the TargetInfo record.
427 TargetInfo ::= SEQUENCE {
428 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
429 -- Key elements follow:
430 name [1] IMPLICIT InternationalString,
431 -- Non-key brief elements follow:
432 recent-news [2] IMPLICIT HumanString OPTIONAL,
433 icon [3] IMPLICIT IconObject OPTIONAL,
434 namedResultSets [4] IMPLICIT BOOLEAN,
435 multipleDBsearch [5] IMPLICIT BOOLEAN,
436 maxResultSets [6] IMPLICIT INTEGER OPTIONAL,
437 maxResultSize [7] IMPLICIT INTEGER OPTIONAL,
438 maxTerms [8] IMPLICIT INTEGER OPTIONAL,
439 timeoutInterval [9] IMPLICIT IntUnit OPTIONAL,
440 welcomeMessage [10] IMPLICIT HumanString OPTIONAL,
441 -- non-brief elements follow:
442 -- 'description' esn retrieves the following two (as well as brief):
443 contactInfo [11] IMPLICIT ContactInfo OPTIONAL,
444 description [12] IMPLICIT HumanString OPTIONAL,
445 nicknames [13] IMPLICIT SEQUENCE OF InternationalString
447 usage-restrictions [14] IMPLICIT HumanString OPTIONAL,
448 paymentAddr [15] IMPLICIT HumanString OPTIONAL,
449 hours [16] IMPLICIT HumanString OPTIONAL,
450 dbCombinations [17] IMPLICIT SEQUENCE OF DatabaseList OPTIONAL,
451 addresses [18] IMPLICIT SEQUENCE OF NetworkAddress OPTIONAL,
452 languages [101] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
453 -- Languages supported for message strings. Each is a three-character
454 -- language code from Z39.53-1994.
455 -- characterSets [102] this tag reserved for "character sets supported for name and message strings".
457 -- commonAccessInfo elements list objects the target supports. All objects
458 -- listed in AccessInfo for any individual database should also be listed
460 commonAccessInfo [19] IMPLICIT AccessInfo OPTIONAL}
464 DatabaseInfo ::= SEQUENCE {
465 -- A target may provide "virtual databases" that are combinations of
466 -- individual database. These databases are indicated by the
467 -- presence of subDbs in the combination database's
468 -- DatabaseDescription.
469 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
470 -- Key elements follow:
471 name [1] IMPLICIT DatabaseName,
472 -- Non-key brief elements follow:
473 explainDatabase [2] IMPLICIT NULL OPTIONAL,
474 -- If present, this database is the Explain
475 -- database, or an Explain database
476 -- for a different server,
477 -- possibly on a different host. The means
478 -- by which that server may be accessed is
479 -- not addressed by this standard. One
480 -- suggested possibility is an implementor
481 -- agreement whereby the database name is a
482 -- url which may be used to connect to the
484 nicknames [3] IMPLICIT SEQUENCE OF DatabaseName OPTIONAL,
485 icon [4] IMPLICIT IconObject OPTIONAL,
486 user-fee [5] IMPLICIT BOOLEAN,
487 available [6] IMPLICIT BOOLEAN,
488 titleString [7] IMPLICIT HumanString OPTIONAL,
489 -- Non-brief elements follow:
490 keywords [8] IMPLICIT SEQUENCE OF HumanString OPTIONAL,
491 description [9] IMPLICIT HumanString OPTIONAL,
492 associatedDbs [10] IMPLICIT DatabaseList OPTIONAL,
493 -- databases that may be searched in
494 -- combination with this one
495 subDbs [11] IMPLICIT DatabaseList OPTIONAL,
496 -- When present, this database is a
497 -- composite representing the combined
498 -- databases 'subDbs'. The individual subDbs
499 -- are also available.
500 disclaimers [12] IMPLICIT HumanString OPTIONAL,
501 news [13] IMPLICIT HumanString OPTIONAL,
502 recordCount [14] CHOICE {
503 actualNumber [0] IMPLICIT INTEGER,
504 approxNumber [1] IMPLICIT INTEGER}
506 defaultOrder [15] IMPLICIT HumanString OPTIONAL,
507 avRecordSize [16] IMPLICIT INTEGER OPTIONAL,
508 maxRecordSize [17] IMPLICIT INTEGER OPTIONAL,
509 hours [18] IMPLICIT HumanString OPTIONAL,
510 bestTime [19] IMPLICIT HumanString OPTIONAL,
511 lastUpdate [20] IMPLICIT GeneralizedTime OPTIONAL,
512 updateInterval [21] IMPLICIT IntUnit OPTIONAL,
513 coverage [22] IMPLICIT HumanString OPTIONAL,
514 proprietary [23] IMPLICIT BOOLEAN OPTIONAL,
515 -- mandatory in full record
516 copyrightText [24] IMPLICIT HumanString OPTIONAL,
517 copyrightNotice [25] IMPLICIT HumanString OPTIONAL,
518 producerContactInfo [26] IMPLICIT ContactInfo OPTIONAL,
519 supplierContactInfo [27] IMPLICIT ContactInfo OPTIONAL,
520 submissionContactInfo [28] IMPLICIT ContactInfo OPTIONAL,
521 -- accessInfo lists items connected with the database. All listed items
522 -- should be in the target's AccessInfo.
523 accessInfo [29] IMPLICIT AccessInfo OPTIONAL}
527 SchemaInfo ::= SEQUENCE {
528 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
529 -- Key elements follow:
530 schema [1] IMPLICIT OBJECT IDENTIFIER,
531 -- Non-key brief elements follow:
532 name [2] IMPLICIT InternationalString,
533 -- Non-brief elements follow:
534 description [3] IMPLICIT HumanString OPTIONAL,
535 tagTypeMapping [4] IMPLICIT SEQUENCE OF SEQUENCE {
536 tagType [0] IMPLICIT INTEGER,
537 tagSet [1] IMPLICIT OBJECT IDENTIFIER
539 -- If tagSet is omitted, then
540 -- this tagType is for a tagSet
541 -- locally defined within the
542 -- schema that cannot be
543 -- referenced by another schema.
544 defaultTagType [2] IMPLICIT NULL OPTIONAL} OPTIONAL,
545 recordStructure [5] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL}
549 -- ElementInfo referenced in SchemaInfo and RecordSyntaxInfo
550 ElementInfo ::= SEQUENCE {
551 elementName [1] IMPLICIT InternationalString,
552 elementTagPath [2] IMPLICIT Path,
553 dataType [3] ElementDataType OPTIONAL,
554 -- If omitted, not specified.
555 required [4] IMPLICIT BOOLEAN,
556 repeatable [5] IMPLICIT BOOLEAN,
557 description [6] IMPLICIT HumanString OPTIONAL}
559 -- Path is referenced by ElementInfo as well as PerElementDetails
560 Path ::= SEQUENCE OF SEQUENCE{
561 tagType [1] IMPLICIT INTEGER,
562 tagValue [2] StringOrNumeric}
564 ElementDataType ::= CHOICE{
565 primitive [0] IMPLICIT PrimitiveDataType,
566 structured [1] IMPLICIT SEQUENCE OF ElementInfo}
567 PrimitiveDataType ::= INTEGER{
577 noneOfTheAbove (100) -- see 'description'
581 TagSetInfo ::= SEQUENCE {
582 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
583 -- Key elements follow:
584 tagSet [1] IMPLICIT OBJECT IDENTIFIER,
585 -- non-key brief elements follow:
586 name [2] IMPLICIT InternationalString,
587 -- non-brief elements follow:
588 description [3] IMPLICIT HumanString OPTIONAL,
589 elements [4] IMPLICIT SEQUENCE OF SEQUENCE {
590 elementname [1] IMPLICIT InternationalString,
591 nicknames [2] IMPLICIT SEQUENCE OF
592 InternationalString OPTIONAL,
593 elementTag [3] StringOrNumeric,
594 description [4] IMPLICIT HumanString OPTIONAL,
595 dataType [5] PrimitiveDataType OPTIONAL,
596 -- If the data type is expected
597 -- to be structured, that is
598 -- described in the schema info,
599 -- and datatypeis omitted here.
600 otherTagInfo OtherInformation OPTIONAL} OPTIONAL}
604 RecordSyntaxInfo ::= SEQUENCE {
605 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
606 -- Key elements follow:
607 recordSyntax [1] IMPLICIT OBJECT IDENTIFIER,
608 -- Non-key brief elements follow:
609 name [2] IMPLICIT InternationalString,
610 -- non-brief elements follow:
611 transferSyntaxes [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
612 description [4] IMPLICIT HumanString OPTIONAL,
613 asn1Module [5] IMPLICIT InternationalString OPTIONAL,
614 abstractStructure [6] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL
615 -- Omitting abstractStructure only means target
616 -- isn't using Explain to describe the structure,
617 -- not that there is no structure.
622 AttributeSetInfo ::= SEQUENCE {
623 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
624 -- Key elements follow:
625 attributeSet [1] IMPLICIT AttributeSetId,
626 -- non-key brief elements follow:
627 name [2] IMPLICIT InternationalString,
628 -- non-brief elements follow:
629 attributes [3] IMPLICIT SEQUENCE OF AttributeType OPTIONAL,
630 -- mandatory in full record
631 description [4] IMPLICIT HumanString OPTIONAL}
635 -- AttributeType referenced in AttributeSetInfo
636 AttributeType ::= SEQUENCE {
637 name [0] IMPLICIT InternationalString OPTIONAL,
638 description [1] IMPLICIT HumanString OPTIONAL,
639 attributeType [2] IMPLICIT INTEGER,
640 attributeValues [3] IMPLICIT SEQUENCE OF AttributeDescription}
642 AttributeDescription ::= SEQUENCE {
643 name [0] IMPLICIT InternationalString OPTIONAL,
644 description [1] IMPLICIT HumanString OPTIONAL,
645 attributeValue [2] StringOrNumeric,
646 equivalentAttributes [3] IMPLICIT SEQUENCE OF StringOrNumeric
648 -- each is an occurence of
649 -- 'attributeValue' from
650 --AttributeDescription for a
651 -- different attribute. Equivalences
652 -- listed here should be derived from the
653 -- attribute set definition, not from a
654 -- particular server's behavior.
658 TermListInfo ::= SEQUENCE{
659 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
660 -- Key elements follow:
661 databaseName [1] IMPLICIT DatabaseName,
662 -- Non-key brief elements follow:
663 termLists [2] IMPLICIT SEQUENCE OF SEQUENCE{
664 name [1] IMPLICIT InternationalString,
665 title [2] IMPLICIT HumanString OPTIONAL,
666 -- Title is for users to see
667 -- and can differ by language.
668 -- Name, on the other hand, is
669 -- typically a short string
670 -- not necessarily meant to be
671 -- human-readable, and not
672 -- variable by language.
673 searchCost [3] IMPLICIT INTEGER {
675 -- The attribute (or combination)
676 -- associated with this list will
679 -- The attribute (combination) will
680 -- work expected. So there's
681 -- probably an index for the
682 -- attribute (combination) or some
683 -- similar mechanism.
685 -- Can use the attribute
686 -- (combination), but it might not
687 -- provide satisfactory results.
688 -- Probably there is no index, or
689 -- post-processing of records is
692 -- can't search with this
693 -- attribute (combination) alone.
695 scanable [4] IMPLICIT BOOLEAN,
696 -- 'true' means this list can be
698 broader [5] IMPLICIT SEQUENCE OF InternationalString
700 narrower [6] IMPLICIT SEQUENCE OF InternationalString
702 -- broader and narrower list
703 -- alternative term lists related to
704 -- this one. The term lists so listed
705 -- should also be in this termLists
708 -- no non-brief elements
714 ExtendedServicesInfo ::= SEQUENCE {
715 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
716 -- Key elements follow:
717 type [1] IMPLICIT OBJECT IDENTIFIER,
718 -- Non-key brief elements follow:
719 name [2] IMPLICIT InternationalString OPTIONAL,
720 -- should be supplied if privateType is 'true'
721 privateType [3] IMPLICIT BOOLEAN,
722 restrictionsApply [5] IMPLICIT BOOLEAN, -- if 'true' see 'description'
723 feeApply [6] IMPLICIT BOOLEAN, -- if 'true' see 'description'
724 available [7] IMPLICIT BOOLEAN,
725 retentionSupported [8] IMPLICIT BOOLEAN,
726 waitAction [9] IMPLICIT INTEGER{
729 waitNotSupported (3),
732 -- non-brief elements follow:
733 -- To get brief plus 'description' use esn 'description'
734 description [10] IMPLICIT HumanString OPTIONAL,
735 -- to get above elements and 'specificExplain' use esn
737 specificExplain [11] IMPLICIT EXTERNAL OPTIONAL,
738 -- Use oid of specific ES, and select choice
739 -- [3] 'explain'. Format to be developed in
740 -- conjunction with the specific ES definition.
741 -- to get all elements except 'specificExplain', use esn 'asn'
742 esASN [12] IMPLICIT InternationalString OPTIONAL
743 -- the ASN.1 for this ES
746 -- - - - - - - - - - - - - Detail records
747 -- The detail records describe relationships among entities supported by the
748 -- target. RetrievalRecordDetails describes the way that schema elements are
749 -- mapped into record elements. This mapping may be different for each
750 -- combination of database, schema, record syntax. The per-element details
751 -- describe the default mapping. Origin-request re-tagging can change that
752 -- mapping. When multiple databases are listed in a databaseNames element,
753 -- the record applies equally to all of the listed databases. This is
754 -- unrelated to searching the databases together. AttributeDetails describes
755 -- how databases can be searched. Each supported attribute is listed, and
756 -- the allowable combinations can be described.
758 AttributeDetails ::= SEQUENCE {
759 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
760 -- Key elements follow:
761 databaseName [1] IMPLICIT DatabaseName,
762 -- Non-brief elements follow:
763 attributesBySet [2] IMPLICIT SEQUENCE OF AttributeSetDetails
765 -- mandatory in full record
766 attributeCombinations [3] IMPLICIT AttributeCombinations OPTIONAL}
769 -- AttributeSetDetails referenced by AttributeDetails
770 AttributeSetDetails ::= SEQUENCE {
771 attributeSet [0] IMPLICIT AttributeSetId,
772 attributesByType [1] IMPLICIT SEQUENCE OF AttributeTypeDetails}
775 AttributeTypeDetails ::= SEQUENCE {
776 attributeType [0] IMPLICIT INTEGER,
777 defaultIfOmitted [1] IMPLICIT OmittedAttributeInterpretation OPTIONAL,
778 attributeValues [2] IMPLICIT SEQUENCE OF AttributeValue OPTIONAL }
779 -- If no attributeValues are supplied, all
780 -- values of this type are fully supported, and
781 -- the descriptions in AttributeSetInfo are
785 OmittedAttributeInterpretation ::=
787 defaultValue [0] StringOrNumeric OPTIONAL,
788 -- A default value is listed if that's how
790 defaultDescription [1] IMPLICIT HumanString OPTIONAL }
791 -- The human-readable description should
792 -- generally be provided. It is legal for
793 -- both default elements to be missing,
794 -- which means that the target will allow
795 -- the attribute type to be omitted, but
796 -- isn't saying what it will do.
798 AttributeValue ::= SEQUENCE {
799 value [0] StringOrNumeric,
800 description [1] IMPLICIT HumanString OPTIONAL,
801 subAttributes [2] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
802 superAttributes [3] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
803 partialSupport [4] IMPLICIT NULL OPTIONAL
804 -- partialSupport indicates that an attributeValue is
805 -- accepted, but may not be processed in the
806 -- "expected" way. One important reason for this is
807 -- composite databases: in this case partialSupport
808 -- may indicate that only some of the subDbs support
809 -- the attribute, and others ignore it.
813 TermListDetails ::= SEQUENCE{ -- one for each termList in TermListInfo
814 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
815 -- Key elements follow:
816 termListName [1] IMPLICIT InternationalString,
817 -- Non-key elements (all non-brief) follow:
818 description [2] IMPLICIT HumanString OPTIONAL,
819 attributes [3] IMPLICIT AttributeCombinations OPTIONAL,
820 -- Pattern for attributes that hit this list.
821 -- Mandatory in full record
822 scanInfo [4] IMPLICIT SEQUENCE {
823 maxStepSize [0] IMPLICIT INTEGER OPTIONAL,
824 collatingSequence [1] IMPLICIT HumanString OPTIONAL,
825 increasing [2] IMPLICIT BOOLEAN OPTIONAL}
827 -- Occurs only if list is scanable.
828 -- If list is scanable and if scanInfo is omitted,
829 -- target doesn't consider these important.
830 estNumberTerms [5] IMPLICIT INTEGER OPTIONAL,
831 sampleTerms [6] IMPLICIT SEQUENCE OF Term OPTIONAL}
835 ElementSetDetails ::= SEQUENCE {
836 -- ElementSetDetails describes the way that database records are mapped to
837 -- record elements. This mapping may be different for each combination of
838 -- database name and element set. The database record description is a
839 -- schema, which may be private to the target. The schema's abstract
840 -- record structure and tag sets provide the vocabulary for discussing
841 -- record content; their presence in the Explain database does not imply
842 -- support for complex retrieval specification.
843 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
844 -- Key elements follow:
845 databaseName [1] IMPLICIT DatabaseName,
846 elementSetName [2] IMPLICIT ElementSetName,
847 recordSyntax [3] IMPLICIT OBJECT IDENTIFIER,
848 -- Non-key Brief elements follow:
849 schema [4] IMPLICIT OBJECT IDENTIFIER,
850 -- Non-brief elements follow:
851 description [5] IMPLICIT HumanString OPTIONAL,
852 detailsPerElement [6] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL
853 -- mandatory in full record
858 RetrievalRecordDetails ::= SEQUENCE {
859 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
860 -- Key elements follow:
861 databaseName [1] IMPLICIT DatabaseName,
862 schema [2] IMPLICIT OBJECT IDENTIFIER,
863 recordSyntax [3] IMPLICIT OBJECT IDENTIFIER,
864 -- Non-brief elements follow:
865 description [4] IMPLICIT HumanString OPTIONAL,
866 detailsPerElement [5] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL
867 -- mandatory in full record
872 -- PerElementDetails is referenced in RetreivalRecordDetails and
873 -- ElementSetDetails.
874 PerElementDetails ::= SEQUENCE {
875 name [0] IMPLICIT InternationalString OPTIONAL,
876 -- If the name is omitted, the record
877 -- syntax's name for this element is
879 recordTag [1] IMPLICIT RecordTag OPTIONAL,
880 -- The record tag may be omitted if tags are
881 -- inappropriate for the syntax, or if the
882 -- origin can be expected to know it for
883 -- some other reason.
884 schemaTags [2] IMPLICIT SEQUENCE OF Path OPTIONAL,
885 -- The information from the listed schema
886 -- elements is in some way to produce the
887 -- data sent in the listed record tag. The
888 -- 'contents' element below may describe the
890 maxSize [3] IMPLICIT INTEGER OPTIONAL,
891 minSize [4] IMPLICIT INTEGER OPTIONAL,
892 avgSize [5] IMPLICIT INTEGER OPTIONAL,
893 fixedSize [6] IMPLICIT INTEGER OPTIONAL,
894 repeatable [8] IMPLICIT BOOLEAN,
895 required [9] IMPLICIT BOOLEAN,
896 -- 'required' really means that target will
897 -- always supply the element.
898 description [12] IMPLICIT HumanString OPTIONAL,
899 contents [13] IMPLICIT HumanString OPTIONAL,
900 billingInfo [14] IMPLICIT HumanString OPTIONAL,
901 restrictions [15] IMPLICIT HumanString OPTIONAL,
902 alternateNames [16] IMPLICIT SEQUENCE OF InternationalString
904 genericNames [17] IMPLICIT SEQUENCE OF InternationalString
906 searchAccess [18] IMPLICIT AttributeCombinations OPTIONAL}
908 -- RecordTag referenced in PerElementDetails above
909 RecordTag ::= SEQUENCE {
910 qualifier [0] StringOrNumeric OPTIONAL,
911 -- E.g. tag set for GRS-1
912 tagValue [1] StringOrNumeric}
917 SortDetails ::= SEQUENCE {
918 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
919 -- Key elements follow:
920 databaseName [1] IMPLICIT DatabaseName,
921 -- No non-key brief elements
922 -- Non-brief elements follow:
923 sortKeys [2] IMPLICIT SEQUENCE OF SortKeyDetails OPTIONAL
924 -- mandatory in full record
927 SortKeyDetails ::= SEQUENCE {
928 description [0] IMPLICIT HumanString OPTIONAL,
929 elementSpecifications [1] IMPLICIT SEQUENCE OF Specification
931 -- each specification is a way of
932 -- specifying this same sort key
933 attributeSpecifications [2] IMPLICIT AttributeCombinations OPTIONAL,
934 -- each combination is a way of
935 -- specifying this same sort key
936 sortType [3] CHOICE {
937 character [0] IMPLICIT NULL,
938 numeric [1] IMPLICIT NULL,
939 structured [2] IMPLICIT
940 HumanString} OPTIONAL,
941 caseSensitivity [4] IMPLICIT INTEGER {
943 -- always case-sensitive
945 -- never case-sensitive
947 -- case-sensitivity is as specified
948 -- on request, and if not
949 -- specified, case-sensitive.
951 -- case-sensitivity is as specified
952 -- on request, and if not
953 -- specified, not case-sensitive.
959 ProcessingInformation ::= SEQUENCE{
960 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
961 -- Key elements follow:
962 databaseName [1] IMPLICIT DatabaseName,
963 processingContext [2] IMPLICIT INTEGER {
965 -- e.g. choosing databases
967 -- e.g. "search strategies" or search forms
969 -- e.g. recommended element combinations
970 record-presentation (3),
971 -- display of retrieved records
973 -- handling (e.g. saving) of retrieved
976 name [3] IMPLICIT InternationalString,
977 oid [4] IMPLICIT OBJECT IDENTIFIER,
978 -- So origin can retreive brief record and
979 -- determine if it can handle 'instructions' when
980 -- retrieving the full record.
981 -- No non-key brief elements
982 -- Non-brief elements follow:
983 description [5] IMPLICIT HumanString OPTIONAL,
984 -- use element set name 'description'
985 -- to retrieve all except instructions.
986 instructions [6] IMPLICIT EXTERNAL OPTIONAL -- mandatory in full record
992 VariantSetInfo ::= SEQUENCE {
993 -- A record in this category describes a variant set definition, i.e.,
994 -- classes, types, and values, for a specific variant set definition
995 -- supported by the target. Support by the target of a particular
996 -- variant set definition does not imply that the definition is
997 -- supported for any specific database or element.
998 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
999 -- Key elements follow:
1000 variantSet [1] IMPLICIT OBJECT IDENTIFIER,
1001 -- Non-key brief elements follow:
1002 name [2] IMPLICIT InternationalString,
1003 -- Non-brief elements follow:
1004 variants [3] IMPLICIT SEQUENCE OF VariantClass OPTIONAL
1005 -- mandatory in full record
1008 -- Subsidiary structures for VariantSetInfo
1009 VariantClass ::= SEQUENCE {
1010 name [0] IMPLICIT InternationalString OPTIONAL,
1011 description [1] IMPLICIT HumanString OPTIONAL,
1012 variantClass [2] IMPLICIT INTEGER,
1013 variantTypes [3] IMPLICIT SEQUENCE OF VariantType}
1015 VariantType ::= SEQUENCE {
1016 name [0] IMPLICIT InternationalString OPTIONAL,
1017 description [1] IMPLICIT HumanString OPTIONAL,
1018 variantType [2] IMPLICIT INTEGER,
1019 variantValue [3] IMPLICIT VariantValue OPTIONAL}
1021 VariantValue ::= SEQUENCE {
1022 dataType [0] PrimitiveDataType,
1023 values [1] ValueSet OPTIONAL }
1025 ValueSet ::= CHOICE {
1026 range [0] IMPLICIT ValueRange,
1027 enumerated [1] IMPLICIT SEQUENCE OF ValueDescription }
1029 ValueRange ::= SEQUENCE {
1030 -- At last one the following must be supplied, both
1032 lower [0] ValueDescription OPTIONAL,
1033 upper [1] ValueDescription OPTIONAL }
1035 ValueDescription ::= CHOICE{
1037 string InternationalString,
1038 octets OCTET STRING,
1039 oid OBJECT IDENTIFIER,
1040 unit [1] IMPLICIT Unit,
1041 valueAndUnit [2] IMPLICIT IntUnit
1042 -- oid and unit can't be used in a ValueRange
1047 UnitInfo ::= SEQUENCE {
1048 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1049 -- Key elements follow:
1050 unitSystem [1] IMPLICIT InternationalString,
1051 -- No non-key brief elements
1052 -- Non-brief elements follow:
1053 description [2] IMPLICIT HumanString OPTIONAL,
1054 units [3] IMPLICIT SEQUENCE OF UnitType OPTIONAL }
1055 -- mandatory in full record
1057 -- Subsidiary structures for UnitInfo
1058 UnitType ::= SEQUENCE {
1059 name [0] IMPLICIT InternationalString OPTIONAL,
1060 description [1] IMPLICIT HumanString OPTIONAL,
1061 unitType [2] StringOrNumeric,
1062 units [3] IMPLICIT SEQUENCE OF Units}
1064 Units ::= SEQUENCE {
1065 name [0] IMPLICIT InternationalString OPTIONAL,
1066 description [1] IMPLICIT HumanString OPTIONAL,
1067 unit [2] StringOrNumeric}
1071 CategoryList ::= SEQUENCE {
1072 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1073 -- Only one record expected per Explain database. All elements
1074 -- appear in brief presentation.
1075 categories [1] IMPLICIT SEQUENCE OF CategoryInfo }
1077 CategoryInfo ::= SEQUENCE {
1078 category [1] IMPLICIT InternationalString,
1079 originalCategory [2] IMPLICIT InternationalString OPTIONAL,
1080 description [3] IMPLICIT HumanString OPTIONAL,
1081 asn1Module [4] IMPLICIT InternationalString OPTIONAL}
1086 -- - - - - - - - - - - - - - Subsidiary definitions
1088 CommonInfo ::= SEQUENCE {
1089 dateAdded [0] IMPLICIT GeneralizedTime OPTIONAL,
1090 dateChanged [1] IMPLICIT GeneralizedTime OPTIONAL,
1091 expiry [2] IMPLICIT GeneralizedTime OPTIONAL,
1092 humanString-Language [3] IMPLICIT LanguageCode OPTIONAL,
1093 -- following not to occur for brief:
1094 otherInfo OtherInformation OPTIONAL}
1096 HumanString ::= SEQUENCE OF SEQUENCE {
1097 language [0] IMPLICIT LanguageCode OPTIONAL,
1098 text [1] IMPLICIT InternationalString}
1100 IconObject ::= SEQUENCE OF SEQUENCE{
1101 -- Note that the "SEQUENCE OF" is to allow alternative
1102 -- representations of the same Icon; it is not intended to allow
1104 bodyType [1] CHOICE{
1105 ianaType [1] IMPLICIT InternationalString,
1106 z3950type [2] IMPLICIT InternationalString,
1107 otherType [3] IMPLICIT InternationalString},
1108 content [2] IMPLICIT OCTET STRING}
1111 LanguageCode ::=InternationalString
1112 -- from ANSI/NISO Z39.53-1994
1114 ContactInfo ::= SEQUENCE {
1115 name [0] IMPLICIT InternationalString OPTIONAL,
1116 description [1] IMPLICIT HumanString OPTIONAL,
1117 address [2] IMPLICIT HumanString OPTIONAL,
1118 email [3] IMPLICIT InternationalString OPTIONAL,
1119 phone [4] IMPLICIT InternationalString OPTIONAL}
1121 NetworkAddress ::= CHOICE {
1122 internetAddress [0] IMPLICIT SEQUENCE {
1123 hostAddress [0] IMPLICIT
1124 InternationalString,
1125 port [1] IMPLICIT INTEGER},
1126 osiPresentationAddress [1] IMPLICIT SEQUENCE {
1127 pSel [0] IMPLICIT InternationalString,
1128 sSel [1] IMPLICIT InternationalString
1130 tSel [2] IMPLICIT InternationalString
1132 nSap [3] IMPLICIT InternationalString},
1133 other [2] IMPLICIT SEQUENCE {
1134 type [0] IMPLICIT InternationalString,
1135 address [1] IMPLICIT InternationalString}}
1138 AccessInfo ::= SEQUENCE {
1139 -- AccessInfo contains the fundmental information about what facilites
1140 -- are required to use this target or server. For example, if an origin
1141 -- can handle none of the record syntaxes a database can provide,
1142 -- it might choose not to access the database.
1143 queryTypesSupported [0] IMPLICIT SEQUENCE OF QueryTypeDetails OPTIONAL,
1144 diagnosticsSets [1] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1145 attributeSetIds [2] IMPLICIT SEQUENCE OF AttributeSetId OPTIONAL,
1146 schemas [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1147 recordSyntaxes [4] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1148 resourceChallenges [5] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1149 restrictedAccess [6] IMPLICIT AccessRestrictions OPTIONAL,
1150 costInfo [8] IMPLICIT Costs OPTIONAL,
1151 variantSets [9] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1152 elementSetNames [10] IMPLICIT SEQUENCE OF ElementSetName OPTIONAL,
1153 unitSystems [11] IMPLICIT SEQUENCE OF InternationalString}
1156 -- begin auxiliary definitions for AccessInfo
1157 -- Begin Query Details
1158 QueryTypeDetails ::= CHOICE {
1159 private [0] IMPLICIT PrivateCapabilities,
1160 rpn [1] IMPLICIT RpnCapabilities,
1161 iso8777 [2] IMPLICIT Iso8777Capabilities,
1162 z39-58 [100] IMPLICIT HumanString,
1163 erpn [101] IMPLICIT RpnCapabilities,
1164 rankedList [102] IMPLICIT HumanString}
1167 PrivateCapabilities ::= SEQUENCE {
1168 operators [0] IMPLICIT SEQUENCE OF SEQUENCE {
1169 operator [0] IMPLICIT InternationalString,
1170 description [1] IMPLICIT HumanString OPTIONAL } OPTIONAL,
1171 searchKeys [1] IMPLICIT SEQUENCE OF SearchKey OPTIONAL,
1172 -- field names that can be searched
1173 description [2] IMPLICIT SEQUENCE OF HumanString OPTIONAL }
1176 RpnCapabilities ::= SEQUENCE {
1177 operators [0] IMPLICIT SEQUENCE OF INTEGER OPTIONAL,
1178 -- Omitted means all operators are supported.
1179 resultSetAsOperandSupported [1] IMPLICIT BOOLEAN,
1180 restrictionOperandSupported [2] IMPLICIT BOOLEAN,
1181 proximity [3] IMPLICIT ProximitySupport OPTIONAL}
1183 Iso8777Capabilities ::= SEQUENCE {
1184 searchKeys [0] IMPLICIT SEQUENCE OF SearchKey,
1185 -- field names that may be searched
1186 restrictions [1] IMPLICIT HumanString OPTIONAL
1187 -- Omitted means supported, not specifying units.
1190 ProximitySupport ::= SEQUENCE {
1191 anySupport [0] IMPLICIT BOOLEAN,
1192 -- 'false' means no proximity support, in which case
1193 -- unitsSupported not supplied.
1194 unitsSupported [1] IMPLICIT SEQUENCE OF CHOICE{
1195 known [1] IMPLICIT INTEGER,
1196 -- values from KnownProximityUnit
1197 private [2] IMPLICIT SEQUENCE{
1198 unit [0] IMPLICIT INTEGER,
1199 description [1] HumanString OPTIONAL}}
1202 SearchKey ::= SEQUENCE {
1203 searchKey [0] IMPLICIT InternationalString,
1204 description [1] IMPLICIT HumanString OPTIONAL }
1205 -- End Query details
1209 AccessRestrictions ::= SEQUENCE OF SEQUENCE {
1210 accessType [0] INTEGER {
1214 specific-elements (3),
1215 extended-services (4),
1217 accessText [1] IMPLICIT HumanString OPTIONAL,
1218 accessChallenges [2] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL}
1221 Costs ::= SEQUENCE {
1222 connectCharge [0] IMPLICIT Charge OPTIONAL, -- Per-connection charge
1223 connectTime [1] IMPLICIT Charge OPTIONAL, -- Time-based charge
1224 displayCharge [2] IMPLICIT Charge OPTIONAL, -- Per-record charge
1225 searchCharge [3] IMPLICIT Charge OPTIONAL, -- Per-search charge
1226 subscriptCharge [4] IMPLICIT Charge OPTIONAL, -- Subscription charges
1227 otherCharges [5] IMPLICIT SEQUENCE OF SEQUENCE{ -- Other charges
1228 forWhat [1] IMPLICIT HumanString,
1229 charge [2] IMPLICIT Charge} OPTIONAL}
1231 Charge ::= SEQUENCE{
1232 cost [1] IMPLICIT IntUnit,
1233 perWhat [2] IMPLICIT Unit OPTIONAL,
1234 -- e.g. "second," "minute," "line," "record"...
1235 text [3] IMPLICIT HumanString OPTIONAL}
1236 -- End Auxiliary definitions for AccessInfo
1239 DatabaseList ::= SEQUENCE OF DatabaseName
1241 AttributeCombinations ::= SEQUENCE {
1242 defaultAttributeSet [0] IMPLICIT AttributeSetId,
1243 -- Default for the combinations. Also probably
1244 -- a good choice for the default
1245 -- in searches, but that isn't required.
1246 legalCombinations [1] IMPLICIT SEQUENCE OF AttributeCombination }
1249 AttributeCombination ::= SEQUENCE OF AttributeOccurrence
1250 -- An AttributeCombination is a pattern for legal combination of attributes
1253 AttributeOccurrence ::= SEQUENCE {
1254 -- An AttributeOccurrence lists the legal values for a
1255 -- specific attribute type in a combination.
1256 attributeSet [0] IMPLICIT AttributeSetId OPTIONAL,
1257 attributeType [1] IMPLICIT INTEGER,
1258 mustBeSupplied [2] IMPLICIT NULL OPTIONAL,
1259 attributeValues CHOICE {
1260 any-or-none [3] IMPLICIT NULL,
1261 -- All supported values are OK
1262 specific [4] IMPLICIT SEQUENCE OF
1264 -- Only these values allowed
1273 RecordSyntax-summary
1275 {z39-50-recordSyntax summary (103)} DEFINITIONS ::=
1277 IMPORTS OtherInformation, InternationalString FROM Z39-50-APDU-1995;
1279 BriefBib ::= SEQUENCE {
1280 title [1] IMPLICIT InternationalString,
1281 author [2] IMPLICIT InternationalString OPTIONAL,
1282 callNumber [3] IMPLICIT InternationalString OPTIONAL,
1283 recordType [4] IMPLICIT InternationalString OPTIONAL,
1284 bibliographicLevel [5] IMPLICIT InternationalString OPTIONAL,
1285 format [6] IMPLICIT SEQUENCE OF FormatSpec OPTIONAL,
1286 publicationPlace [7] IMPLICIT InternationalString OPTIONAL,
1287 publicationDate [8] IMPLICIT InternationalString OPTIONAL,
1288 targetSystemKey [9] IMPLICIT InternationalString OPTIONAL,
1289 satisfyingElement [10] IMPLICIT InternationalString OPTIONAL,
1290 rank [11] IMPLICIT INTEGER OPTIONAL,
1291 documentId [12] IMPLICIT InternationalString OPTIONAL,
1292 abstract [13] IMPLICIT InternationalString OPTIONAL,
1293 otherInfo OtherInformation OPTIONAL}
1295 FormatSpec ::= SEQUENCE {
1296 type [1] IMPLICIT InternationalString,
1297 size [2] IMPLICIT INTEGER OPTIONAL,
1298 bestPosn [3] IMPLICIT INTEGER OPTIONAL}
1305 RecordSyntax-generic -- For detailed semantics, see Appendix RET.
1306 {z39-50-recordSyntax grs-1 (105)} DEFINITIONS ::=
1309 IMPORTS IntUnit, Unit, InternationalString, StringOrNumeric, Term
1310 FROM Z39-50-APDU-1995;
1312 GenericRecord ::= SEQUENCE OF TaggedElement
1313 TaggedElement ::= SEQUENCE {
1314 tagType [1] IMPLICIT INTEGER OPTIONAL,
1315 -- If omitted, default should be supplied dynamically
1316 -- by tagSet-M; otherwise it should be statically
1317 -- specified by the schema.
1318 tagValue [2] StringOrNumeric,
1319 tagOccurrence [3] IMPLICIT INTEGER OPTIONAL,
1320 -- Occurrence within the database record, and
1321 -- relative to the parent. No default; if omitted,
1322 -- target not telling or it is irrelevant.
1323 content [4] ElementData,
1324 metaData [5] IMPLICIT ElementMetaData OPTIONAL,
1325 appliedVariant [6] IMPLICIT Variant OPTIONAL}
1327 ElementData ::= CHOICE{
1328 octets OCTET STRING,
1330 date GeneralizedTime,
1332 string InternationalString,
1333 trueOrFalse BOOLEAN,
1334 oid OBJECT IDENTIFIER,
1335 intUnit [1] IMPLICIT IntUnit,
1336 elementNotThere [2] IMPLICIT NULL, -- element requested but not there
1337 elementEmpty [3] IMPLICIT NULL, -- element there, but empty
1338 noDataRequested [4] IMPLICIT NULL, -- variant request said 'no data'
1339 diagnostic [5] IMPLICIT EXTERNAL,
1340 subtree [6] SEQUENCE OF TaggedElement
1341 -- recursive, for nested tags
1344 ElementMetaData ::= SEQUENCE{
1345 seriesOrder [1] IMPLICIT Order OPTIONAL,
1346 -- only for a non-leaf node
1347 usageRight [2] IMPLICIT Usage OPTIONAL,
1348 hits [3] IMPLICIT SEQUENCE OF HitVector OPTIONAL,
1349 displayName [4] IMPLICIT InternationalString OPTIONAL,
1350 -- name for element that origin can use for
1352 supportedVariants [5] IMPLICIT SEQUENCE OF Variant OPTIONAL,
1353 message [6] IMPLICIT InternationalString OPTIONAL,
1354 elementDescriptor [7] IMPLICIT OCTET STRING OPTIONAL,
1355 surrogateFor [8] IMPLICIT TagPath OPTIONAL,
1356 -- the retrieved element is a surrogate for the
1357 -- element given by this path
1358 surrogateElement [9] IMPLICIT TagPath OPTIONAL,
1359 -- the element given by this path is a
1360 -- surrogate for the retrieved element
1361 other [99] IMPLICIT EXTERNAL OPTIONAL}
1363 TagPath ::= SEQUENCE OF SEQUENCE{
1364 tagType [1] IMPLICIT INTEGER OPTIONAL,
1365 tagValue [2] StringOrNumeric,
1366 tagOccurrence [3] IMPLICIT INTEGER OPTIONAL}
1370 ascending [1] IMPLICIT BOOLEAN,
1371 -- "true" means monotonically increasing (i.e. non-
1372 -- decreasing); "false" means monotonically
1373 -- decreasing (i.e. non-increasing).
1374 order [2] IMPLICIT INTEGER
1375 -- Same as defined by 'elementOrdering' in tagSet-M,
1376 -- though this may be overidden by schema.
1379 Usage ::= SEQUENCE {
1380 type [1] IMPLICIT INTEGER{
1381 redistributable (1),
1382 -- Element is freely redistributable.
1384 -- Restriction contains statement.
1386 -- Restriction contains license pointer.
1388 restriction [2] IMPLICIT InternationalString OPTIONAL}
1390 HitVector ::= SEQUENCE{
1391 -- Each hit vector points to a fragment within the
1392 -- element, via location and/or token.
1393 satisfier Term OPTIONAL, -- sourceword, etc.
1394 offsetIntoElement [1] IMPLICIT IntUnit OPTIONAL,
1395 length [2] IMPLICIT IntUnit OPTIONAL,
1396 hitRank [3] IMPLICIT INTEGER OPTIONAL,
1397 targetToken [4] IMPLICIT OCTET STRING OPTIONAL
1398 -- Origin may use token subsequently within a
1399 -- variantRequest (in an elementRequest) to
1400 -- retrieve (or to refer to) the fragment.
1404 Variant ::= SEQUENCE{
1405 globalVariantSetId [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
1406 -- Applies to the triples below, when
1407 -- variantSetId omitted. If
1408 -- globalVariantSetId omitted, default applies.
1409 -- Default may be provided by the tagSet-M
1410 -- element defaultVariantSetId.
1411 triples [2] IMPLICIT SEQUENCE OF SEQUENCE{
1412 variantSetId [0] IMPLICIT OBJECT IDENTIFIER
1415 -- globalVariantSetId
1416 -- (above) applies, unless
1417 -- that too is omitted, in
1418 -- which case, default
1420 class [1] IMPLICIT INTEGER,
1421 type [2] IMPLICIT INTEGER,
1424 string InternationalString,
1425 octetString OCTET STRING,
1426 oid OBJECT IDENTIFIER,
1429 -- Following need context tags:
1430 unit [1] IMPLICIT Unit,
1431 valueAndUnit [2] IMPLICIT
1436 RecordSyntax-ESTaskPackage
1437 {z39-50-recordSyntax esTaskPackage (106)} DEFINITIONS ::=
1439 IMPORTS Permissions, InternationalString, IntUnit, DiagRec
1440 FROM Z39-50-APDU-1995;
1442 TaskPackage ::= SEQUENCE{
1443 packageType [1] IMPLICIT OBJECT IDENTIFIER,
1444 -- oid of specific ES definition
1445 packageName [2] IMPLICIT InternationalString OPTIONAL,
1446 userId [3] IMPLICIT InternationalString OPTIONAL,
1447 retentionTime [4] IMPLICIT IntUnit OPTIONAL,
1448 permissions [5] IMPLICIT Permissions OPTIONAL,
1449 description [6] IMPLICIT InternationalString OPTIONAL,
1450 targetReference [7] IMPLICIT OCTET STRING OPTIONAL,
1451 creationDateTime [8] IMPLICIT GeneralizedTime OPTIONAL,
1452 taskStatus [9] IMPLICIT INTEGER{
1457 packageDiagnostics [10] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
1458 taskSpecificParameters [11] IMPLICIT EXTERNAL
1459 -- Use oid for specific ES definition
1460 -- (same oid as packageType above)
1461 -- and select [2] "taskPackage."
1465 AccessControlFormat-Prompt-1
1466 {z39-50-accessControl prompt-1 (1)} DEFINITIONS ::=
1468 IMPORTS InternationalString, DiagRec FROM Z39-50-APDU-1995;
1470 PromptObject ::= CHOICE{
1471 challenge [1] IMPLICIT Challenge,
1472 response [2] IMPLICIT Response}
1474 Challenge ::= SEQUENCE OF SEQUENCE {
1475 promptId [1] PromptId,
1476 -- Target supplies a number (for an enumerated
1477 -- prompt) or string (for a non-enumerated
1478 -- prompt), for each prompt, and the origin
1479 -- returns it in response, for this prompt, so
1480 -- target may correlate the prompt response with
1482 defaultResponse [2] IMPLICIT InternationalString OPTIONAL,
1483 promptInfo [3] CHOICE{
1484 character [1] IMPLICIT InternationalString,
1485 encrypted [2] IMPLICIT Encryption} OPTIONAL,
1486 -- Information corresponding to an
1487 -- emumerated prompt. For example if 'type',
1488 -- within PromptId, is 'copyright', then
1489 -- promptInfo may contain a copyright
1491 regExpr [4] IMPLICIT InternationalString OPTIONAL,
1492 -- A regular expression that promptResponse should
1493 -- match. See IEEE 1003.2 Volume 1, Section 2.8
1494 -- "Regular Expression Notation." For example if
1495 -- promptId is "Year of publication," regExpr
1496 -- might be "19[89][0-9]|20[0-9][0-9]".
1497 responseRequired [5] IMPLICIT NULL OPTIONAL,
1498 allowedValues [6] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1499 -- e.g. promptId="Desired color"; allowed = 'red',
1501 shouldSave [7] IMPLICIT NULL OPTIONAL,
1502 -- Target recommends that origin save the data
1503 -- that it prompts from the user corresponding to
1504 -- this prompt, because it is likely to be
1505 -- requested again (so origin might not have to
1506 -- prompt the user next time).
1507 dataType [8] IMPLICIT INTEGER{
1513 boolean (6)} OPTIONAL,
1514 -- Target telling origin type of data it
1515 -- wants. E.g., if "date" is specified,
1516 -- presumably the origin will try to prompt
1517 -- something "date-like" from the user.
1518 diagnostic [9] IMPLICIT EXTERNAL OPTIONAL
1519 -- Intended for repeat requests when there is an
1520 -- error the origin should report to the user from
1521 -- previous attempt.
1525 Response ::= SEQUENCE OF SEQUENCE {
1526 promptId [1] PromptId,
1527 -- Corresponds to a prompt in the challenge, or
1528 -- may be unprompted, for example "newPassword."
1529 -- If unprompted, should be "enumerated."
1530 -- If this responds to a non-enumerated prompt,
1531 -- then nonEnumeratedPrompt should contain the
1532 -- prompt string from the challenge.
1533 promptResponse [2] CHOICE{
1534 string [1] IMPLICIT InternationalString,
1535 accept [2] IMPLICIT BOOLEAN,
1536 acknowledge [3] IMPLICIT NULL,
1537 diagnostic [4] DiagRec,
1538 encrypted [5] IMPLICIT Encryption}}
1541 PromptId ::= CHOICE{
1542 enummeratedPrompt [1] IMPLICIT SEQUENCE{
1543 type [1] IMPLICIT INTEGER{
1549 -- When type on Challenge is
1550 -- 'copyright', promptInfo has text of
1551 -- copyright message to be displayed
1552 -- verbatim to the user. If
1553 -- promptResponse indicates
1554 -- 'acceptance', this indicates the
1555 -- user has been shown, and accepted,
1556 -- the terms of the copyright. This is
1557 -- not intended to be legally binding,
1558 -- but provides a good-faith attempt
1559 -- on the part of the target to inform
1560 -- the user of the copyright.
1562 suggestedString [2] IMPLICIT
1563 InternationalString OPTIONAL},
1564 nonEnumeratedPrompt [2] IMPLICIT InternationalString}
1567 Encryption ::= SEQUENCE{
1568 cryptType [1] IMPLICIT OCTET STRING OPTIONAL,
1569 credential [2] IMPLICIT OCTET STRING OPTIONAL,
1570 --random number, SALT, or other factor
1571 data [3] IMPLICIT OCTET STRING}
1579 AccessControlFormat-des-1
1580 {z39-50-accessControlFormat des-1 (2)} DEFINITIONS ::=
1582 DES-RN-Object ::= CHOICE {
1583 challenge [1] IMPLICIT DRNType,
1584 response [2] IMPLICIT DRNType}
1586 DRNType ::= SEQUENCE{
1587 userId [1] IMPLICIT OCTET STRING OPTIONAL,
1588 salt [2] IMPLICIT OCTET STRING OPTIONAL,
1589 randomNumber [3] IMPLICIT OCTET STRING}
1596 AccessControlFormat-krb-1
1597 {z39-50-accessControlFormat krb-1 (3)} DEFINITIONS ::=
1599 IMPORTS InternationalString FROM Z39-50-APDU-1995;
1601 KRBObject ::= CHOICE {
1602 challenge [1] IMPLICIT KRBRequest,
1603 response [2] IMPLICIT KRBResponse}
1605 KRBRequest ::= SEQUENCE{
1606 service [1] IMPLICIT InternationalString,
1607 instance [2] IMPLICIT InternationalString OPTIONAL,
1608 realm [3] IMPLICIT InternationalString OPTIONAL
1609 -- target requests a ticket for the given service,
1610 -- instance, and realm
1613 KRBResponse ::= SEQUENCE{
1614 userid [1] IMPLICIT InternationalString OPTIONAL,
1615 ticket [2] IMPLICIT OCTET STRING
1616 -- origin responds with a ticket for the requested
1621 UserInfoFormat-searchResult-1
1622 {z39-50-userInfoFormat searchResult-1 (1)} DEFINITIONS ::=
1624 IMPORTS DatabaseName, Term, Query, IntUnit, InternationalString
1625 FROM Z39-50-APDU-1995;
1627 SearchInfoReport ::= SEQUENCE OF SEQUENCE{
1628 subqueryId [1] IMPLICIT InternationalString OPTIONAL,
1629 -- shorthand identifier of subquery
1630 fullQuery [2] IMPLICIT BOOLEAN,
1631 -- 'true' means this is the full query;
1632 -- 'false', a sub-query
1633 subqueryExpression [3] QueryExpression OPTIONAL,
1635 -- A subquery of the query as submitted. May
1636 -- be whole query; if so, "fullQuery" should
1638 subqueryInterpretation [4] QueryExpression OPTIONAL,
1640 -- how target interpreted subquery
1641 subqueryRecommendation [5] QueryExpression OPTIONAL,
1642 -- target-recommended alternative
1643 subqueryCount [6] IMPLICIT INTEGER OPTIONAL,
1644 -- Number of records for this subQuery,
1645 -- across all of the specified databases.
1646 -- (If during search, via resource control,
1647 -- number of records so far).
1648 subqueryWeight [7] IMPLICIT IntUnit OPTIONAL,
1649 -- relative weight of this subquery
1650 resultsByDB [8] IMPLICIT ResultsByDB OPTIONAL}
1652 ResultsByDB ::= SEQUENCE OF SEQUENCE{
1653 databases [1] CHOICE{
1654 all [1] IMPLICIT NULL,
1655 -- applies across all of the databases in
1657 list [2] IMPLICIT SEQUENCE OF DatabaseName
1658 -- applies across all databases in this
1661 count [2] IMPLICIT INTEGER OPTIONAL,
1662 -- Number of records for query component (and, as
1663 -- above, if during search, via resource control,
1664 -- number of records so far).
1665 resultSetName [3] IMPLICIT InternationalString OPTIONAL
1666 -- Target-assigned result set by which subQuery is
1667 -- available. Should not be provided unless
1668 -- processing for this query component is concluded
1669 -- (i.e., when this report comes during search, via
1670 -- resource control, as opposed to after search, via
1671 -- additionalSearchInfo).
1674 QueryExpression ::= CHOICE {
1675 term [1] IMPLICIT SEQUENCE{
1677 termComment [2] IMPLICIT InternationalString OPTIONAL},