1 Z39-50-APDU-1995 -- OID for this definition, assigned in OID.3.1, is {Z39-50 2 1}
3 BEGIN -- Z39.50 Maintenance Agency Official Text for ANSI/NISO Z39.50-1995 - July 1995
5 EXPORTS OtherInformation, Term, AttributeSetId, AttributeList, AttributeElement, ElementSetName, SortElement, DatabaseName,
6 CompSpec, Specification, Permissions, InternationalString, IntUnit, Unit, StringOrNumeric, Query, Records, ResultSetId,
7 DefaultDiagFormat, DiagRec, Segment;
11 initRequest [20] IMPLICIT InitializeRequest,
12 initResponse [21] IMPLICIT InitializeResponse,
13 searchRequest [22] IMPLICIT SearchRequest,
14 searchResponse [23] IMPLICIT SearchResponse,
15 presentRequest [24] IMPLICIT PresentRequest,
16 presentResponse [25] IMPLICIT PresentResponse,
17 deleteResultSetRequest [26] IMPLICIT DeleteResultSetRequest,
18 deleteResultSetResponse [27] IMPLICIT DeleteResultSetResponse,
19 accessControlRequest [28] IMPLICIT AccessControlRequest,
20 accessControlResponse [29] IMPLICIT AccessControlResponse,
21 resourceControlRequest [30] IMPLICIT ResourceControlRequest,
22 resourceControlResponse [31] IMPLICIT ResourceControlResponse,
23 triggerResourceControlRequest [32] IMPLICIT TriggerResourceControlRequest,
24 resourceReportRequest [33] IMPLICIT ResourceReportRequest,
25 resourceReportResponse [34] IMPLICIT ResourceReportResponse,
26 scanRequest [35] IMPLICIT ScanRequest,
27 scanResponse [36] IMPLICIT ScanResponse,
28 -- [37] through [42] reserved
29 sortRequest [43] IMPLICIT SortRequest,
30 sortResponse [44] IMPLICIT SortResponse,
31 segmentRequest [45] IMPLICIT Segment,
32 extendedServicesRequest [46] IMPLICIT ExtendedServicesRequest,
33 extendedServicesResponse [47] IMPLICIT ExtendedServicesResponse,
34 close [48] IMPLICIT Close,
35 duplicateDetectionRequest [49] IMPLICIT DuplicateDetectionRequest,
36 duplicateDetectionResponse [50] IMPLICIT DuplicateDetectionResponse}
41 InitializeRequest ::= SEQUENCE{
42 referenceId ReferenceId OPTIONAL,
43 protocolVersion ProtocolVersion,
45 preferredMessageSize [5] IMPLICIT INTEGER,
46 exceptionalRecordSize [6] IMPLICIT INTEGER,
47 idAuthentication [7] IdAuthentication OPTIONAL, -- see note below
48 implementationId [110] IMPLICIT InternationalString OPTIONAL,
49 implementationName [111] IMPLICIT InternationalString OPTIONAL,
50 implementationVersion [112] IMPLICIT InternationalString OPTIONAL,
51 userInformationField [11] EXTERNAL OPTIONAL,
52 otherInfo OtherInformation OPTIONAL}
54 -- For idAuthentication, the type ANY is retained for compatibility with earlier versions.
55 -- For interoperability, the following is recommended:
60 groupId [0] IMPLICIT InternationalString OPTIONAL,
61 userId [1] IMPLICIT InternationalString OPTIONAL,
62 password [2] IMPLICIT InternationalString OPTIONAL },
66 -- May use access control formats for 'other'. See Appendix 7 ACC.
68 InitializeResponse ::= SEQUENCE{
69 referenceId ReferenceId OPTIONAL,
70 protocolVersion ProtocolVersion,
72 preferredMessageSize [5] IMPLICIT INTEGER,
73 exceptionalRecordSize [6] IMPLICIT INTEGER,
74 result [12] IMPLICIT BOOLEAN, -- reject = FALSE; Accept = TRUE
75 implementationId [110] IMPLICIT InternationalString OPTIONAL,
76 implementationName [111] IMPLICIT InternationalString OPTIONAL,
77 implementationVersion [112] IMPLICIT InternationalString OPTIONAL,
78 userInformationField [11] EXTERNAL OPTIONAL,
79 otherInfo OtherInformation OPTIONAL}
80 -- Begin auxiliary definitions for Init PDUs
81 ProtocolVersion ::= [3] IMPLICIT BIT STRING{
82 version-1 (0), -- This bit should always be set, but does not
83 -- correspond to any Z39.50 version.
84 version-2 (1), -- "Version 2 supported."
85 -- This bit should always be set.
86 version-3 (2) -- "Version 3 supported."
87 -- Values higher than 'version-3' should be ignored. Both the Initialize request and Initialize Response APDUs
88 -- include a value string corresponding to the supported versions. The highest common version is selected
89 -- for use. If there are no versions in common, "Result" in the Init Response should indicate "reject."
90 -- Note: Versions 1 and 2 are identical. Systems supporting version 2 should indicate support for version
91 -- 1 as well, for interoperability with systems that indicate support for version 1 only (e.g. ISO 10163-1991
94 Options ::= [4] IMPLICIT BIT STRING{
99 triggerResourceCtrl (4),
105 extendedServices (10),
106 level-1Segmentation (11),
107 level-2Segmentation (12),
108 concurrentOperations (13),
109 namedResultSets (14),
112 negotiationModel (17),
113 duplicateDetection (18),
118 -- end auxiliary definitions for Init PDUs
122 SearchRequest ::= SEQUENCE{
123 referenceId ReferenceId OPTIONAL,
124 smallSetUpperBound [13] IMPLICIT INTEGER,
125 largeSetLowerBound [14] IMPLICIT INTEGER,
126 mediumSetPresentNumber [15] IMPLICIT INTEGER,
127 replaceIndicator [16] IMPLICIT BOOLEAN,
128 resultSetName [17] IMPLICIT InternationalString,
129 databaseNames [18] IMPLICIT SEQUENCE OF DatabaseName,
130 smallSetElementSetNames [100] ElementSetNames OPTIONAL,
131 mediumSetElementSetNames [101] ElementSetNames OPTIONAL,
132 preferredRecordSyntax [104] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
134 -- Following two parameters may be used only if version 3 is in force.
135 additionalSearchInfo [203] IMPLICIT OtherInformation OPTIONAL,
136 otherInfo OtherInformation OPTIONAL}
142 type-1 [1] IMPLICIT RPNQuery,
143 type-2 [2] OCTET STRING,
144 type-100 [100] OCTET STRING,
145 type-101 [101] IMPLICIT RPNQuery,
146 type-102 [102] OCTET STRING,
147 type-104 [104] IMPLICIT EXTERNAL
150 -- Definitions for RPN query
151 RPNQuery ::= SEQUENCE{
152 attributeSet AttributeSetId,
155 RPNStructure ::= CHOICE{
157 rpnRpnOp [1] IMPLICIT SEQUENCE{
162 attrTerm AttributesPlusTerm,
163 resultSet ResultSetId,
164 -- If version 2 is in force:
165 -- - If query type is 1, one of the above two must be chosen;
166 -- - resultAttr (below) may be used only if query type is 101.
167 resultAttr ResultSetPlusAttributes}
169 AttributesPlusTerm ::= [102] IMPLICIT SEQUENCE{
170 attributes AttributeList,
172 ResultSetPlusAttributes ::= [214] IMPLICIT SEQUENCE{
173 resultSet ResultSetId,
174 attributes AttributeList}
175 AttributeList ::= [44] IMPLICIT SEQUENCE OF AttributeElement
178 general [45] IMPLICIT OCTET STRING,
179 -- values below may be used only if version 3 is in force
180 numeric [215] IMPLICIT INTEGER,
181 characterString [216] IMPLICIT InternationalString,
182 oid [217] IMPLICIT OBJECT IDENTIFIER,
183 dateTime [218] IMPLICIT GeneralizedTime,
184 external [219] IMPLICIT EXTERNAL,
185 integerAndUnit [220] IMPLICIT IntUnit,
186 null [221] IMPLICIT NULL}
188 Operator ::= [46] CHOICE{
189 and [0] IMPLICIT NULL,
190 or [1] IMPLICIT NULL,
191 and-not [2] IMPLICIT NULL,
192 -- If version 2 is in force:
193 -- - For query type 1, one of the above three must be chosen;
194 -- - prox (below) may be used only if query type is 101.
195 prox [3] IMPLICIT ProximityOperator}
196 AttributeElement ::= SEQUENCE{
197 attributeSet [1] IMPLICIT AttributeSetId OPTIONAL,
198 -- Must be omitted if version 2 is in force.
199 -- If included, overrides value of attributeSet
200 -- in RPNQuery above, but only for this attribute.
201 attributeType [120] IMPLICIT INTEGER,
202 attributeValue CHOICE{
203 numeric [121] IMPLICIT INTEGER,
204 -- If version 2 is in force,
205 -- Must select 'numeric' for attributeValue.
207 complex [224] IMPLICIT SEQUENCE{
208 list [1] IMPLICIT SEQUENCE OF StringOrNumeric,
209 semanticAction [2] IMPLICIT SEQUENCE OF INTEGER OPTIONAL}}}
212 ProximityOperator ::= SEQUENCE{
213 exclusion [1] IMPLICIT BOOLEAN OPTIONAL,
214 distance [2] IMPLICIT INTEGER,
215 ordered [3] IMPLICIT BOOLEAN,
216 relationType [4] IMPLICIT INTEGER{
220 greaterThanOrEqual (4),
223 proximityUnitCode [5] CHOICE{
224 known [1] IMPLICIT KnownProximityUnit,
225 private [2] IMPLICIT INTEGER}}
227 KnownProximityUnit ::= INTEGER{
238 byte (11) -- Version 3 only
240 -- End definitions for RPN Query
243 SearchResponse ::= SEQUENCE{
244 referenceId ReferenceId OPTIONAL,
245 resultCount [23] IMPLICIT INTEGER,
246 numberOfRecordsReturned [24] IMPLICIT INTEGER,
247 nextResultSetPosition [25] IMPLICIT INTEGER,
248 searchStatus [22] IMPLICIT BOOLEAN,
249 resultSetStatus [26] IMPLICIT INTEGER{
255 presentStatus PresentStatus OPTIONAL,
256 records Records OPTIONAL,
257 -- Following two parameters may be used only if version 3 is in force.
258 additionalSearchInfo [203] IMPLICIT OtherInformation OPTIONAL,
259 otherInfo OtherInformation OPTIONAL}
261 PresentRequest ::= SEQUENCE{
262 referenceId ReferenceId OPTIONAL,
263 resultSetId ResultSetId,
264 resultSetStartPoint [30] IMPLICIT INTEGER,
265 numberOfRecordsRequested [29] IMPLICIT INTEGER,
266 additionalRanges [212] IMPLICIT SEQUENCE OF Range OPTIONAL,
267 -- additionalRanges may be included only if version 3 is in force.
268 recordComposition CHOICE{
269 simple [19] ElementSetNames,
270 -- must choose 'simple' if version 2 is in force
271 complex [209] IMPLICIT CompSpec} OPTIONAL,
272 preferredRecordSyntax [104] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
273 maxSegmentCount [204] IMPLICIT INTEGER OPTIONAL, -- level 1 or 2
274 maxRecordSize [206] IMPLICIT INTEGER OPTIONAL, -- level 2 only
275 maxSegmentSize [207] IMPLICIT INTEGER OPTIONAL, -- level 2 only
276 otherInfo OtherInformation OPTIONAL}
278 Segment ::= SEQUENCE{
279 -- Segment PDU may only be used when version 3 is in force,
280 -- and only when segmentation is in effect.
281 referenceId ReferenceId OPTIONAL,
282 numberOfRecordsReturned [24] IMPLICIT INTEGER,
283 segmentRecords [0] IMPLICIT SEQUENCE OF NamePlusRecord,
284 otherInfo OtherInformation OPTIONAL}
286 PresentResponse ::= SEQUENCE{
287 referenceId ReferenceId OPTIONAL,
288 numberOfRecordsReturned [24] IMPLICIT INTEGER,
289 nextResultSetPosition [25] IMPLICIT INTEGER,
290 presentStatus PresentStatus,
291 records Records OPTIONAL,
292 otherInfo OtherInformation OPTIONAL}
293 -- begin auxiliary definitions for Search and Present APDUs
295 -- begin definition of records
297 responseRecords [28] IMPLICIT SEQUENCE OF NamePlusRecord,
298 nonSurrogateDiagnostic [130] IMPLICIT DefaultDiagFormat,
299 multipleNonSurDiagnostics [205] IMPLICIT SEQUENCE OF DiagRec}
301 NamePlusRecord ::= SEQUENCE{
302 name [0] IMPLICIT DatabaseName OPTIONAL,
304 retrievalRecord [1] EXTERNAL,
305 surrogateDiagnostic [2] DiagRec,
306 -- Must select one of the above two, retrievalRecord or
307 -- surrogateDiagnostic, unless 'level 2 segmentation' is in effect.
308 startingFragment [3] FragmentSyntax,
309 intermediateFragment [4] FragmentSyntax,
310 finalFragment [5] FragmentSyntax}}
311 FragmentSyntax ::= CHOICE{
312 externallyTagged EXTERNAL,
313 notExternallyTagged OCTET STRING}
316 defaultFormat DefaultDiagFormat,
317 -- Must choose defaultFormat if version 2 is in effect.
318 externallyDefined EXTERNAL}
320 DefaultDiagFormat::= SEQUENCE{
321 diagnosticSetId OBJECT IDENTIFIER,
324 v2Addinfo VisibleString, -- version 2
325 v3Addinfo InternationalString -- version 3
327 -- end definition of records
329 startingPosition [1] IMPLICIT INTEGER,
330 numberOfRecords [2] IMPLICIT INTEGER}
332 ElementSetNames ::= CHOICE {
333 genericElementSetName [0] IMPLICIT InternationalString,
334 databaseSpecific [1] IMPLICIT SEQUENCE OF SEQUENCE{
338 PresentStatus ::= [27] IMPLICIT INTEGER{
346 -- begin definition of composition specification
347 CompSpec ::= SEQUENCE{
348 selectAlternativeSyntax [1] IMPLICIT BOOLEAN,
349 -- See comment for recordSyntax, below.
350 generic [2] IMPLICIT Specification OPTIONAL,
351 dbSpecific [3] IMPLICIT SEQUENCE OF SEQUENCE{
353 spec [2] IMPLICIT Specification} OPTIONAL,
354 -- At least one of generic and dbSpecific must occur, and both may occur. If both, then for
355 -- any record not in the list of databases within dbSpecific, generic applies.
356 recordSyntax [4] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL
357 -- For each record, the target selects the first record syntax
358 -- in this list that it can support. If the list is exhausted, the
359 -- target may select an alternative syntax if
360 -- selectAlternativeSyntax is 'true'.
362 Specification ::= SEQUENCE{
364 oid [1] IMPLICIT OBJECT IDENTIFIER,
365 uri [300] IMPLICIT InternationalString
367 elementSpec [2] CHOICE{
368 elementSetName [1] IMPLICIT InternationalString,
369 externalEspec [2] IMPLICIT EXTERNAL} OPTIONAL}
370 -- end definition of composition specification
371 -- end auxiliary definitions for search and response APDUs
374 DeleteResultSetRequest ::= SEQUENCE{
375 referenceId ReferenceId OPTIONAL,
376 deleteFunction [32] IMPLICIT INTEGER{
379 resultSetList SEQUENCE OF ResultSetId OPTIONAL,
380 otherInfo OtherInformation OPTIONAL}
382 DeleteResultSetResponse ::= SEQUENCE{
383 referenceId ReferenceId OPTIONAL,
384 deleteOperationStatus [0] IMPLICIT DeleteSetStatus,
385 deleteListStatuses [1] IMPLICIT ListStatuses OPTIONAL,
386 numberNotDeleted [34] IMPLICIT INTEGER OPTIONAL,
387 bulkStatuses [35] IMPLICIT ListStatuses OPTIONAL,
388 deleteMessage [36] IMPLICIT InternationalString OPTIONAL,
389 otherInfo OtherInformation OPTIONAL}
390 ListStatuses ::= SEQUENCE OF SEQUENCE{
392 status DeleteSetStatus}
394 DeleteSetStatus ::= [33] IMPLICIT INTEGER{
396 resultSetDidNotExist (1),
397 previouslyDeletedByTarget (2),
398 systemProblemAtTarget (3),
399 accessNotAllowed (4),
400 resourceControlAtOrigin (5),
401 resourceControlAtTarget (6),
402 bulkDeleteNotSupported (7),
403 notAllRsltSetsDeletedOnBulkDlte (8),
404 notAllRequestedResultSetsDeleted (9),
408 --Access- and Resource-control APDUs
410 AccessControlRequest ::= SEQUENCE{
411 referenceId ReferenceId OPTIONAL,
412 securityChallenge CHOICE{
413 simpleForm [37] IMPLICIT OCTET STRING,
414 externallyDefined [0] EXTERNAL},
415 otherInfo OtherInformation OPTIONAL}
417 AccessControlResponse ::= SEQUENCE{
418 referenceId ReferenceId OPTIONAL,
419 securityChallengeResponse CHOICE{
420 simpleForm [38] IMPLICIT OCTET STRING,
421 externallyDefined [0] EXTERNAL} OPTIONAL,
422 -- Optional only in version 3; mandatory in version 2. If
423 -- omitted (in version 3) then diagnostic must occur.
424 diagnostic [223] DiagRec OPTIONAL, -- Version 3 only.
425 otherInfo OtherInformation OPTIONAL}
429 ResourceControlRequest ::= SEQUENCE{
430 referenceId ReferenceId OPTIONAL,
431 suspendedFlag [39] IMPLICIT BOOLEAN OPTIONAL,
432 resourceReport [40] ResourceReport OPTIONAL,
433 partialResultsAvailable [41] IMPLICIT INTEGER{
437 responseRequired [42] IMPLICIT BOOLEAN,
438 triggeredRequestFlag [43] IMPLICIT BOOLEAN OPTIONAL,
439 otherInfo OtherInformation OPTIONAL}
442 ResourceControlResponse ::= SEQUENCE{
443 referenceId ReferenceId OPTIONAL,
444 continueFlag [44] IMPLICIT BOOLEAN,
445 resultSetWanted [45] IMPLICIT BOOLEAN OPTIONAL,
446 otherInfo OtherInformation OPTIONAL}
450 TriggerResourceControlRequest ::= SEQUENCE{
451 referenceId ReferenceId OPTIONAL,
452 requestedAction [46] IMPLICIT INTEGER{
456 prefResourceReportFormat [47] IMPLICIT ResourceReportId OPTIONAL,
457 resultSetWanted [48] IMPLICIT BOOLEAN OPTIONAL,
458 otherInfo OtherInformation OPTIONAL}
462 ResourceReportRequest ::= SEQUENCE{
463 referenceId ReferenceId OPTIONAL,
464 opId [210] IMPLICIT ReferenceId OPTIONAL,
465 prefResourceReportFormat [49] IMPLICIT ResourceReportId OPTIONAL,
466 otherInfo OtherInformation OPTIONAL}
468 ResourceReportResponse ::= SEQUENCE{
469 referenceId ReferenceId OPTIONAL,
470 resourceReportStatus [50] IMPLICIT INTEGER{
479 resourceReport [51] ResourceReport OPTIONAL,
480 otherInfo OtherInformation OPTIONAL}
482 ResourceReport ::= EXTERNAL
483 ResourceReportId ::= OBJECT IDENTIFIER
486 ScanRequest ::= SEQUENCE{
487 referenceId ReferenceId OPTIONAL,
488 databaseNames [3] IMPLICIT SEQUENCE OF DatabaseName,
489 attributeSet AttributeSetId OPTIONAL,
490 termListAndStartPoint AttributesPlusTerm,
491 stepSize [5] IMPLICIT INTEGER OPTIONAL,
492 numberOfTermsRequested [6] IMPLICIT INTEGER,
493 preferredPositionInResponse [7] IMPLICIT INTEGER OPTIONAL,
494 otherInfo OtherInformation OPTIONAL}
496 ScanResponse ::= SEQUENCE{
497 referenceId ReferenceId OPTIONAL,
498 stepSize [3] IMPLICIT INTEGER OPTIONAL,
499 scanStatus [4] IMPLICIT INTEGER {
507 numberOfEntriesReturned [5] IMPLICIT INTEGER,
508 positionOfTerm [6] IMPLICIT INTEGER OPTIONAL,
509 entries [7] IMPLICIT ListEntries OPTIONAL,
510 attributeSet [8] IMPLICIT AttributeSetId OPTIONAL,
511 otherInfo OtherInformation OPTIONAL}
513 -- begin auxiliary definitions for Scan
514 ListEntries ::= SEQUENCE{
515 entries [1] IMPLICIT SEQUENCE OF Entry OPTIONAL,
516 nonsurrogateDiagnostics [2] IMPLICIT SEQUENCE OF DiagRec OPTIONAL
517 -- At least one of entries and nonsurrogateDiagnostics must occur
521 termInfo [1] IMPLICIT TermInfo,
522 surrogateDiagnostic [2] DiagRec}
524 TermInfo ::= SEQUENCE {
526 displayTerm [0] IMPLICIT InternationalString OPTIONAL,
527 -- Presence of displayTerm means that term is not considered by
528 -- the target to be suitable for display, and displayTerm should
529 -- instead be displayed. 'term' is the actual term in the term list;
530 -- 'displayTerm' is for display purposes only, and is not an actual
531 -- term in the term list.
532 suggestedAttributes AttributeList OPTIONAL,
533 alternativeTerm [4] IMPLICIT SEQUENCE OF AttributesPlusTerm OPTIONAL,
534 globalOccurrences [2] IMPLICIT INTEGER OPTIONAL,
535 byAttributes [3] IMPLICIT OccurrenceByAttributes OPTIONAL,
536 otherTermInfo OtherInformation OPTIONAL}
538 OccurrenceByAttributes ::= SEQUENCE OF SEQUENCE{
539 attributes [1] AttributeList,
542 byDatabase [3] IMPLICIT SEQUENCE OF SEQUENCE{
544 num [1] IMPLICIT INTEGER OPTIONAL,
545 otherDbInfo OtherInformation OPTIONAL}} OPTIONAL,
546 otherOccurInfo OtherInformation OPTIONAL}
547 -- end auxiliary definitions for Scan
550 SortRequest ::= SEQUENCE{
551 referenceId ReferenceId OPTIONAL,
552 inputResultSetNames [3] IMPLICIT SEQUENCE OF InternationalString,
553 sortedResultSetName [4] IMPLICIT InternationalString,
554 sortSequence [5] IMPLICIT SEQUENCE OF SortKeySpec,
555 -- order of occurrence is from major to minor
556 otherInfo OtherInformation OPTIONAL}
558 SortResponse ::= SEQUENCE{
559 referenceId ReferenceId OPTIONAL,
560 sortStatus [3] IMPLICIT INTEGER{
564 resultSetStatus [4] IMPLICIT INTEGER{
569 diagnostics [5] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
570 resultCount [6] IMPLICIT INTEGER OPTIONAL,
571 otherInfo OtherInformation OPTIONAL}
573 -- begin auxiliary definitions for Sort
574 SortKeySpec ::= SEQUENCE{
575 sortElement SortElement,
576 sortRelation [1] IMPLICIT INTEGER{
579 ascendingByFrequency (3),
580 descendingByfrequency (4)},
581 caseSensitivity [2] IMPLICIT INTEGER{
583 caseInsensitive (1)},
584 missingValueAction [3] CHOICE{
585 abort [1] IMPLICIT NULL,
586 null [2] IMPLICIT NULL,
587 --supply a null value for missing value
588 missingValueData [3] IMPLICIT OCTET STRING} OPTIONAL}
590 SortElement ::= CHOICE{
592 datbaseSpecific [2] IMPLICIT SEQUENCE OF SEQUENCE{
593 databaseName DatabaseName,
597 sortfield [0] IMPLICIT InternationalString,
598 -- An element, element-group-tag, or alias supported by the target
599 -- and denoting a set of elements associated with each record.
600 elementSpec [1] IMPLICIT Specification,
601 sortAttributes [2] IMPLICIT SEQUENCE{
604 -- end auxiliary definitions for sort
608 -- Extended Service APDUs
609 ExtendedServicesRequest ::= SEQUENCE{
610 referenceId ReferenceId OPTIONAL,
611 function [3] IMPLICIT INTEGER {
615 packageType [4] IMPLICIT OBJECT IDENTIFIER,
616 packageName [5] IMPLICIT InternationalString OPTIONAL,
617 -- PackageName mandatory for 'modify' or 'delete'; optional for
618 -- 'create'. Following four parameters mandatory for 'create'; should
619 -- be included on 'modify' if being modified; not needed on 'delete'.
620 userId [6] IMPLICIT InternationalString OPTIONAL,
621 retentionTime [7] IMPLICIT IntUnit OPTIONAL,
622 permissions [8] IMPLICIT Permissions OPTIONAL,
623 description [9] IMPLICIT InternationalString OPTIONAL,
625 -- (ExtendedServiceRequest APDU continued)
626 taskSpecificParameters [10] IMPLICIT EXTERNAL OPTIONAL,
627 -- Mandatory for 'create'; included on 'modify' if specific
628 -- parameters being modified; not necessary on 'delete'. For the
629 -- 'EXTERNAL,' use OID of specific ES definition and select
630 -- CHOICE [1]: 'esRequest'.
631 waitAction [11] IMPLICIT INTEGER{
635 dontReturnPackage (4)},
636 elements ElementSetName OPTIONAL,
637 otherInfo OtherInformation OPTIONAL}
640 ExtendedServicesResponse ::= SEQUENCE{
641 referenceId ReferenceId OPTIONAL,
642 operationStatus [3] IMPLICIT INTEGER{
646 diagnostics [4] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
647 taskPackage [5] IMPLICIT EXTERNAL OPTIONAL,
648 -- Use OID: {Z39-50-recordSyntax (106)} and corresponding
649 -- syntax. For the EXTERNAL, 'taskSpecific,' within that
650 -- definition, use OID of the specific es, and choose [2],
652 otherInfo OtherInformation OPTIONAL}
654 Permissions ::= SEQUENCE OF SEQUENCE{
655 userId [1] IMPLICIT InternationalString OPTIONAL,
656 allowableFunctions [2] IMPLICIT SEQUENCE OF INTEGER{
659 modifyPermissions (3),
664 referenceId ReferenceId OPTIONAL, -- See 3.2.11.1.5.
665 closeReason CloseReason,
666 diagnosticInformation [3] IMPLICIT InternationalString OPTIONAL,
667 resourceReportFormat [4] IMPLICIT ResourceReportId OPTIONAL,
668 -- For use by origin only, and only on Close request;
669 -- origin requests target to include report in response.
670 resourceReport [5] ResourceReport OPTIONAL,
671 -- For use by target only, unilaterally on Close request;
672 -- on Close response may be unilateral or in response
673 -- to origin request.
674 otherInfo OtherInformation OPTIONAL}
676 CloseReason ::= [211] IMPLICIT INTEGER{
682 securityViolation (5),
688 --Duplicate detection APDUs
689 DuplicateDetectionRequest ::= SEQUENCE {
690 referenceId ReferenceId OPTIONAL,
691 inputResultSetIds [3] IMPLICIT SEQUENCE OF InternationalString,
692 outputResultSetName [4] IMPLICIT InternationalString,
693 applicablePortionOfRecord [5] IMPLICIT EXTERNAL OPTIONAL,
694 duplicateDetectionCriteria [6] IMPLICIT SEQUENCE OF
695 DuplicateDetectionCriterion OPTIONAL,
696 clustering [7] IMPLICIT BOOLEAN OPTIONAL,
697 -- 'true' means "clustered".
698 -- This parameter may be omitted
699 -- only if retentionCriteria CHOICE is
700 -- 'numberOfEntries' and its value is 1.
701 retentionCriteria [8] IMPLICIT SEQUENCE OF
703 sortCriteria [9] IMPLICIT SEQUENCE OF
704 SortCriterion OPTIONAL,
705 otherInfo OtherInformation OPTIONAL}
707 DuplicateDetectionCriterion ::= CHOICE{
708 levelOfMatch [1] IMPLICIT INTEGER,
709 -- a percentage; 1-100.
710 caseSensitive [2] IMPLICIT NULL,
711 punctuationSensitive [3] IMPLICIT NULL,
712 regularExpression [4] IMPLICIT EXTERNAL,
713 rsDuplicates [5] IMPLICIT NULL
714 -- values 6-100 reserved for future assignment.
717 RetentionCriterion ::= CHOICE{
718 numberOfEntries [1] IMPLICIT INTEGER,
720 percentOfEntries [2] IMPLICIT INTEGER,
722 duplicatesOnly [3] IMPLICIT NULL,
723 -- should not be chosen
724 -- if clustering is 'true'
725 discardRsDuplicates [4] IMPLICIT NULL
726 -- values 5-100 reserved for future assignment.
729 SortCriterion ::= CHOICE{
730 mostComprehensive [1] IMPLICIT NULL,
731 leastConmprehensive [2] IMPLICIT NULL,
732 mostRecent [3] IMPLICIT NULL,
733 oldest [4] IMPLICIT NULL,
734 leastCost [5] IMPLICIT NULL,
735 preferredDatabases [6] IMPLICIT
736 SEQUENCE OF InternationalString
737 -- values 7-100 reserved for future assignment.
740 DuplicateDetectionResponse ::= SEQUENCE {
741 referenceId ReferenceId OPTIONAL,
742 status [3] IMPLICIT INTEGER{
745 resultSetCount [4] IMPLICIT INTEGER OPTIONAL,
746 diagnostics [5] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
747 otherInfo OtherInformation OPTIONAL}
749 -- Global auxiliary definitions
750 ReferenceId ::= [2] IMPLICIT OCTET STRING
751 ResultSetId ::= [31] IMPLICIT InternationalString
752 ElementSetName ::= [103] IMPLICIT InternationalString
753 DatabaseName ::= [105] IMPLICIT InternationalString
754 AttributeSetId ::= OBJECT IDENTIFIER
758 OtherInformation ::= [201] IMPLICIT SEQUENCE OF SEQUENCE{
759 category [1] IMPLICIT InfoCategory OPTIONAL,
761 characterInfo [2] IMPLICIT InternationalString,
762 binaryInfo [3] IMPLICIT OCTET STRING,
763 externallyDefinedInfo [4] IMPLICIT EXTERNAL,
764 oid [5] IMPLICIT OBJECT IDENTIFIER}}
766 InfoCategory ::= SEQUENCE{
767 categoryTypeId [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
768 categoryValue [2] IMPLICIT INTEGER}
772 -- IntUnit is used when value and unit are supplied together. Unit, alone, is used when just
773 -- specifying a unit (without a value). For example, IntUnit is used in Term, in an RPNQuery, or
774 -- it can be the datatype of an element within a retrieval record. Unit (alone) would be used in an
775 -- element request, when requesting data be returned according to a particular unit.
777 IntUnit ::= SEQUENCE{
778 value [1] IMPLICIT INTEGER,
779 unitUsed [2] IMPLICIT Unit}
782 unitSystem [1] InternationalString OPTIONAL, -- e.g. 'SI'
783 unitType [2] StringOrNumeric OPTIONAL, -- e.g. 'mass'
784 unit [3] StringOrNumeric OPTIONAL, -- e.g. 'kilograms'
785 scaleFactor [4] IMPLICIT INTEGER OPTIONAL -- e.g. 9 means 10**9
789 InternationalString ::= GeneralString
790 -- When version 2 is in force, this collapses to VisibleString. That is, only characters in the
791 -- visibleString repertoire may be used. (Datatype compatibility with version 2 is not affected,
792 -- because references are IMPLICIT.) When version 3 is in force, the semantics of the
793 -- GeneralString content may be altered by negotiation during initialization. If no such
794 -- negotiation is in effect, then GeneralString semantics are in force.
796 StringOrNumeric ::= CHOICE{
797 string [1] IMPLICIT InternationalString,
798 numeric [2] IMPLICIT INTEGER}
800 END -- IR DEFINITIONS
804 DiagnosticFormatDiag1
805 {Z39-50-diagnosticFormat diag-1 (2)} DEFINITIONS ::=
807 IMPORTS Term, Specification, AttributeList, SortElement, DatabaseName,
808 DefaultDiagFormat, InternationalString FROM Z39-50-APDU-1995;
811 DiagnosticFormat ::= SEQUENCE OF SEQUENCE{
812 diagnostic [1] CHOICE{
813 defaultDiagRec [1] IMPLICIT DefaultDiagFormat,
814 explicitDiagnostic [2] DiagFormat} OPTIONAL,
815 message [2] IMPLICIT InternationalString OPTIONAL}
818 DiagFormat ::= CHOICE{
820 tooMany [1000] IMPLICIT SEQUENCE{
821 tooManyWhat [1] IMPLICIT INTEGER{
824 booleanOperators (3),
825 incompleteSubfields (4),
827 recordsRetrieved (6),
828 dataBasesSpecified (7),
829 resultSetsCreated (8),
830 indexTermsProcessed (9)},
831 max [2] IMPLICIT INTEGER OPTIONAL},
839 badSpec [1001] IMPLICIT SEQUENCE{ -- element set name or specification
840 spec [1] IMPLICIT Specification, -- esn or element spec not supported
841 db [2] IMPLICIT DatabaseName OPTIONAL,
842 -- if db specified, above spec not supported for db; otherwise,
843 -- spec not supported period.
844 goodOnes [3] IMPLICIT SEQUENCE OF Specification OPTIONAL
845 -- target supplies ones that are supported
849 dbUnavail [1002] IMPLICIT SEQUENCE{ -- database unavailable
850 db [1] IMPLICIT DatabaseName,
851 why [2] IMPLICIT SEQUENCE{
852 reasonCode [1] IMPLICIT INTEGER{
854 existsButUnavail (1),
856 accessDenied (3)} OPTIONAL,
857 message [2] IMPLICIT InternationalString OPTIONAL}},
860 unSupOp [1003] IMPLICIT INTEGER{ -- unsupported operator
867 attribute [1004] IMPLICIT SEQUENCE{
868 -- Applies for unsupported attribute set, attribute type,
869 -- attribute value, or term (for a given attribute type or value).
871 id [1] IMPLICIT OBJECT IDENTIFIER,
872 -- if only "id" occurs, then attribute set is not supported
873 type [2] IMPLICIT INTEGER OPTIONAL,
874 -- must occur if value occurs.
875 value [3] IMPLICIT INTEGER OPTIONAL,
876 -- if omitted, and Type occurs, then Type is what is unsupported
877 term [4] Term OPTIONAL
878 -- If occurs, term is illegal or not supported, for attribute value,
879 -- if value occurs; otherwise, for type.
883 attCombo [1005] IMPLICIT SEQUENCE{ -- attribute combination not supported
884 unsupportedCombination [1] IMPLICIT AttributeList,
885 recommendedAlternatives [2] IMPLICIT SEQUENCE OF AttributeList OPTIONAL},
890 term [1006] IMPLICIT SEQUENCE{
891 problem [1] IMPLICIT INTEGER{
899 proximity [1007] CHOICE{ -- proximity diagnostics:
900 resultSets [1] IMPLICIT NULL, -- proximity between sets not supported
901 badSet [2] IMPLICIT InternationalString, -- bad result set specified
902 relation [3] IMPLICIT INTEGER, -- 1 to 6 ; relation not supported
903 unit [4] IMPLICIT INTEGER, -- unsupported unit code
904 distance [5] IMPLICIT INTEGER, -- unsupported distance
905 attributes [6] AttributeList, -- proximity not supported with specified
906 -- attribute combination
907 ordered [7] IMPLICIT NULL, -- ordered flag not supported
908 exclusion [8] IMPLICIT NULL -- exclusion flag not supported
915 scan [1008] CHOICE{ -- scan diagnostics:
916 nonZeroStepSize [0] IMPLICIT NULL, -- only zero step size supported
917 specifiedStepSize [1] IMPLICIT NULL, -- specified step size not supported
918 termList1 [3] IMPLICIT NULL, -- term list not supported (no alternative supplied)
919 termList2 [4] IMPLICIT SEQUENCE OF AttributeList,
920 -- term list not supported (alternatives supplied)
921 posInResponse [5] IMPLICIT INTEGER{ --value of positionInResponse not supported
924 mustBeNonNegative (3),
926 resources [6] IMPLICIT NULL, -- resources exhausted looking for satisfying terms
927 endOfList [7] IMPLICIT NULL -- beginning or end of term list
932 sequence [0] IMPLICIT NULL, -- cannot sort according to sequence
933 noRsName [1] IMPLICIT NULL, -- no result set name supplied
934 tooMany [2] IMPLICIT INTEGER, -- Too many input result sets,
936 incompatible [3] IMPLICIT NULL, -- records with different formats
937 -- not compatible for sorting
938 generic [4] IMPLICIT NULL, -- generic sort not supported
939 -- (db specific only)
940 dbSpecific [5] IMPLICIT NULL, -- db specific sort not supported
941 sortElement [6] SortElement,
942 key [7] IMPLICIT INTEGER{
943 tooMany (1), -- too many sort keys
944 duplicate (2)}, -- duplicate sort keys
945 action [8] IMPLICIT NULL, -- unsupported missing data action
946 illegal [9] IMPLICIT INTEGER{
947 relation (1), -- illegal sort relation
948 case (2), -- illegal case value
949 action (3), -- illegal missing data action
950 sort (4)}, -- illegal sort
951 inputTooLarge [10] IMPLICIT SEQUENCE OF InternationalString,
952 -- one or more of the input result sets too large to sort
953 aggregateTooLarge [11] IMPLICIT NULL -- aggregate result set too large
956 segmentation [1010] CHOICE{
957 segmentCount [0] IMPLICIT NULL,
958 -- Cannot guarantee record will fit within max segments. Target
959 -- suggests that origin try again to retrieve record, without
960 -- including max-segment-count.
961 segmentSize [1] IMPLICIT INTEGER
962 -- record cannot be segmented into fragments such that the largest
963 -- will fit within max segment size specified. Target supplies (in
964 -- bytes) the smallest acceptable value of Max-segment-size to
965 -- retrieve the record.
969 extServices [1011] CHOICE{
970 req [1] IMPLICIT INTEGER{ -- bad request
971 nameInUse (1), -- package name already in use
972 noSuchName (2), -- no such package, on modify/delete
973 quota (3), -- quota exceeded
974 type (4)}, -- extended service type not supported
975 permission [2] IMPLICIT INTEGER{ -- permission denied on ES, because:
976 id (1), -- id not authorized, or
977 modifyDelete (2)}, -- cannot modify or delete
978 immediate [3] IMPLICIT INTEGER{ -- immediate execution:
979 failed (1), -- failed,
980 service (2), -- not supported for this service, or
981 parameters (3) -- for these parameters.
985 accessCtrl [1012] CHOICE{
986 noUser [1] IMPLICIT NULL, -- no user to display challenge to
987 refused [2] IMPLICIT NULL, -- access control information refused by user
988 simple [3] IMPLICIT NULL, -- only simple form supported (target used
989 -- externally defined)
990 oid [4] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER,
991 -- oid not supported (origin supplies alternative
993 alternative [5] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER,
994 -- origin insists that target use an alternative
995 -- challenge for this data (e.g. stronger
997 -- authentication or stronger Access control). The
998 -- origin supplies suggested alternative oids.
999 pwdInv [6] IMPLICIT NULL, -- password invalid
1000 pwdExp [7] IMPLICIT NULL -- password expired
1004 recordSyntax [1013] IMPLICIT SEQUENCE{ -- record cannot be transferred in requested syntax
1005 unsupportedSyntax [1] IMPLICIT OBJECT IDENTIFIER,
1006 suggestedAlternatives [2] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL}
1015 RecordSyntax-explain
1016 {Z39-50-recordSyntax explain (100)} DEFINITIONS ::=
1019 IMPORTS AttributeSetId, Term, OtherInformation, DatabaseName, ElementSetName, IntUnit, Unit,
1020 StringOrNumeric, Specification, InternationalString, AttributeList, AttributeElement FROM Z39-50-APDU-1995;
1021 EXPORTS LanguageCode;
1023 Explain-Record ::= CHOICE{
1024 -- Each of these may be used as search term when Use attribute is 'explain-category'.
1025 targetInfo [0] IMPLICIT TargetInfo,
1026 databaseInfo [1] IMPLICIT DatabaseInfo,
1027 schemaInfo [2] IMPLICIT SchemaInfo,
1028 tagSetInfo [3] IMPLICIT TagSetInfo,
1029 recordSyntaxInfo [4] IMPLICIT RecordSyntaxInfo,
1030 attributeSetInfo [5] IMPLICIT AttributeSetInfo,
1031 termListInfo [6] IMPLICIT TermListInfo,
1032 extendedServicesInfo [7] IMPLICIT ExtendedServicesInfo,
1033 attributeDetails [8] IMPLICIT AttributeDetails,
1034 termListDetails [9] IMPLICIT TermListDetails,
1035 elementSetDetails [10] IMPLICIT ElementSetDetails,
1036 retrievalRecordDetails [11] IMPLICIT RetrievalRecordDetails,
1037 sortDetails [12] IMPLICIT SortDetails,
1038 processing [13] IMPLICIT ProcessingInformation,
1039 variants [14] IMPLICIT VariantSetInfo,
1040 units [15] IMPLICIT UnitInfo,
1041 categoryList [100] IMPLICIT CategoryList}
1043 -- Element set name 'B' (brief) retrieves:
1044 -- - 'commonInfo' (except for otherInfo within commonInfo)
1046 -- - other elements designated as 'non-key brief elements'
1047 -- Esn 'description' retrieves brief elements as well as 'description', and specific additional descriptive
1048 -- elements if designated.
1049 -- Element set name 'F' (full) retrieves all of the above, as well as those designated as "non-brief elements". Some
1050 -- elements designated as OPTIONAL may be mandatory in full records, and are so identified. (Note that all elements
1051 -- that are not part of the brief element set must be designated as OPTIONAL in the ASN.1, otherwise it would be
1052 -- illegal to omit them.)
1053 -- Other esns are defined (below) as needed.
1055 -- - - - - - - - - - - - - Info Records
1056 -- Info records are mainly for software consumption
1057 -- They describe individual entities within the target system:
1058 -- The target itself
1059 -- Individual databases
1065 -- Extended services
1066 -- The information about each Schema, Tag Set, Record Syntax and Attribute Set should
1067 -- match the universal definitions of these items. The only exception is that a target may omit any
1068 -- items it doesn't support, for example the description of the bib-1 attribute set may omit attributes
1069 -- that the target does not support under any circumstances.
1070 -- Databases that may be searched together can be listed in the dbCominations element of the TargetInfo record.
1071 TargetInfo ::= SEQUENCE {
1072 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1073 -- Key elements follow:
1074 name [1] IMPLICIT InternationalString,
1075 -- Non-key brief elements follow:
1076 recent-news [2] IMPLICIT HumanString OPTIONAL,
1077 icon [3] IMPLICIT IconObject OPTIONAL,
1078 namedResultSets [4] IMPLICIT BOOLEAN,
1079 multipleDBsearch [5] IMPLICIT BOOLEAN,
1080 maxResultSets [6] IMPLICIT INTEGER OPTIONAL,
1081 maxResultSize [7] IMPLICIT INTEGER OPTIONAL,
1082 maxTerms [8] IMPLICIT INTEGER OPTIONAL,
1083 timeoutInterval [9] IMPLICIT IntUnit OPTIONAL,
1084 welcomeMessage [10] IMPLICIT HumanString OPTIONAL,
1085 -- non-brief elements follow:
1086 -- 'description' esn retrieves the following two (as well as brief):
1087 contactInfo [11] IMPLICIT ContactInfo OPTIONAL,
1088 description [12] IMPLICIT HumanString OPTIONAL,
1089 nicknames [13] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1090 usage-restrictions [14] IMPLICIT HumanString OPTIONAL,
1091 paymentAddr [15] IMPLICIT HumanString OPTIONAL,
1092 hours [16] IMPLICIT HumanString OPTIONAL,
1093 dbCombinations [17] IMPLICIT SEQUENCE OF DatabaseList OPTIONAL,
1094 addresses [18] IMPLICIT SEQUENCE OF NetworkAddress OPTIONAL,
1095 languages [101] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1096 -- Languages supported for message strings. Each is a three-character
1097 -- language code from Z39.53-1994.
1098 -- characterSets [102] this tag reserved for "character sets supported for name and message strings".
1099 -- commonAccessInfo elements list objects the target supports. All objects listed in
1100 -- AccessInfo for any individual database should also be listed here.
1101 commonAccessInfo [19] IMPLICIT AccessInfo OPTIONAL}
1104 DatabaseInfo ::= SEQUENCE {
1105 -- A target may provide "virtual databases" that are combinations of individual database. These
1106 -- databases are indicated by the presence of subDbs in the combination database's DatabaseDescription.
1107 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1108 -- Key elements follow:
1109 name [1] IMPLICIT DatabaseName,
1110 -- Non-key brief elements follow:
1111 explainDatabase [2] IMPLICIT NULL OPTIONAL,
1112 -- If present, this database is the Explain database, or an Explain database
1113 -- for a different server, possibly on a different host. The means by which
1114 -- that server may be accessed is not addressed by this standard. One
1115 -- suggested possibility is an implementor agreement whereby the
1116 -- database name is a url which may be used to connect to the server.
1117 nicknames [3] IMPLICIT SEQUENCE OF DatabaseName OPTIONAL,
1118 icon [4] IMPLICIT IconObject OPTIONAL,
1119 user-fee [5] IMPLICIT BOOLEAN,
1120 available [6] IMPLICIT BOOLEAN,
1121 titleString [7] IMPLICIT HumanString OPTIONAL,
1122 -- Non-brief elements follow:
1123 keywords [8] IMPLICIT SEQUENCE OF HumanString OPTIONAL,
1124 description [9] IMPLICIT HumanString OPTIONAL,
1125 associatedDbs [10] IMPLICIT DatabaseList OPTIONAL,
1126 -- databases that may be searched in combination with this one
1128 subDbs [11] IMPLICIT DatabaseList OPTIONAL,
1129 -- When present, this database is a composite representing the combined
1130 -- databases 'subDbs'. The individual subDbs are also available.
1131 disclaimers [12] IMPLICIT HumanString OPTIONAL,
1132 news [13] IMPLICIT HumanString OPTIONAL,
1133 recordCount [14] CHOICE {
1134 actualNumber [0] IMPLICIT INTEGER,
1135 approxNumber [1] IMPLICIT INTEGER} OPTIONAL,
1136 defaultOrder [15] IMPLICIT HumanString OPTIONAL,
1137 avRecordSize [16] IMPLICIT INTEGER OPTIONAL,
1138 maxRecordSize [17] IMPLICIT INTEGER OPTIONAL,
1139 hours [18] IMPLICIT HumanString OPTIONAL,
1140 bestTime [19] IMPLICIT HumanString OPTIONAL,
1141 lastUpdate [20] IMPLICIT GeneralizedTime OPTIONAL,
1142 updateInterval [21] IMPLICIT IntUnit OPTIONAL,
1143 coverage [22] IMPLICIT HumanString OPTIONAL,
1144 proprietary [23] IMPLICIT BOOLEAN OPTIONAL, -- mandatory in full record
1145 copyrightText [24] IMPLICIT HumanString OPTIONAL,
1146 copyrightNotice [25] IMPLICIT HumanString OPTIONAL,
1147 producerContactInfo [26] IMPLICIT ContactInfo OPTIONAL,
1148 supplierContactInfo [27] IMPLICIT ContactInfo OPTIONAL,
1149 submissionContactInfo [28] IMPLICIT ContactInfo OPTIONAL,
1150 -- accessInfo lists items connected with the database. All listed items should be in the target's AccessInfo.
1151 accessInfo [29] IMPLICIT AccessInfo OPTIONAL}
1154 SchemaInfo ::= SEQUENCE {
1155 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1156 -- Key elements follow:
1157 schema [1] IMPLICIT OBJECT IDENTIFIER,
1158 -- Non-key brief elements follow:
1159 name [2] IMPLICIT InternationalString,
1160 -- Non-brief elements follow:
1161 description [3] IMPLICIT HumanString OPTIONAL,
1162 tagTypeMapping [4] IMPLICIT SEQUENCE OF SEQUENCE {
1163 tagType [0] IMPLICIT INTEGER,
1164 tagSet [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
1165 -- If tagSet is omitted, then this tagType is for a tagSet locally defined
1166 -- within the schema that cannot be referenced by another schema.
1167 defaultTagType [2] IMPLICIT NULL OPTIONAL
1169 recordStructure [5] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL}
1172 -- ElementInfo referenced in SchemaInfo and RecordSyntaxInfo
1173 ElementInfo ::= SEQUENCE {
1174 elementName [1] IMPLICIT InternationalString,
1175 elementTagPath [2] IMPLICIT Path,
1176 dataType [3] ElementDataType OPTIONAL, -- If omitted, not specified.
1177 required [4] IMPLICIT BOOLEAN,
1178 repeatable [5] IMPLICIT BOOLEAN,
1179 description [6] IMPLICIT HumanString OPTIONAL}
1182 -- Path is referenced by ElementInfo as well as PerElementDetails
1183 Path ::= SEQUENCE OF SEQUENCE{
1184 tagType [1] IMPLICIT INTEGER,
1185 tagValue [2] StringOrNumeric}
1186 ElementDataType ::= CHOICE{
1187 primitive [0] IMPLICIT PrimitiveDataType,
1188 structured [1] IMPLICIT SEQUENCE OF ElementInfo}
1189 PrimitiveDataType ::= INTEGER{
1199 noneOfTheAbove (100) -- see 'description'
1203 TagSetInfo ::= SEQUENCE {
1204 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1205 -- Key elements follow:
1206 tagSet [1] IMPLICIT OBJECT IDENTIFIER,
1207 -- non-key brief elements follow:
1208 name [2] IMPLICIT InternationalString,
1209 -- non-brief elements follow:
1210 description [3] IMPLICIT HumanString OPTIONAL,
1211 elements [4] IMPLICIT SEQUENCE OF SEQUENCE {
1212 elementname [1] IMPLICIT InternationalString,
1213 nicknames [2] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1214 elementTag [3] StringOrNumeric,
1215 description [4] IMPLICIT HumanString OPTIONAL,
1216 dataType [5] PrimitiveDataType OPTIONAL,
1217 -- If the data type is expected to be structured, that is described in the schema info,
1218 -- and datatype is omitted here.
1219 otherTagInfo OtherInformation OPTIONAL} OPTIONAL}
1221 RecordSyntaxInfo ::= SEQUENCE {
1222 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1223 -- Key elements follow:
1224 recordSyntax [1] IMPLICIT OBJECT IDENTIFIER,
1225 -- Non-key brief elements follow:
1226 name [2] IMPLICIT InternationalString,
1227 -- non-brief elements follow:
1228 transferSyntaxes [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1229 description [4] IMPLICIT HumanString OPTIONAL,
1230 asn1Module [5] IMPLICIT InternationalString OPTIONAL,
1231 abstractStructure [6] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL
1232 -- Omitting abstractStructure only means target isn't using
1233 -- Explain to describe the structure, not that there is no structure.
1236 AttributeSetInfo ::= SEQUENCE {
1237 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1238 -- Key elements follow:
1239 attributeSet [1] IMPLICIT AttributeSetId,
1240 -- non-key brief elements follow:
1241 name [2] IMPLICIT InternationalString,
1242 -- non-brief elements follow:
1243 attributes [3] IMPLICIT SEQUENCE OF AttributeType OPTIONAL,
1244 -- mandatory in full record
1245 description [4] IMPLICIT HumanString OPTIONAL}
1246 -- AttributeType referenced in AttributeSetInfo
1247 AttributeType ::= SEQUENCE {
1248 name [0] IMPLICIT InternationalString OPTIONAL,
1249 description [1] IMPLICIT HumanString OPTIONAL,
1250 attributeType [2] IMPLICIT INTEGER,
1251 attributeValues [3] IMPLICIT SEQUENCE OF AttributeDescription}
1252 AttributeDescription ::= SEQUENCE {
1253 name [0] IMPLICIT InternationalString OPTIONAL,
1254 description [1] IMPLICIT HumanString OPTIONAL,
1255 attributeValue [2] StringOrNumeric,
1256 equivalentAttributes [3] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL
1257 -- each is an occurrence of 'attributeValue' from AttributeDescription for a
1258 -- different attribute. Equivalences listed here should be derived from the
1259 -- attribute set definition, not from a particular server's behavior.
1263 TermListInfo ::= SEQUENCE{
1264 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1265 -- Key elements follow:
1266 databaseName [1] IMPLICIT DatabaseName,
1267 -- Non-key brief elements follow:
1268 termLists [2] IMPLICIT SEQUENCE OF SEQUENCE{
1269 name [1] IMPLICIT InternationalString,
1270 title [2] IMPLICIT HumanString OPTIONAL,
1271 -- Title is for users to see and can differ by language. Name, on the
1272 -- other hand is typically a short string not necessarily meant to be
1273 -- human-readable, and not variable by language.
1274 searchCost [3] IMPLICIT INTEGER {
1275 optimized (0), -- The attribute (or combination) associated
1276 -- with this list will do fast searches.
1277 normal (1), -- The attribute (combination) will work as
1278 -- expected. So there's probably an index for the
1279 -- attribute (combination) or some similar
1281 expensive (2), -- Can use the attribute (combination), but it
1282 -- might not provide satisfactory results.
1283 -- Probably there is no index, or post-
1284 -- processing of records is required.
1285 filter (3) -- can't search with this attribute (combination) alone.
1287 scanable [4] IMPLICIT BOOLEAN, -- 'true' means this list can be scanned.
1288 broader [5] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1289 narrower [6] IMPLICIT SEQUENCE OF InternationalString OPTIONAL
1290 -- broader and narrower list alternative term lists related to this one.
1291 -- The term lists so listed should also be in this termLists structure.
1293 -- no non-brief elements
1297 ExtendedServicesInfo ::= SEQUENCE {
1298 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1299 -- Key elements follow:
1300 type [1] IMPLICIT OBJECT IDENTIFIER,
1301 -- Non-key brief elements follow:
1302 name [2] IMPLICIT InternationalString OPTIONAL,
1303 -- should be supplied if privateType is 'true'
1304 privateType [3] IMPLICIT BOOLEAN,
1305 restrictionsApply [5] IMPLICIT BOOLEAN, -- if 'true' see 'description'
1306 feeApply [6] IMPLICIT BOOLEAN, -- if 'true' see 'description'
1307 available [7] IMPLICIT BOOLEAN,
1308 retentionSupported [8] IMPLICIT BOOLEAN,
1309 waitAction [9] IMPLICIT INTEGER{
1312 waitNotSupported (3),
1315 -- non-brief elements follow:
1316 -- To get brief plus 'description' use esn 'description'
1317 description [10] IMPLICIT HumanString OPTIONAL,
1318 -- to get above elements and 'specificExplain' use esn 'specificExplain'
1319 specificExplain [11] IMPLICIT EXTERNAL OPTIONAL,
1320 -- Use oid of specific ES, and select choice [3] 'explain'. Format
1321 -- to be developed in conjunction with the specific ES definition.
1322 -- to get all elements except 'specificExplain', use esn 'asn'
1323 esASN [12] IMPLICIT InternationalString OPTIONAL -- the ASN.1 for this ES
1326 -- - - - - - - - - - - - - Detail records
1327 -- The detail records describe relationships among entities supported by the target. RetrievalRecordDetails describes
1328 -- the way that schema elements are mapped into record elements. This mapping may be different for each
1329 -- combination of database, schema, record syntax. The per-element details describe the default mapping.
1330 -- Origin-request re-tagging can change that mapping. When multiple databases are listed in a databaseNames
1331 -- element, the record applies equally to all of the listed databases. This is unrelated to searching the databases
1332 -- together. AttributeDetails describes how databases can be searched. Each supported attribute is listed, and the
1333 -- allowable combinations can be described.
1336 AttributeDetails ::= SEQUENCE {
1337 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1338 -- Key elements follow:
1339 databaseName [1] IMPLICIT DatabaseName,
1340 -- Non-brief elements follow:
1341 attributesBySet [2] IMPLICIT SEQUENCE OF AttributeSetDetails OPTIONAL,
1342 -- mandatory in full record
1343 attributeCombinations [3] IMPLICIT AttributeCombinations OPTIONAL}
1348 -- AttributeSetDetails referenced by AttributeDetails
1349 AttributeSetDetails ::= SEQUENCE {
1350 attributeSet [0] IMPLICIT AttributeSetId,
1351 attributesByType [1] IMPLICIT SEQUENCE OF AttributeTypeDetails }
1352 AttributeTypeDetails ::= SEQUENCE {
1353 attributeType [0] IMPLICIT INTEGER,
1354 defaultIfOmitted [1] IMPLICIT OmittedAttributeInterpretation OPTIONAL,
1355 attributeValues [2] IMPLICIT SEQUENCE OF AttributeValue OPTIONAL }
1356 -- If no attributeValues are supplied, all values of this type are fully
1357 -- supported, and the descriptions in AttributeSetInfo are adequate.
1359 OmittedAttributeInterpretation ::= SEQUENCE {
1360 defaultValue [0] StringOrNumeric OPTIONAL,
1361 -- A default value is listed if that's how the server works
1362 defaultDescription [1] IMPLICIT HumanString OPTIONAL }
1363 -- The human-readable description should generally be provided.
1364 -- It is legal for both default elements to be missing, which
1365 -- means that the target will allow the attribute type to be
1366 -- omitted, but isn't saying what it will do.
1368 AttributeValue ::= SEQUENCE {
1369 value [0] StringOrNumeric,
1370 description [1] IMPLICIT HumanString OPTIONAL,
1371 subAttributes [2] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
1372 superAttributes [3] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
1373 partialSupport [4] IMPLICIT NULL OPTIONAL }
1374 -- partialSupport indicates that an attributeValue is accepted, but may not be processed in the
1375 -- "expected" way. One important reason for this is composite databases: in this case partialSupport
1376 -- may indicate that only some of the subDbs support the attribute, and others ignore it.
1380 TermListDetails ::= SEQUENCE{ -- one for each termList in TermListInfo
1381 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1382 -- Key elements follow:
1383 termListName [1] IMPLICIT InternationalString,
1384 -- Non-key elements (all non-brief) follow:
1385 description [2] IMPLICIT HumanString OPTIONAL,
1386 attributes [3] IMPLICIT AttributeCombinations OPTIONAL,
1387 -- Pattern for attributes that hit this list. Mandatory in full record
1388 scanInfo [4] IMPLICIT SEQUENCE {
1389 maxStepSize [0] IMPLICIT INTEGER OPTIONAL,
1390 collatingSequence [1] IMPLICIT HumanString OPTIONAL,
1391 increasing [2] IMPLICIT BOOLEAN OPTIONAL} OPTIONAL,
1392 -- Occurs only if list is scanable. If list is scanable and if scanInfo is omitted,
1393 -- target doesn't consider these important.
1394 estNumberTerms [5] IMPLICIT INTEGER OPTIONAL,
1395 sampleTerms [6] IMPLICIT SEQUENCE OF Term OPTIONAL}
1399 ElementSetDetails ::= SEQUENCE {
1400 -- ElementSetDetails describes the way that database records are mapped to record elements. This
1401 -- mapping may be different for each combination of database name and element set. The database record
1402 -- description is a schema, which may be private to the target. The schema's abstract record structure
1403 -- and tag sets provide the vocabulary for discussing record content; their presence in the Explain
1404 -- database does not imply support for complex retrieval specification.
1405 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1406 -- Key elements follow:
1407 databaseName [1] IMPLICIT DatabaseName,
1408 elementSetName [2] IMPLICIT ElementSetName,
1409 recordSyntax [3] IMPLICIT OBJECT IDENTIFIER,
1410 -- Non-key Brief elements follow:
1411 schema [4] IMPLICIT OBJECT IDENTIFIER,
1412 -- Non-brief elements follow:
1413 description [5] IMPLICIT HumanString OPTIONAL,
1414 detailsPerElement [6] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL -- mandatory in full record
1418 RetrievalRecordDetails ::= SEQUENCE {
1419 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1420 -- Key elements follow:
1421 databaseName [1] IMPLICIT DatabaseName,
1422 schema [2] IMPLICIT OBJECT IDENTIFIER,
1423 recordSyntax [3] IMPLICIT OBJECT IDENTIFIER,
1424 -- Non-brief elements follow:
1425 description [4] IMPLICIT HumanString OPTIONAL,
1426 detailsPerElement [5] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL
1427 -- mandatory in full record
1430 -- PerElementDetails is referenced in RetrievalRecordDetails and ElementSetDetails.
1431 PerElementDetails ::= SEQUENCE {
1432 name [0] IMPLICIT InternationalString OPTIONAL,
1433 -- If the name is omitted, the record syntax's name for this element
1435 recordTag [1] IMPLICIT RecordTag OPTIONAL,
1436 -- The record tag may be omitted if tags are inappropriate for the record
1437 -- syntax, or if the origin can be expected to know it for some other reason.
1438 schemaTags [2] IMPLICIT SEQUENCE OF Path OPTIONAL,
1439 -- The information from the listed schema elements is combined
1440 -- in some way to produce the data sent in the listed record tag. The
1441 -- 'contents' element below may describe the logic used.
1442 maxSize [3] IMPLICIT INTEGER OPTIONAL,
1443 minSize [4] IMPLICIT INTEGER OPTIONAL,
1444 avgSize [5] IMPLICIT INTEGER OPTIONAL,
1445 fixedSize [6] IMPLICIT INTEGER OPTIONAL,
1446 repeatable [8] IMPLICIT BOOLEAN,
1447 required [9] IMPLICIT BOOLEAN,
1448 -- 'required' really means that target will always supply the element.
1449 description [12] IMPLICIT HumanString OPTIONAL,
1450 contents [13] IMPLICIT HumanString OPTIONAL,
1451 billingInfo [14] IMPLICIT HumanString OPTIONAL,
1452 restrictions [15] IMPLICIT HumanString OPTIONAL,
1453 alternateNames [16] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1454 genericNames [17] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1455 searchAccess [18] IMPLICIT AttributeCombinations OPTIONAL }
1456 -- RecordTag referenced in PerElementDetails above
1457 RecordTag ::= SEQUENCE {
1458 qualifier [0] StringOrNumeric OPTIONAL,
1459 -- E.g. tag set for GRS-1
1460 tagValue [1] StringOrNumeric}
1462 SortDetails ::= SEQUENCE {
1463 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1464 -- Key elements follow:
1465 databaseName [1] IMPLICIT DatabaseName,
1466 -- No non-key brief elements
1467 -- Non-brief elements follow:
1468 sortKeys [2] IMPLICIT SEQUENCE OF SortKeyDetails OPTIONAL
1469 -- mandatory in full record
1471 SortKeyDetails ::= SEQUENCE {
1472 description [0] IMPLICIT HumanString OPTIONAL,
1473 elementSpecifications [1] IMPLICIT SEQUENCE OF Specification OPTIONAL,
1474 -- each specification is a way of specifying this same sort key
1475 attributeSpecifications [2] IMPLICIT AttributeCombinations OPTIONAL,
1476 -- each combination is a way of specifying this same sort key
1477 sortType [3] CHOICE {
1478 character [0] IMPLICIT NULL,
1479 numeric [1] IMPLICIT NULL,
1480 structured [2] IMPLICIT HumanString} OPTIONAL,
1481 caseSensitivity [4] IMPLICIT INTEGER {
1482 always (0), -- always case-sensitive
1483 never (1), -- never case-sensitive
1484 default-yes (2), -- case-sensitivity is as specified on request, and if not
1485 -- specified, case-sensitive.
1486 default-no (3)} -- case-sensitivity is as specified on request, and if not
1487 -- specified, not case-sensitive.
1490 ProcessingInformation ::= SEQUENCE{
1491 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1492 -- Key elements follow:
1493 databaseName [1] IMPLICIT DatabaseName,
1494 processingContext [2] IMPLICIT INTEGER {
1495 access (0), -- e.g. choosing databases
1496 search (1), -- e.g. "search strategies" or search forms
1497 retrieval (2), -- e.g. recommended element combinations
1498 record-presentation (3), -- display of retrieved records
1499 record-handling (4) -- handling (e.g. saving) of retrieved records
1501 name [3] IMPLICIT InternationalString,
1502 oid [4] IMPLICIT OBJECT IDENTIFIER,
1503 -- No non-key brief elements
1504 -- Non-brief elements follow:
1505 description [5] IMPLICIT HumanString OPTIONAL,
1506 -- use element set name 'description' to retrieve all except instructions.
1507 instructions [6] IMPLICIT EXTERNAL OPTIONAL -- mandatory in full record
1511 VariantSetInfo ::= SEQUENCE {
1512 -- A record in this category describes a variant set definition, i.e., classes, types, and values, for a specific
1513 -- variant set definition supported by the target. Support by the target of a particular variant set definition
1514 -- does not imply that the definition is supported for any specific database or element.
1515 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1516 -- Key elements follow:
1517 variantSet [1] IMPLICIT OBJECT IDENTIFIER,
1518 -- Non-key brief elements follow:
1519 name [2] IMPLICIT InternationalString,
1520 -- Non-brief elements follow:
1521 variants [3] IMPLICIT SEQUENCE OF VariantClass OPTIONAL
1522 -- mandatory in full record
1525 -- Subsidiary structures for VariantSetInfo
1526 VariantClass ::= SEQUENCE {
1527 name [0] IMPLICIT InternationalString OPTIONAL,
1528 description [1] IMPLICIT HumanString OPTIONAL,
1529 variantClass [2] IMPLICIT INTEGER,
1530 variantTypes [3] IMPLICIT SEQUENCE OF VariantType}
1531 VariantType ::= SEQUENCE {
1532 name [0] IMPLICIT InternationalString OPTIONAL,
1533 description [1] IMPLICIT HumanString OPTIONAL,
1534 variantType [2] IMPLICIT INTEGER,
1535 variantValue [3] IMPLICIT VariantValue OPTIONAL}
1536 VariantValue ::= SEQUENCE {
1537 dataType [0] PrimitiveDataType,
1538 values [1] ValueSet OPTIONAL }
1539 ValueSet ::= CHOICE {
1540 range [0] IMPLICIT ValueRange,
1541 enumerated [1] IMPLICIT SEQUENCE OF ValueDescription }
1542 ValueRange ::= SEQUENCE {
1543 -- At last one the following must be supplied, both may be supplied.
1544 lower [0] ValueDescription OPTIONAL,
1545 upper [1] ValueDescription OPTIONAL }
1546 ValueDescription ::= CHOICE{
1548 string InternationalString,
1549 octets OCTET STRING,
1550 oid OBJECT IDENTIFIER,
1551 unit [1] IMPLICIT Unit,
1552 valueAndUnit [2] IMPLICIT IntUnit
1553 -- oid and unit can't be used in a ValueRange
1558 UnitInfo ::= SEQUENCE {
1559 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1560 -- Key elements follow:
1561 unitSystem [1] IMPLICIT InternationalString,
1562 -- No non-key brief elements
1563 -- Non-brief elements follow:
1564 description [2] IMPLICIT HumanString OPTIONAL,
1565 units [3] IMPLICIT SEQUENCE OF UnitType OPTIONAL
1566 -- mandatory in full record
1569 -- Subsidiary structures for UnitInfo
1570 UnitType ::= SEQUENCE {
1571 name [0] IMPLICIT InternationalString OPTIONAL,
1572 description [1] IMPLICIT HumanString OPTIONAL,
1573 unitType [2] StringOrNumeric,
1574 units [3] IMPLICIT SEQUENCE OF Units}
1576 Units ::= SEQUENCE {
1577 name [0] IMPLICIT InternationalString OPTIONAL,
1578 description [1] IMPLICIT HumanString OPTIONAL,
1579 unit [2] StringOrNumeric}
1581 CategoryList ::= SEQUENCE {
1582 commonInfo [0] IMPLICIT CommonInfo OPTIONAL,
1583 -- Only one record expected per Explain database. All elements appear in brief presentation.
1584 categories [1] IMPLICIT SEQUENCE OF CategoryInfo }
1585 CategoryInfo ::= SEQUENCE {
1586 category [1] IMPLICIT InternationalString,
1587 originalCategory [2] IMPLICIT InternationalString OPTIONAL,
1588 description [3] IMPLICIT HumanString OPTIONAL,
1589 asn1Module [4] IMPLICIT InternationalString OPTIONAL}
1592 -- - - - - - - - - - - - - - Subsidiary definitions
1594 CommonInfo ::= SEQUENCE {
1595 dateAdded [0] IMPLICIT GeneralizedTime OPTIONAL,
1596 dateChanged [1] IMPLICIT GeneralizedTime OPTIONAL,
1597 expiry [2] IMPLICIT GeneralizedTime OPTIONAL,
1598 humanString-Language [3] IMPLICIT LanguageCode OPTIONAL,
1599 -- following not to occur for brief:
1600 otherInfo OtherInformation OPTIONAL}
1603 HumanString ::= SEQUENCE OF SEQUENCE {
1604 language [0] IMPLICIT LanguageCode OPTIONAL,
1605 text [1] IMPLICIT InternationalString}
1607 IconObject ::= SEQUENCE OF SEQUENCE{
1608 -- Note that the "SEQUENCE OF" is to allow alternative representations of the same Icon; it is not
1609 -- intended to allow multiple icons.
1610 bodyType [1] CHOICE{
1611 ianaType [1] IMPLICIT InternationalString,
1612 z3950type [2] IMPLICIT InternationalString,
1613 otherType [3] IMPLICIT InternationalString},
1614 content [2] IMPLICIT OCTET STRING}
1617 LanguageCode ::= InternationalString -- from ANSI/NISO Z39.53-1994
1619 ContactInfo ::= SEQUENCE {
1620 name [0] IMPLICIT InternationalString OPTIONAL,
1621 description [1] IMPLICIT HumanString OPTIONAL,
1622 address [2] IMPLICIT HumanString OPTIONAL,
1623 email [3] IMPLICIT InternationalString OPTIONAL,
1624 phone [4] IMPLICIT InternationalString OPTIONAL}
1626 NetworkAddress ::= CHOICE {
1627 internetAddress [0] IMPLICIT SEQUENCE {
1628 hostAddress [0] IMPLICIT InternationalString,
1629 port [1] IMPLICIT INTEGER},
1630 osiPresentationAddress [1] IMPLICIT SEQUENCE {
1631 pSel [0] IMPLICIT InternationalString,
1632 sSel [1] IMPLICIT InternationalString OPTIONAL,
1633 tSel [2] IMPLICIT InternationalString OPTIONAL,
1634 nSap [3] IMPLICIT InternationalString},
1635 other [2] IMPLICIT SEQUENCE {
1636 type [0] IMPLICIT InternationalString,
1637 address [1] IMPLICIT InternationalString}}
1639 AccessInfo ::= SEQUENCE {
1640 -- AccessInfo contains the fundamental information about what facilities are required to use this target
1641 -- or server. For example, if an origin can handle none of the record syntaxes a database can provide,
1642 -- it might choose not to access the database.
1643 queryTypesSupported [0] IMPLICIT SEQUENCE OF QueryTypeDetails OPTIONAL,
1644 diagnosticsSets [1] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1645 attributeSetIds [2] IMPLICIT SEQUENCE OF AttributeSetId OPTIONAL,
1646 schemas [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1647 recordSyntaxes [4] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1648 resourceChallenges [5] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1649 restrictedAccess [6] IMPLICIT AccessRestrictions OPTIONAL,
1650 costInfo [8] IMPLICIT Costs OPTIONAL,
1651 variantSets [9] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1652 elementSetNames [10] IMPLICIT SEQUENCE OF ElementSetName OPTIONAL,
1653 unitSystems [11] IMPLICIT SEQUENCE OF InternationalString}
1655 -- begin auxiliary definitions for AccessInfo
1656 -- Begin Query Details
1657 QueryTypeDetails ::= CHOICE {
1658 private [0] IMPLICIT PrivateCapabilities,
1659 rpn [1] IMPLICIT RpnCapabilities,
1660 iso8777 [2] IMPLICIT Iso8777Capabilities,
1661 z39-58 [100] IMPLICIT HumanString,
1662 erpn [101] IMPLICIT RpnCapabilities,
1663 rankedList [102] IMPLICIT HumanString}
1665 PrivateCapabilities ::= SEQUENCE {
1666 operators [0] IMPLICIT SEQUENCE OF SEQUENCE {
1667 operator [0] IMPLICIT InternationalString,
1668 description [1] IMPLICIT HumanString OPTIONAL } OPTIONAL,
1669 searchKeys [1] IMPLICIT SEQUENCE OF SearchKey OPTIONAL, -- field names that can be searched
1670 description [2] IMPLICIT SEQUENCE OF HumanString OPTIONAL }
1672 RpnCapabilities ::= SEQUENCE {
1673 operators [0] IMPLICIT SEQUENCE OF INTEGER OPTIONAL,
1674 -- Omitted means all operators are supported.
1675 resultSetAsOperandSupported [1] IMPLICIT BOOLEAN,
1676 restrictionOperandSupported [2] IMPLICIT BOOLEAN,
1677 proximity [3] IMPLICIT ProximitySupport OPTIONAL}
1679 Iso8777Capabilities ::= SEQUENCE {
1680 searchKeys [0] IMPLICIT SEQUENCE OF SearchKey, -- field names that may be searched
1681 restrictions [1] IMPLICIT HumanString OPTIONAL
1682 -- Omitted means supported, not specifying units.
1685 ProximitySupport ::= SEQUENCE {
1686 anySupport [0] IMPLICIT BOOLEAN,
1687 -- 'false' means no proximity support, in which case unitsSupported not supplied.
1688 unitsSupported [1] IMPLICIT SEQUENCE OF CHOICE{
1689 known [1] IMPLICIT INTEGER, -- values from KnownProximityUnit
1690 private [2] IMPLICIT SEQUENCE{
1691 unit [0] IMPLICIT INTEGER,
1692 description [1] HumanString OPTIONAL}} OPTIONAL}
1694 SearchKey ::= SEQUENCE {
1695 searchKey [0] IMPLICIT InternationalString,
1696 description [1] IMPLICIT HumanString OPTIONAL }
1697 -- End Query details
1698 AccessRestrictions ::= SEQUENCE OF SEQUENCE {
1699 accessType [0] INTEGER {
1703 specific-elements (3),
1704 extended-services (4),
1706 accessText [1] IMPLICIT HumanString OPTIONAL,
1707 accessChallenges [2] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL}
1709 Costs ::= SEQUENCE {
1710 connectCharge [0] IMPLICIT Charge OPTIONAL, -- Per-connection charge
1711 connectTime [1] IMPLICIT Charge OPTIONAL, -- Time-based charge
1712 displayCharge [2] IMPLICIT Charge OPTIONAL, -- Per-record charge
1713 searchCharge [3] IMPLICIT Charge OPTIONAL, -- Per-search charge
1714 subscriptCharge [4] IMPLICIT Charge OPTIONAL, -- Subscription charges
1715 otherCharges [5] IMPLICIT SEQUENCE OF SEQUENCE{ -- Other charges
1716 forWhat [1] IMPLICIT HumanString,
1717 charge [2] IMPLICIT Charge} OPTIONAL}
1718 Charge ::= SEQUENCE{
1719 cost [1] IMPLICIT IntUnit,
1720 perWhat [2] IMPLICIT Unit OPTIONAL,
1721 -- e.g. "second," "minute," "line," "record"...
1722 text [3] IMPLICIT HumanString OPTIONAL}
1723 -- End Auxiliary definitions for AccessInfo
1725 DatabaseList ::= SEQUENCE OF DatabaseName
1727 AttributeCombinations ::= SEQUENCE {
1728 defaultAttributeSet [0] IMPLICIT AttributeSetId,
1729 -- Default for the combinations. Also probably a good choice for the default
1730 -- in searches, but that isn't required.
1731 legalCombinations [1] IMPLICIT SEQUENCE OF AttributeCombination }
1734 AttributeCombination ::= SEQUENCE OF AttributeOccurrence
1735 -- An AttributeCombination is a pattern for legal combination of attributes
1738 AttributeOccurrence ::= SEQUENCE {
1739 -- An AttributeOccurrence lists the legal values for a specific attribute type in a combination.
1740 attributeSet [0] IMPLICIT AttributeSetId OPTIONAL,
1741 attributeType [1] IMPLICIT INTEGER,
1742 mustBeSupplied [2] IMPLICIT NULL OPTIONAL,
1743 attributeValues CHOICE {
1744 any-or-none [3] IMPLICIT NULL, -- All supported values are OK
1745 specific [4] IMPLICIT SEQUENCE OF StringOrNumeric}}
1746 -- Only these values allowed
1758 {Z39-50-recordSyntax SUTRS (101)} DEFINITIONS ::=
1760 IMPORTS InternationalString FROM Z39-50-APDU-1995;
1761 SutrsRecord ::= InternationalString
1762 -- Line terminator is ASCII LF (X'0A').
1763 -- Recommended maximum line length is 72 characters.
1771 {Z39-50-recordSyntax opac (102)} DEFINITIONS ::=
1773 IMPORTS InternationalString FROM Z39-50-APDU-1995;
1774 OPACRecord ::= SEQUENCE {
1775 bibliographicRecord [1] IMPLICIT EXTERNAL OPTIONAL,
1776 holdingsData [2] IMPLICIT SEQUENCE OF HoldingsRecord OPTIONAL}
1777 HoldingsRecord ::= CHOICE {
1778 marcHoldingsRecord [1] IMPLICIT EXTERNAL,
1779 holdingsAndCirc [2] IMPLICIT HoldingsAndCircData}
1780 HoldingsAndCircData ::= SEQUENCE {
1781 -- the following elements are required to display holdings in conformance with NISO standards.
1782 typeOfRecord [1] IMPLICIT InternationalString OPTIONAL, -- LDR 06
1783 encodingLevel [2] IMPLICIT InternationalString OPTIONAL, -- LDR 017
1784 format [3] IMPLICIT InternationalString OPTIONAL, -- 007 00-01
1785 receiptAcqStatus [4] IMPLICIT InternationalString OPTIONAL, -- 008 06
1786 generalRetention [5] IMPLICIT InternationalString OPTIONAL, -- 008 12
1787 completeness [6] IMPLICIT InternationalString OPTIONAL, -- 008 16
1788 dateOfReport [7] IMPLICIT InternationalString OPTIONAL, -- 008 26-31
1789 nucCode [8] IMPLICIT InternationalString OPTIONAL, -- 852 $a
1790 localLocation [9] IMPLICIT InternationalString OPTIONAL, -- 852 $b
1791 shelvingLocation [10] IMPLICIT InternationalString OPTIONAL, -- 852 $c
1792 callNumber [11] IMPLICIT InternationalString OPTIONAL, -- 852 $h and $i
1793 shelvingData [12] IMPLICIT InternationalString OPTIONAL, -- 852 $j thru $m
1794 copyNumber [13] IMPLICIT InternationalString OPTIONAL, -- 852 $t
1795 publicNote [14] IMPLICIT InternationalString OPTIONAL, -- 852 $z
1796 reproductionNote [15] IMPLICIT InternationalString OPTIONAL, -- 843
1797 termsUseRepro [16] IMPLICIT InternationalString OPTIONAL, -- 845
1798 enumAndChron [17] IMPLICIT InternationalString OPTIONAL, -- all 85x, 86x
1799 volumes [18] IMPLICIT SEQUENCE OF Volume OPTIONAL,
1800 -- repeats for each volume held
1801 circulationData [19] IMPLICIT SEQUENCE OF CircRecord OPTIONAL
1802 -- repeats for each circulating item.
1804 Volume ::= SEQUENCE {
1805 enumeration [1] IMPLICIT InternationalString OPTIONAL,
1806 chronology [2] IMPLICIT InternationalString OPTIONAL,
1807 enumAndChron [3] IMPLICIT InternationalString OPTIONAL }
1808 CircRecord ::= SEQUENCE {
1809 availableNow [1] IMPLICIT BOOLEAN,
1810 availablityDate [2] IMPLICIT InternationalString OPTIONAL,
1811 availableThru [3] IMPLICIT InternationalString OPTIONAL,
1812 restrictions [4] IMPLICIT InternationalString OPTIONAL,
1813 itemId [5] IMPLICIT InternationalString OPTIONAL,
1814 renewable [6] IMPLICIT BOOLEAN,
1815 onHold [7] IMPLICIT BOOLEAN,
1816 enumAndChron [8] IMPLICIT InternationalString OPTIONAL,
1817 midspine [9] IMPLICIT InternationalString OPTIONAL,
1818 temporaryLocation [10] IMPLICIT InternationalString OPTIONAL}
1823 RecordSyntax-summary
1825 {Z39-50-recordSyntax summary (103)} DEFINITIONS ::=
1827 IMPORTS OtherInformation, InternationalString FROM Z39-50-APDU-1995;
1828 BriefBib ::= SEQUENCE {
1829 title [1] IMPLICIT InternationalString,
1830 author [2] IMPLICIT InternationalString OPTIONAL,
1831 callNumber [3] IMPLICIT InternationalString OPTIONAL,
1832 recordType [4] IMPLICIT InternationalString OPTIONAL,
1833 bibliographicLevel [5] IMPLICIT InternationalString OPTIONAL,
1834 format [6] IMPLICIT SEQUENCE OF FormatSpec OPTIONAL,
1835 publicationPlace [7] IMPLICIT InternationalString OPTIONAL,
1836 publicationDate [8] IMPLICIT InternationalString OPTIONAL,
1837 targetSystemKey [9] IMPLICIT InternationalString OPTIONAL,
1838 satisfyingElement [10] IMPLICIT InternationalString OPTIONAL,
1839 rank [11] IMPLICIT INTEGER OPTIONAL,
1840 documentId [12] IMPLICIT InternationalString OPTIONAL,
1841 abstract [13] IMPLICIT InternationalString OPTIONAL,
1842 otherInfo OtherInformation OPTIONAL}
1844 FormatSpec ::= SEQUENCE {
1845 type [1] IMPLICIT InternationalString,
1846 size [2] IMPLICIT INTEGER OPTIONAL,
1847 bestPosn [3] IMPLICIT INTEGER OPTIONAL}
1859 RecordSyntax-generic -- For detailed semantics, see Appendix RET.
1860 {Z39-50-recordSyntax GRS-1 (105)} DEFINITIONS ::=
1863 IMPORTS IntUnit, Unit, InternationalString, StringOrNumeric, Term FROM Z39-50-APDU-1995;
1865 GenericRecord ::= SEQUENCE OF TaggedElement
1866 TaggedElement ::= SEQUENCE {
1867 tagType [1] IMPLICIT INTEGER OPTIONAL,
1868 -- If omitted, default should be supplied dynamically by tagSet-M;
1869 -- otherwise it should be statically specified by the schema.
1870 tagValue [2] StringOrNumeric,
1871 tagOccurrence [3] IMPLICIT INTEGER OPTIONAL,
1872 -- Occurrence within the database record, and relative to the parent. No
1873 -- default; if omitted, target not telling or it is irrelevant.
1874 content [4] ElementData,
1875 metaData [5] IMPLICIT ElementMetaData OPTIONAL,
1876 appliedVariant [6] IMPLICIT Variant OPTIONAL}
1878 ElementData ::= CHOICE{
1879 octets OCTET STRING,
1881 date GeneralizedTime,
1883 string InternationalString,
1884 trueOrFalse BOOLEAN,
1885 oid OBJECT IDENTIFIER,
1886 intUnit [1] IMPLICIT IntUnit,
1887 elementNotThere [2] IMPLICIT NULL, -- element requested but not there
1888 elementEmpty [3] IMPLICIT NULL, -- element there, but empty
1889 noDataRequested [4] IMPLICIT NULL, -- variant request said 'no data'
1890 diagnostic [5] IMPLICIT EXTERNAL,
1891 subtree [6] SEQUENCE OF TaggedElement -- recursive, for nested tags
1895 ElementMetaData ::= SEQUENCE{
1896 seriesOrder [1] IMPLICIT Order OPTIONAL, -- only for a non-leaf node
1897 usageRight [2] IMPLICIT Usage OPTIONAL,
1898 hits [3] IMPLICIT SEQUENCE OF HitVector OPTIONAL,
1899 displayName [4] IMPLICIT InternationalString OPTIONAL,
1900 -- name for element that origin can use for display
1901 supportedVariants [5] IMPLICIT SEQUENCE OF Variant OPTIONAL,
1902 message [6] IMPLICIT InternationalString OPTIONAL,
1903 elementDescriptor [7] IMPLICIT OCTET STRING OPTIONAL,
1904 surrogateFor [8] IMPLICIT TagPath OPTIONAL,
1905 -- the retrieved element is a surrogate for the element given by this path
1906 surrogateElement [9] IMPLICIT TagPath OPTIONAL,
1907 -- the element given by this path is a surrogate for the retrieved element
1908 other [99] IMPLICIT EXTERNAL OPTIONAL}
1910 TagPath ::= SEQUENCE OF SEQUENCE{
1911 tagType [1] IMPLICIT INTEGER OPTIONAL,
1912 tagValue [2] StringOrNumeric,
1913 tagOccurrence [3] IMPLICIT INTEGER OPTIONAL}
1918 ascending [1] IMPLICIT BOOLEAN,
1919 -- "true" means monotonically increasing (i.e. non-decreasing);
1920 -- "false" means monotonically decreasing (i.e. non-increasing).
1921 order [2] IMPLICIT INTEGER
1922 -- Same as defined by 'elementOrdering' in tagSet-M, though this may be
1923 -- overridden by schema.
1928 Usage ::= SEQUENCE {
1929 type [1] IMPLICIT INTEGER{
1930 redistributable (1), -- Element is freely redistributable.
1931 restricted (2), -- Restriction contains statement.
1932 licensePointer (3) -- Restriction contains license pointer.
1934 restriction [2] IMPLICIT InternationalString OPTIONAL}
1938 HitVector ::= SEQUENCE{
1939 -- Each hit vector points to a fragment within the element, via location and/or token.
1940 satisfier Term OPTIONAL, -- sourceword, etc.
1941 offsetIntoElement [1] IMPLICIT IntUnit OPTIONAL,
1942 length [2] IMPLICIT IntUnit OPTIONAL,
1943 hitRank [3] IMPLICIT INTEGER OPTIONAL,
1944 targetToken [4] IMPLICIT OCTET STRING OPTIONAL
1945 -- Origin may use token subsequently within a variantRequest (in
1946 -- an elementRequest) to retrieve (or to refer to) the fragment.
1952 Variant ::= SEQUENCE{
1953 globalVariantSetId [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
1954 -- Applies to the triples below, when variantSetId omitted. If
1955 -- globalVariantSetId omitted, default applies. Default may be provided by
1956 -- the tagSet-M element defaultVariantSetId.
1961 triples [2] IMPLICIT SEQUENCE OF SEQUENCE{
1962 variantSetId [0] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
1963 -- If omitted, globalVariantSetId (above)
1964 -- applies, unless that too is omitted, in
1965 -- which case, default used.
1966 class [1] IMPLICIT INTEGER,
1967 type [2] IMPLICIT INTEGER,
1970 internationalString InternationalString,
1971 octetString OCTET STRING,
1972 objectIdentifier OBJECT IDENTIFIER,
1975 -- Following need context tags:
1976 unit [1] IMPLICIT Unit,
1977 valueAndUnit [2] IMPLICIT IntUnit}}}
1982 RecordSyntax-ESTaskPackage
1983 {Z39-50-recordSyntax ESTaskPackage (106)} DEFINITIONS ::=
1985 IMPORTS Permissions, InternationalString, IntUnit, DiagRec FROM Z39-50-APDU-1995;
1987 TaskPackage ::= SEQUENCE{
1988 packageType [1] IMPLICIT OBJECT IDENTIFIER,
1989 -- oid of specific ES definition
1990 packageName [2] IMPLICIT InternationalString OPTIONAL,
1991 userId [3] IMPLICIT InternationalString OPTIONAL,
1992 retentionTime [4] IMPLICIT IntUnit OPTIONAL,
1993 permissions [5] IMPLICIT Permissions OPTIONAL,
1994 description [6] IMPLICIT InternationalString OPTIONAL,
1995 targetReference [7] IMPLICIT OCTET STRING OPTIONAL,
1996 creationDateTime [8] IMPLICIT GeneralizedTime OPTIONAL,
1997 taskStatus [9] IMPLICIT INTEGER{
2002 packageDiagnostics [10] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
2003 taskSpecificParameters [11] IMPLICIT EXTERNAL
2004 -- Use oid for specific ES definition
2005 -- (same oid as packageType above)
2006 -- and select [2] "taskPackage."
2013 ResourceReport-Format-Resource-1
2014 {Z39-50-resourceReport resource-1 (1)} DEFINITIONS ::=
2016 IMPORTS InternationalString FROM Z39-50-APDU-1995;
2018 ResourceReport ::= SEQUENCE{
2019 estimates [1] IMPLICIT SEQUENCE OF Estimate,
2020 message [2] IMPLICIT InternationalString}
2022 Estimate ::= SEQUENCE{
2023 type [1] IMPLICIT EstimateType,
2024 value [2] IMPLICIT INTEGER, -- the actual estimate
2025 currency-code [3] IMPLICIT INTEGER OPTIONAL
2026 -- code for representation of currencies defined in ISO 4217-1990.
2027 -- Applicable only to monetary estimates.
2029 EstimateType ::= INTEGER{
2030 currentSearchRecords (1), -- estimated no. records in current (incomplete) result set for search
2031 finalSearchRecords (2), -- estimated no. records that will be in result set if search completes
2032 currentPresentRecords (3), -- estimated number of records in current (incomplete) set of
2033 -- records to be returned on Present
2034 finalPresentRecords (4), -- estimated number of records that will be in the set of records
2035 -- to be returned by Present if Present completes
2036 currentOpTimeProcessing (5), -- processing time (in .001 CPU seconds) used by operation so far
2037 finalOpTimeProcessing (6), -- estimated total processing time (in .001 CPU seconds) that will
2038 -- be used by this operation if it completes
2039 currentAssocTime (7), -- estimated processing time used by association (in .001 CPU sec.)
2040 currentOperationCost (8), -- estimated cost for this operation so far
2041 finalOperationCost (9), -- estimated cost for this operation if it completes
2042 currentAssocCost (10), -- estimated cost for this association so far
2043 finalOpTimeElapsed (11), -- estimated elapsed time for operation if it completes (in .001 sec.)
2044 percentComplete (12), -- estimated percent complete
2045 currentSearchAssocCost (13), -- estimated search cost for association so far
2046 currentPresentAssocCost (14), -- estimated present cost for this association so far
2047 currentConnectAssocCost (15), -- estimated connect time cost for association so far
2048 currentOtherAssocCost (16) -- estimated other cost (not included in 13-15) for association so far
2064 ResourceReport-Format-Resource-2
2065 {Z39-50-resourceReport resource-2 (2)} DEFINITIONS ::=
2067 IMPORTS InternationalString, StringOrNumeric, IntUnit FROM Z39-50-APDU-1995;
2069 ResourceReport ::= SEQUENCE{
2070 estimates [1] IMPLICIT SEQUENCE OF Estimate OPTIONAL,
2071 message [2] IMPLICIT InternationalString OPTIONAL}
2073 Estimate ::= SEQUENCE{
2074 type [1] StringOrNumeric,
2075 -- Numeric values of 1-16 are the same as used in Resource-1.
2076 value [2] IMPLICIT IntUnit
2077 -- When expressing currency:
2078 -- unitSystem (of Unit) is 'z3950' (case insensitive)
2079 -- unitType is 'iso4217-1990' (case insensitive)
2080 -- unit is currency code from ISO 4217-1990.
2088 AccessControlFormat-prompt-1
2089 {Z39-50-accessControl prompt-1 (1)} DEFINITIONS ::=
2091 IMPORTS InternationalString, DiagRec FROM Z39-50-APDU-1995;
2093 PromptObject ::= CHOICE{
2094 challenge [1] IMPLICIT Challenge,
2095 response [2] IMPLICIT Response}
2097 Challenge ::= SEQUENCE OF SEQUENCE {
2098 promptId [1] PromptId,
2099 -- Target supplies a number (for an enumerated prompt) or string (for a non
2100 -- -enumerated prompt), for each prompt, and the origin returns it in response, for
2101 -- this prompt, so target may correlate the prompt response with the prompt.
2102 defaultResponse [2] IMPLICIT InternationalString OPTIONAL,
2103 promptInfo [3] CHOICE{
2104 character [1] IMPLICIT InternationalString,
2105 encrypted [2] IMPLICIT Encryption} OPTIONAL,
2106 -- Information corresponding to an enumerated prompt. For example if 'type', within
2107 -- PromptId, is 'copyright', then promptInfo may contain a copyright statement.
2108 regExpr [4] IMPLICIT InternationalString OPTIONAL,
2109 -- A regular expression that promptResponse should match. See IEEE 1003.2
2110 -- Volume 1, Section 2.8 "Regular Expression Notation." For example if promptId
2111 -- is "Year of publication," regExpr might be "19[89][0-9]|20[0-9][0-9]".
2112 responseRequired [5] IMPLICIT NULL OPTIONAL,
2113 allowedValues [6] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
2114 -- e.g. promptId="Desired color"; allowed = 'red', 'blue','Green'.
2115 shouldSave [7] IMPLICIT NULL OPTIONAL,
2116 -- Target recommends that origin save the data that it prompts from the
2117 -- user corresponding to this prompt, because it is likely to be requested again (so
2118 -- origin might not have to prompt the user next time).
2119 dataType [8] IMPLICIT INTEGER{
2125 boolean (6)} OPTIONAL,
2126 -- Target telling origin type of data it wants. E.g., if "date" is specified,
2127 -- presumably the origin will try to prompt something "date-like" from the user.
2128 diagnostic [9] IMPLICIT EXTERNAL OPTIONAL
2129 -- Intended for repeat requests when there is an error the origin
2130 -- should report to the user from previous attempt.
2134 Response ::= SEQUENCE OF SEQUENCE {
2135 promptId [1] PromptId,
2136 -- Corresponds to a prompt in the challenge, or may be unprompted, for
2137 -- example "newPassword." If unprompted, should be "enumerated."
2138 -- If this responds to a non-enumerated prompt, then nonEnumeratedPrompt
2139 -- should contain the prompt string from the challenge.
2140 promptResponse [2] CHOICE{
2141 string [1] IMPLICIT InternationalString,
2142 accept [2] IMPLICIT BOOLEAN,
2143 acknowledge [3] IMPLICIT NULL,
2144 diagnostic [4] DiagRec,
2145 encrypted [5] IMPLICIT Encryption}}
2148 PromptId ::= CHOICE{
2149 enummeratedPrompt [1] IMPLICIT SEQUENCE{
2150 type [1] IMPLICIT INTEGER{
2156 -- When type on Challenge is 'copyright', promptInfo has text of
2157 -- copyright message to be displayed verbatim to the user. If
2158 -- promptResponse indicates 'acceptance', this indicates the user has been
2159 -- shown, and accepted, the terms of the copyright. This is not intended
2160 -- to be legally binding, but provides a good-faith attempt on
2161 -- the part of the target to inform the user of the copyright.
2163 suggestedString [2] IMPLICIT InternationalString OPTIONAL},
2164 nonEnumeratedPrompt [2] IMPLICIT InternationalString}
2167 Encryption ::= SEQUENCE{
2168 cryptType [1] IMPLICIT OCTET STRING OPTIONAL,
2169 credential [2] IMPLICIT OCTET STRING OPTIONAL,
2170 --random number, SALT, or other factor
2171 data [3] IMPLICIT OCTET STRING}
2178 AccessControlFormat-des-1
2179 {Z39-50-accessControlFormat des-1 (2)} DEFINITIONS ::=
2181 DES-RN-Object ::= CHOICE {
2182 challenge [1] IMPLICIT DRNType,
2183 response [2] IMPLICIT DRNType}
2184 DRNType ::= SEQUENCE{
2185 userId [1] IMPLICIT OCTET STRING OPTIONAL,
2186 salt [2] IMPLICIT OCTET STRING OPTIONAL,
2187 randomNumber [3] IMPLICIT OCTET STRING}
2191 AccessControlFormat-krb-1
2192 {Z39-50-accessControlFormat krb-1 (3)} DEFINITIONS ::=
2194 IMPORTS InternationalString FROM Z39-50-APDU-1995;
2196 KRBObject ::= CHOICE {
2197 challenge [1] IMPLICIT KRBRequest,
2198 response [2] IMPLICIT KRBResponse}
2199 KRBRequest ::= SEQUENCE{
2200 service [1] IMPLICIT InternationalString,
2201 instance [2] IMPLICIT InternationalString OPTIONAL,
2202 realm [3] IMPLICIT InternationalString OPTIONAL}
2203 -- target requests a ticket for the given service, instance, and realm
2204 KRBResponse ::= SEQUENCE{
2205 userid [1] IMPLICIT InternationalString OPTIONAL,
2206 ticket [2] IMPLICIT OCTET STRING}
2207 -- origin responds with a ticket for the requested service
2218 ESFormat-PersistentResultSet
2219 {Z39-50-extendedService PersistentResultSet (1)} DEFINITIONS ::=
2221 IMPORTS InternationalString FROM Z39-50-APDU-1995;
2222 PersistentResultSet ::= CHOICE{
2223 esRequest [1] IMPLICIT SEQUENCE{
2224 toKeep [1] IMPLICIT NULL,
2225 notToKeep [2] OriginPartNotToKeep OPTIONAL},
2226 taskPackage [2] IMPLICIT SEQUENCE{
2227 originPart [1] IMPLICIT NULL,
2228 targetPart [2] TargetPart OPTIONAL}}
2229 OriginPartNotToKeep ::= SEQUENCE{
2230 originSuppliedResultSet [1] IMPLICIT InternationalString OPTIONAL,
2231 -- name of transient result set, supplied on request, mandatory unless function is 'delete'
2232 replaceOrAppend [2] IMPLICIT INTEGER{ -- only if function is "modify"
2234 append (2)} OPTIONAL}
2235 TargetPart ::= SEQUENCE{
2236 targetSuppliedResultSet [1] IMPLICIT InternationalString OPTIONAL,
2237 -- Name of transient result set, supplied by target, representing the persistent result set to which
2238 -- package pertains. Meaningful only when package is presented. (i.e. not on ES response).
2239 numberOfRecords [2] IMPLICIT INTEGER OPTIONAL}
2243 ESFormat-PersistentQuery
2244 {Z39-50-extendedService PersistentQuery (2)} DEFINITIONS ::=
2246 IMPORTS Query, InternationalString, OtherInformation FROM Z39-50-APDU-1995;
2247 PersistentQuery ::= CHOICE{
2248 esRequest [1] IMPLICIT SEQUENCE{
2249 toKeep [1] OriginPartToKeep OPTIONAL,
2250 notToKeep [2] OriginPartNotToKeep},
2251 taskPackage [2] IMPLICIT SEQUENCE{
2252 originPart [1] OriginPartToKeep OPTIONAL,
2253 targetPart [2] TargetPart}}
2254 OriginPartToKeep ::= SEQUENCE{
2255 dbNames [2] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
2256 additionalSearchInfo [3] OtherInformation OPTIONAL}
2257 OriginPartNotToKeep ::= CHOICE{
2258 package [1] IMPLICIT InternationalString,
2260 TargetPart ::= Query
2263 ESFormat-PeriodicQuerySchedule
2264 {Z39-50-extendedService PeriodicQuerySchedule (3)} DEFINITIONS ::=
2266 IMPORTS Query, InternationalString, IntUnit FROM Z39-50-APDU-1995
2267 ExportSpecification, Destination FROM ESFormat-ExportSpecification;
2269 PeriodicQuerySchedule ::= CHOICE{
2270 esRequest [1] IMPLICIT SEQUENCE{
2271 toKeep [1] OriginPartToKeep,
2272 notToKeep [2] OriginPartNotToKeep},
2273 taskPackage [2] IMPLICIT SEQUENCE{
2274 originPart [1] OriginPartToKeep,
2275 targetPart [2] TargetPart}}
2277 OriginPartToKeep ::=SEQUENCE{
2278 activeFlag [1] IMPLICIT BOOLEAN,
2279 databaseNames [2] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
2280 resultSetDisposition [3] IMPLICIT INTEGER{
2283 createNew (3) -- Only if origin and target have agreement about
2284 -- naming convention for the resulting package,
2285 -- and only if no result set is specified.
2286 } OPTIONAL, -- Mandatory on 'create' if result set is specified, in
2287 -- which case it must be 'replace' or 'append.
2288 alertDestination [4] Destination OPTIONAL,
2289 exportParameters [5] CHOICE{
2290 packageName [1] IMPLICIT InternationalString,
2291 exportPackage [2] ExportSpecification} OPTIONAL}
2293 OriginPartNotToKeep ::= SEQUENCE{
2294 querySpec [1] CHOICE{
2295 actualQuery [1] Query,
2296 packageName [2] IMPLICIT InternationalString} OPTIONAL,
2297 -- mandatory for 'create'
2298 originSuggestedPeriod [2] Period OPTIONAL, -- mandatory for 'create'
2299 expiration [3] IMPLICIT GeneralizedTime OPTIONAL,
2300 resultSetPackage [4] IMPLICIT InternationalString OPTIONAL}
2302 TargetPart ::= SEQUENCE{
2303 actualQuery [1] Query,
2304 targetStatedPeriod [2] Period,
2305 -- Target supplies the period, which may be same as origin proposed.
2306 expiration [3] IMPLICIT GeneralizedTime OPTIONAL,
2307 -- Target supplies value for task package. It may be the same as origin
2308 -- proposed or different from (and overrides) origin proposal, but if
2309 -- omitted, there is no expiration.
2310 resultSetPackage [4] IMPLICIT InternationalString OPTIONAL,
2311 -- May be omitted only if exportParameters was supplied. Target
2312 -- supplies same name as origin supplied, if origin did supply a name.
2313 lastQueryTime [5] IMPLICIT GeneralizedTime,
2314 lastResultNumber [6] IMPLICIT INTEGER,
2315 numberSinceModify [7] IMPLICIT INTEGER OPTIONAL}
2321 unit [1] IMPLICIT IntUnit,
2322 businessDaily [2] IMPLICIT NULL,
2323 continuous [3] IMPLICIT NULL,
2324 other [4] IMPLICIT InternationalString}
2329 {Z39-50-extendedService ItemOrder (4)} DEFINITIONS ::=
2331 IMPORTS InternationalString FROM Z39-50-APDU-1995;
2332 ItemOrder ::= CHOICE{
2333 esRequest [1] IMPLICIT SEQUENCE{
2334 toKeep [1] OriginPartToKeep OPTIONAL,
2335 notToKeep [2] OriginPartNotToKeep},
2336 taskPackage [2] IMPLICIT SEQUENCE{
2337 originPart [1] OriginPartToKeep OPTIONAL,
2338 targetPart [2] TargetPart}}
2339 OriginPartToKeep ::= SEQUENCE{
2340 supplDescription [1] IMPLICIT EXTERNAL OPTIONAL,
2341 contact [2] IMPLICIT SEQUENCE{
2342 name [1] IMPLICIT InternationalString OPTIONAL,
2343 phone [2] IMPLICIT InternationalString OPTIONAL,
2344 email [3] IMPLICIT InternationalString OPTIONAL} OPTIONAL,
2345 addlBilling [3] IMPLICIT SEQUENCE{
2346 paymentMethod [1] CHOICE{
2347 billInvoice [0] IMPLICIT NULL,
2348 prepay [1] IMPLICIT NULL,
2349 depositAccount [2] IMPLICIT NULL,
2350 creditCard [3] IMPLICIT CreditCardInfo,
2351 cardInfoPreviouslySupplied [4] IMPLICIT NULL,
2352 privateKnown [5] IMPLICIT NULL,
2353 privateNotKnown [6] IMPLICIT EXTERNAL},
2354 customerReference [2] IMPLICIT InternationalString OPTIONAL,
2355 customerPONumber [3] IMPLICIT InternationalString OPTIONAL}
2357 CreditCardInfo ::= SEQUENCE{
2358 nameOnCard [1] IMPLICIT InternationalString,
2359 expirationDate [2] IMPLICIT InternationalString,
2360 cardNumber [3] IMPLICIT InternationalString}
2362 OriginPartNotToKeep ::= SEQUENCE{ -- Corresponds to 'requestedItem' in service definition.
2363 -- Must supply at least one, and may supply both.
2364 resultSetItem [1] IMPLICIT SEQUENCE{
2365 resultSetId [1] IMPLICIT InternationalString,
2366 item [2] IMPLICIT INTEGER} OPTIONAL,
2367 itemRequest [2] IMPLICIT EXTERNAL OPTIONAL
2368 -- When itemRequest is an ILL-Request APDU,
2369 -- use OID {iso standard 10161 abstract-syntax (2) ill-apdus (1)}
2372 TargetPart ::= SEQUENCE{
2373 itemRequest [1] IMPLICIT EXTERNAL OPTIONAL,
2374 -- When itemRequest is an ILL-Request APDU, use OID 1.0.10161.2.1 (as above)
2375 statusOrErrorReport [2] IMPLICIT EXTERNAL OPTIONAL,
2376 -- When statusOrErrorReport is an ILL Status-Or-Error-Report APDU, use OID 1.0.10161.2.1 (as above)
2377 auxiliaryStatus [3] IMPLICIT INTEGER{
2381 unfilledCopyright (4),
2382 filledCopyright (5)} OPTIONAL}
2389 {Z39-50-extendedService Update (5)} DEFINITIONS ::=
2391 IMPORTS DiagRec, InternationalString FROM Z39-50-APDU-1995;
2393 esRequest [1] IMPLICIT SEQUENCE{
2394 toKeep [1] OriginPartToKeep,
2395 notToKeep [2] OriginPartNotToKeep},
2396 taskPackage [2] IMPLICIT SEQUENCE{
2397 originPart [1] OriginPartToKeep,
2398 targetPart [2] TargetPart}}
2401 OriginPartToKeep ::= SEQUENCE{
2402 action [1] IMPLICIT INTEGER{
2407 databaseName [2] IMPLICIT InternationalString,
2408 schema [3] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
2409 elementSetName [4] IMPLICIT InternationalString OPTIONAL}
2412 OriginPartNotToKeep ::= SuppliedRecords
2415 TargetPart ::= SEQUENCE{
2416 updateStatus [1] IMPLICIT INTEGER{
2420 globalDiagnostics [2] IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
2421 -- These are non-surrogate diagnostics relating to the task,
2422 -- not to individual records.
2423 taskPackageRecords [3] IMPLICIT SEQUENCE OF TaskPackageRecordStructure OPTIONAL
2424 -- There should be a TaskPackageRecordStructure for every record
2425 -- supplied. The target should create such a structure for every
2426 -- record immediately upon creating the task package to include
2427 -- correlation information and status. The record itself would not
2428 -- be included until processing for that record is complete.
2431 -- Auxiliary definitions for Update
2432 SuppliedRecords ::= SEQUENCE OF SEQUENCE{
2433 recordId [1] CHOICE{
2434 number [1] IMPLICIT INTEGER,
2435 string [2] IMPLICIT InternationalString,
2436 opaque [3] IMPLICIT OCTET STRING} OPTIONAL,
2437 supplementalId [2] CHOICE{
2438 timeStamp [1] IMPLICIT GeneralizedTime,
2439 versionNumber [2] IMPLICIT InternationalString,
2440 previousVersion [3] IMPLICIT EXTERNAL} OPTIONAL,
2441 correlationInfo [3] IMPLICIT CorrelationInfo OPTIONAL,
2442 record [4] IMPLICIT EXTERNAL}
2444 CorrelationInfo ::= SEQUENCE{
2445 -- origin may supply one or both for any record:
2446 note [1] IMPLICIT InternationalString OPTIONAL,
2447 id [2] IMPLICIT INTEGER OPTIONAL}
2449 TaskPackageRecordStructure ::= SEQUENCE{
2450 recordOrSurDiag [1] CHOICE {
2451 record [1] IMPLICIT EXTERNAL,
2452 -- Choose 'record' if recordStatus is 'success', and
2453 -- elementSetName was supplied.
2454 diagnostic [2] DiagRec
2455 -- Choose 'diagnostic', if RecordStatus is failure.
2457 -- The parameter recordOrSurDiag will thus be omitted only if
2458 -- 'elementSetName' was omitted and recordStatus is
2459 -- 'success'; or if record status is 'queued' or in 'process'.
2460 correlationInfo [2] IMPLICIT CorrelationInfo OPTIONAL,
2461 -- This should be included if it was supplied by the origin.
2462 recordStatus [3] IMPLICIT INTEGER{
2470 ESFormat-ExportSpecification
2471 {Z39-50-extendedService ExportSpecification (6)} DEFINITIONS ::=
2473 EXPORTS ExportSpecification, Destination; IMPORTS CompSpec, InternationalString FROM Z39-50-APDU-1995;
2474 ExportSpecification ::= CHOICE{
2475 esRequest [1] IMPLICIT SEQUENCE{
2476 toKeep [1] OriginPartToKeep,
2477 notToKeep [2] IMPLICIT NULL},
2478 taskPackage [2] IMPLICIT SEQUENCE{
2479 originPart [1] OriginPartToKeep,
2480 targetPart [2] IMPLICIT NULL}}
2481 OriginPartToKeep ::= SEQUENCE{
2482 composition [1] IMPLICIT CompSpec,
2483 exportDestination [2] Destination}
2485 Destination ::= CHOICE{
2486 phoneNumber [1] IMPLICIT InternationalString,
2487 faxNumber [2] IMPLICIT InternationalString,
2488 x400address [3] IMPLICIT InternationalString,
2489 emailAddress [4] IMPLICIT InternationalString,
2490 pagerNumber [5] IMPLICIT InternationalString,
2491 ftpAddress [6] IMPLICIT InternationalString,
2492 ftamAddress [7] IMPLICIT InternationalString,
2493 printerAddress [8] IMPLICIT InternationalString,
2494 other [100] IMPLICIT SEQUENCE{
2495 vehicle [1] IMPLICIT InternationalString OPTIONAL,
2496 destination [2] IMPLICIT InternationalString}}
2502 ESFormat-ExportInvocation
2503 {Z39-50-extendedService ExportInvocation (7)} DEFINITIONS ::=
2505 IMPORTS InternationalString, IntUnit FROM Z39-50-APDU-1995
2506 ExportSpecification FROM ESFormat-ExportSpecification;
2507 ExportInvocation ::= CHOICE{
2508 esRequest [1] IMPLICIT SEQUENCE{
2509 toKeep [1] OriginPartToKeep,
2510 notToKeep [2] OriginPartNotToKeep},
2511 taskPackage [2] IMPLICIT SEQUENCE{
2512 originPart [1] OriginPartToKeep,
2513 targetPart [2] TargetPart OPTIONAL}}
2515 OriginPartToKeep ::= SEQUENCE{
2516 exportSpec [1] CHOICE{
2517 packageName [1] IMPLICIT InternationalString,
2518 packageSpec [2] ExportSpecification},
2519 numberOfCopies [2] IMPLICIT INTEGER}
2525 OriginPartNotToKeep ::= SEQUENCE{
2526 resultSetId [1] IMPLICIT InternationalString,
2528 all [1] IMPLICIT NULL,
2529 ranges [2] IMPLICIT SEQUENCE OF SEQUENCE{
2530 start [1] IMPLICIT INTEGER,
2531 count [2] IMPLICIT INTEGER OPTIONAL
2532 -- Count may be omitted only on last range, to indicate
2533 -- "all remaining records beginning with 'start'."
2536 TargetPart ::= SEQUENCE{
2537 estimatedQuantity [1] IMPLICIT IntUnit OPTIONAL,
2538 quantitySoFar [2] IMPLICIT IntUnit OPTIONAL,
2539 estimatedCost [3] IMPLICIT IntUnit OPTIONAL,
2540 costSoFar [4] IMPLICIT IntUnit OPTIONAL}
2545 UserInfoFormat-searchResult-1
2546 {Z39-50-userInfoFormat searchResult-1 (1)} DEFINITIONS ::=
2548 IMPORTS DatabaseName, Term, Query, IntUnit, InternationalString FROM Z39-50-APDU-1995;
2549 SearchInfoReport ::= SEQUENCE OF SEQUENCE{
2550 subqueryId [1] IMPLICIT InternationalString OPTIONAL,
2551 -- shorthand identifier of subquery
2552 fullQuery [2] IMPLICIT BOOLEAN, -- 'true' means this is the full query; 'false',
2554 subqueryExpression [3] QueryExpression OPTIONAL, -- A subquery of the query as
2555 -- submitted. May be whole query;
2556 -- if so, "fullQuery" should be 'true'.
2557 subqueryInterpretation [4] QueryExpression OPTIONAL, -- how target interpreted subquery
2558 subqueryRecommendation [5] QueryExpression OPTIONAL, -- target-recommended alternative
2559 subqueryCount [6] IMPLICIT INTEGER OPTIONAL, -- Number of records for this
2560 -- subQuery, across all of the specified
2561 -- databases. (If during search, via resource
2562 -- control, number of records so far).
2563 subqueryWeight [7] IMPLICIT IntUnit OPTIONAL, -- relative weight of this subquery
2564 resultsByDB [8] IMPLICIT ResultsByDB OPTIONAL}
2566 ResultsByDB ::= SEQUENCE OF SEQUENCE{
2567 databases [1] CHOICE{
2568 all [1] IMPLICIT NULL,
2569 -- applies across all of the databases in Search PDU
2570 list [2] IMPLICIT SEQUENCE OF DatabaseName
2571 -- applies across all databases in this list
2573 count [2] IMPLICIT INTEGER OPTIONAL,
2574 -- Number of records for query component (and, as above, if during search,
2575 -- via resource control, number of records so far).
2576 resultSetName [3] IMPLICIT InternationalString OPTIONAL
2577 -- Target-assigned result set by which subQuery is available. Should not
2578 -- be provided unless processing for this query component is concluded (i.e.,
2579 -- when this report comes during search, via resource control, as opposed
2580 -- to after search, via additionalSearchInfo).
2583 QueryExpression ::= CHOICE {
2584 term [1] IMPLICIT SEQUENCE{
2586 termComment [2] IMPLICIT InternationalString OPTIONAL},
2592 ElementSpecificationFormat-eSpec-1
2593 {Z39-50-elementSpec eSpec-1 (1)} DEFINITIONS ::=
2595 IMPORTS Variant FROM RecordSyntax-generic
2596 StringOrNumeric, InternationalString FROM Z39-50-APDU-1995;
2598 Espec-1 ::= SEQUENCE{
2599 elementSetNames [1] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
2600 -- Origin may include one or more element set names, each
2601 -- specifying a set of elements. Each of the elements is to be
2602 -- treated as an elementRequest in the form of simpleElement,
2603 -- where occurrence is 1.
2604 defaultVariantSetId [2] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
2605 -- If supplied, applies whenever variantRequest
2606 -- does not include variantSetId.
2607 defaultVariantRequest [3] IMPLICIT Variant OPTIONAL,
2608 -- If supplied, then for each simple elementRequest that does not
2609 -- include a variantRequest, the defaultVariantRequest applies.
2610 -- (defaultVariantRequest does not apply to a compositeRequest.)
2611 defaultTagType [4] IMPLICIT INTEGER OPTIONAL,
2612 -- If supplied, applies whenever 'tagType' (within 'tag' within TagPath)
2614 elements [5] IMPLICIT SEQUENCE OF ElementRequest OPTIONAL}
2617 ElementRequest::= CHOICE{
2618 simpleElement [1] IMPLICIT SimpleElement,
2619 compositeElement [2] IMPLICIT SEQUENCE{
2620 elementList [1] CHOICE{
2621 primitives [1] IMPLICIT SEQUENCE OF InternationalString,
2622 -- Origin may specify one or more element
2623 -- set names, each identifying a set of elements,
2624 -- and the composite element is the union.
2625 specs [2] IMPLICIT SEQUENCE OF SimpleElement},
2627 deliveryTag [2] IMPLICIT TagPath,
2628 -- DeliveryTag tagPath for compositeElement may not
2629 -- include wildThing or wildPath.
2630 variantRequest [3] IMPLICIT Variant OPTIONAL}}
2632 SimpleElement ::= SEQUENCE{
2633 path [1] IMPLICIT TagPath,
2634 variantRequest [2] IMPLICIT Variant OPTIONAL}
2637 TagPath ::= SEQUENCE OF CHOICE{
2638 specificTag [1] IMPLICIT SEQUENCE{
2639 tagType [1] IMPLICIT INTEGER OPTIONAL,
2640 -- If omitted, then 'defaultTagType' (above) applies, if supplied, and
2641 -- if not supplied, then default listed in schema applies.
2642 tagValue [2] StringOrNumeric,
2643 occurrence [3] Occurrences OPTIONAL
2644 -- default is "first occurrence"
2646 wildThing [2] Occurrences,
2647 -- Get Nth "thing" at this level, regardless of tag, for each N specified by
2648 -- "Occurrences" (which may be 'all' meaning match every element at this level).
2649 -- E.g., if "Occurrences" is 3, get third element regardless of its tag or the tag of
2650 -- the first two elements.
2651 wildPath [3] IMPLICIT NULL
2652 -- Match any tag, at this level or below, that is on a path for which next tag in this
2653 -- TagPath sequence occurs. WildPath may not be last member of the TagPath
2658 Occurrences ::= CHOICE{
2659 all [1] IMPLICIT NULL,
2660 last [2] IMPLICIT NULL,
2661 values [3] IMPLICIT SEQUENCE{
2662 start [1] IMPLICIT INTEGER,
2663 -- if 'start' alone is included, then single occurrence is requested
2664 howMany [2] IMPLICIT INTEGER OPTIONAL
2665 -- For example, if 'start' is 5 and 'howMany' is 6, then request is for
2666 -- "occurrences 5 through 10."