- From: Alan Kent <ajk@mds.rmit.edu.au>
- Date: Wed, 15 Nov 2000 11:01:02 +1100 (EST)
- To: www-zig@w3.org
Cute. I found all the additional categories we supported with the ASN.1 by searching our Explain database. All non-standard categories by definition must include the ASN.1 of the category in the database for other people to be able to access. I actually used it! We (claim to :-) support the following explain categories. CCL> base ir-explain-1 CCL> scan Term ID Records Term T1 ? AttributeSetInfo T2 ? CategoryList T3 ? CCLInfo T4 ? DatabaseInfo T5 ? ElementSetDetails T6 ? Processing T7 ? RecordSyntaxInfo T8 ? SchemaInfo T9 ? SgmlEntity T10 ? SortDetails T11 ? TagSetInfo T12 ? TargetInfo T13 ? ZAssociation T14 ? ConfigParam T15 ? RecordStructure The non-standard categories are as follows CCLInfo: Used to map CCL field names to attribute lists. "fields" can be searched and/or scanned. We also support an extension to CCL which allows functions to be specified in queries (for example, @fuzzy(centre) does fuzzy matching on the word center). Functions (operators) just map to attribute lists to add to attribute lists for field names. I think this category is essential in order to properly support web forms or CCL queries with Z39.50. It gives a very simple structure that has human displayable names (eg for a drop down list) and associated attribute lists. The attribute lists may or may not be scannable so its not just a termlist. For example, it may be "author stemmed" or "title fuzzy". It could even possibly be useful to have an additional "application name" for the records to make different sets of field names available to CCL and the web. SgmlEntity: Used to hold a system identifier and the body of an external entity. I think this should be reviewed before it was made into a real category. For example, the entity should possibly be an OCTET STRING with an encoding rather than just InternationalString. Not sure. Also, we sometimes would like to be able to associate SGML external entities with individual databases with global ones being valid for all databases. ie: a query would say "systemidentifer=foo.dtd and databasename=manuals" and it would look for foo.dtd in a particular database, otherwise default to the globally defined DTD. Record level may also be useful (eg: so images can be stored in a record with the SGML/XML), but identifying which record was an issue - index in a result set? local control number?). But I think this category is useful if Z39.50 is going to be used more with XML and SGML. ZAssociation: We decided to return (if you had appropriate permissions) information about current connections. This information is purely dynamic, not static like most other categories. But it allowed an easy way to work out what was going on via a query interface. ConfigParam: We made all the Z39.50 target configuration parameters availabe as an explain category. It was easy to do, but no-one has used it yet. We plan to use it later to allow clients (with appropriate authority) to interrogate system configuration information, and possibly update it on the fly. RecordStructure: This is probably not a good candiate. It describes how *we* represent records internally. This is close to GRS-1. It allows clients ask about the physical representation of data as distinct from logical (elements, element sets, attributes, etc). But the ASN.1 below is probably SIM (our product) specific. The ASN.1 is as follows. (The following was word wrapped a bit but I could not be bothered reformatting nicely. I just cut and paste from our CCL client. If its important I can resend formatted nicely. But I think its semantics that are important, not the exact ASN.1 at this stage.) category: CCLInfo description: text: Information which allows CCL queries to be turned into RPN queries. asn1Module: SIM-20-CCLInfo {z39-50-recordSyntax 1000 62 1 2} DEFINITIONS ::= BEGIN IMPORTS DatabaseName, AttributeSetId, AttributeList, InternationalString FROM Z39-50-APDU CommonInfo, HumanString FROM Z39-50-EXPLAIN z39-50-recordSyntax FROM Z39-50-Oids; -- -- CCL info -- Page 3 of 30 Record 1 of 1 CCLInfo ::= --snacc isPdu:"TRUE" -- SEQUENCE { commonInfo [0] IMPLICIT CommonInfo OPTIONAL, -- Key element follows: databaseName [1] IMPLICIT DatabaseName, -- No non-key brief elements cclField [2] IMPLICIT CCLField } -- -- CCL Field -- CCLField ::= SEQUENCE { defaultAttributeSet [1] IMPLICIT AttributeSetId, fields [2] IMPLICIT SEQUENCE OF SEQUENCE { fieldNames [3] IMPLICIT SEQUENCE OF Page 4 of 30 Record 1 of 1 SEQUENCE { name [4] IMPLICIT InternationalString }, description [5] IMPLICIT HumanString OPTIONAL, attributeList [6] IMPLICIT AttributeList, termListName [11] IMPLICIT InternationalString OPTIONAL, scanable [12] IMPLICIT BOOLEAN OPTIONAL, -- field is assumed to be both searchable and scanable if scanable -- flag is not set. If this is set the the field is either -- searchable (false) or scannable (true). hidden [14] IMPLICIT NULL OPTIONAL, -- If this exists then the field should not normally be displayed -- in a client as the field is intended for internal use. Page 5 of 30 Record 1 of 1 termFormat [13] IMPLICIT INTEGER { general (1), numeric (2), characterString (3), oid (4), dateTime (5), external (6), integerAndUnit (7), null (8) } OPTIONAL -- term will be assumed to be general if termFormat is not -- specified. }, operators [7] IMPLICIT SEQUENCE OF SEQUENCE { name [8] IMPLICIT InternationalString, description [9] IMPLICIT HumanString OPTIONAL, Page 6 of 30 Record 1 of 1 attributeList [10] IMPLICIT AttributeList } } END categories: category: SgmlEntity description: text: Information about known sgml entities asn1Module: SIM-20-SGMLEntity {z39-50-recordSyntax 1000 62 1 3} DEFINITIONS ::= Page 9 of 30 Record 1 of 1 BEGIN IMPORTS InternationalString FROM Z39-50-APDU CommonInfo, HumanString FROM Z39-50-EXPLAIN z39-50-recordSyntax FROM Z39-50-Oids; -- -- SGML external entities -- SGMLEntityDefinition ::= --snacc isPdu:"TRUE" -- SEQUENCE { commonInfo [0] IMPLICIT CommonInfo OPTIONAL, -- Key elements follow: systemIdentifier [1] IMPLICIT InternationalString, -- No non-key brief elements Page 10 of 30 Record 1 of 1 description [2] IMPLICIT HumanString OPTIONAL, -- Optional description of what the External Entity etc is for. contents [3] IMPLICIT InternationalString OPTIONAL -- Actual text of the External Entity. } END category: ZAssociation description: text: Information about the currently connected users and what CCL> Page 12 of 30 Record 1 of 1 they are doing asn1Module: SIM-30-Status {z39-50-recordSyntax 1000 62 1 7} DEFINITIONS ::= BEGIN IMPORTS Options, InternationalString, ReferenceId, Query, SearchRequest FROM Z39-50-APDU CommonInfo FROM Z39-50-EXPLAIN z39-50-recordSyntax FROM Z39-50-Oids; -- -- ZAssociation Info -- ZAssociationInfo ::= --snacc isPdu:"TRUE" -- SEQUENCE { Page 13 of 30 Record 1 of 1 commonInfo [0] IMPLICIT CommonInfo OPTIONAL, -- Key elements follow connectionId [1] IMPLICIT INTEGER, -- Non-key brief elements follow self [2] IMPLICIT BOOLEAN, -- True if this is the currently connected Association. serverUpTime [3] IMPLICIT TimeStamp, -- The length of time in milliseconds the server has been up. connectTime [4] IMPLICIT TimeStamp, -- The offset from when the server was started to when this -- connection was established. Page 14 of 30 Record 1 of 1 lastOpTime [5] IMPLICIT TimeStamp, -- The last time a pdu was read/written from/to this connection. As -- a milli second offset from the starting time of the server. connectionIP [6] IMPLICIT INTEGER, -- the IP address that the client is connecting from. connectionName [7] IMPLICIT OCTET STRING, -- the name of the machine that the client is connecting from. -- This may be a fully qualified host name or a dot seperated ip address. connectionDetails [8] IMPLICIT ConnectionDetails OPTIONAL, -- details about the connection. This is only valid once the connection -- has been initialised. Page 15 of 30 Record 1 of 1 operationInfo [9] IMPLICIT SEQUENCE OF OperationInfo -- Information about the operations that fit the criteria of the search. } -- -- ConnectionDetails -- ConnectionDetails ::= SEQUENCE { options Options, -- The Z30.50 options associated with the connection. implementationId [1] IMPLICIT InternationalString OPTIONAL, -- The client implementation id. Page 16 of 30 Record 1 of 1 implementationName [2] IMPLICIT InternationalString OPTIONAL, -- The client implementation name. implementationVersion [3] IMPLICIT InternationalString OPTIONAL, -- The client implementation version. userName [4] IMPLICIT OCTET STRING, -- The userName of the connected user. organisation [5] IMPLICIT OCTET STRING OPTIONAL, -- The organisation of the user. this may not be set if the -- user does not belong to an organisation. groups [6] IMPLICIT SEQUENCE OF OCTET STRING, -- the groups the user belongs to. CCL> Page 17 of 30 Record 1 of 1 fullName [7] IMPLICIT OCTET STRING, -- The full name of the user. email [8] IMPLICIT OCTET STRING, -- the email addrss of the user. resultSetCount [9] IMPLICIT INTEGER OPTIONAL, -- The number of result sets that exist for this connection. -- (Optional as introduced in 3.1) resultSetMemory [10] IMPLICIT INTEGER OPTIONAL -- The approximate number of bytes of storage used to hold result sets. -- (Optional as introduced in 3.1) } -- -- Operation Info CCL> Page 18 of 30 Record 1 of 1 -- OperationInfo ::= SEQUENCE { startTime [1] IMPLICIT TimeStamp, -- The time since the server was started when this oprtation was started. runTime [2] IMPLICIT TimeStamp OPTIONAL, -- How long the operation ran for. kind [3] IMPLICIT INTEGER {initialise(0), search(1), present(2), deleteResultSet(3), resourceReport(4), scan(5), sort(6), extendedServices(7)}, -- the kind of operation that it is. referenceId [4] ReferenceId OPTIONAL, Page 19 of 30 Record 1 of 1 -- The referenceId of the operation (Assuming that the operation -- has a reference id) searchRequest [5] SearchRequest OPTIONAL -- The query that is being evaluated. If it is a search operation. } -- -- Time Stamp -- -- A time stamp records a time with the precision of milli-seconds. -- It is the time in milli-seconds since the server started accepting -- connectons. TimeStamp ::= INTEGER END categories: category: ConfigParam description: text: Information about the configuration parameters in the server asn1Module: SIM-31-ConfigParam {z39-50-recordSyntax 1000 62 1 8} DEFINITIONS ::= BEGIN IMPORTS DatabaseName, AttributeSetId, AttributeList, InternationalString FROM Z39-50-APDU CommonInfo, HumanString Page 21 of 30 Record 1 of 1 FROM Z39-50-EXPLAIN z39-50-recordSyntax FROM Z39-50-Oids; -- -- Configuration Parameter -- ConfigParam ::= --snacc isPdu:"TRUE" -- SEQUENCE { commonInfo [0] IMPLICIT CommonInfo OPTIONAL, -- Key element follows: configName [1] IMPLICIT OCTET STRING, -- The name of the configuration parameter. -- Non-key brief elements follow description [2] IMPLICIT InternationalString, CCL> Page 22 of 30 Record 1 of 1 -- A quick description of the configuration parameter. Suitable for -- reminding the user what the configuration parameter is for. This -- may be a few lines suitable for a tool tip. -- Non-brief elements follow. ALL the following, with the exception of -- defaultValue, will be included if a non-brief element set is specified. verboseDescription [3] IMPLICIT InternationalString OPTIONAL, -- Verbose description giving detailed information about the -- configuration parameter. Legal values, gotchas, etc. persistantValue [4] IMPLICIT SEQUENCE OF InternationalString OPTIONAL, -- The persistant value of the configuration Page 23 of 30 Record 1 of 1 parameter. i.e. what -- is stored in the simcms.config file. This is the initial value -- for the parameter if the server is restarted. activeValue [5] IMPLICIT SEQUENCE OF InternationalString OPTIONAL, -- The active value of the configuration parameter. What is -- actually in use at the moment. Normally persistantValue and -- activeValue will have the same value. They may be different if -- the admonistrator wanted to expriment with using a new value -- without actually changing the simcms.config file. defaultValue [6] IMPLICIT OCTET STRING OPTIONAL, -- If this exists when element set is non-brief then CCL> Page 24 of 30 Record 1 of 1 there exists a -- default value for the configuration parameter. The default value -- will only be applied if the number of activeValue's is zero. If -- this does not exist when a non-brief value element set is -- specified then there is no default value. minOccurrence [7] IMPLICIT INTEGER OPTIONAL, -- The minimum occurrence count for the value. maxOccurrence [8] IMPLICIT INTEGER OPTIONAL, -- The maximum occurrence count for the value. validate [9] CHOICE { any [1] IMPLICIT NULL, regexpPattern [2] IMPLICIT SEQUENCE OF OCTET STRING, legalValues [3] IMPLICIT SEQUENCE OF InternationalString, Page 25 of 30 Record 1 of 1 numericRange [4] IMPLICIT SEQUENCE { min [1] IMPLICIT INTEGER, max [2] IMPLICIT INTEGER } } OPTIONAL, -- The method of validation for the value. readOnly [10] IMPLICIT BOOLEAN OPTIONAL, -- True if the value cannot be changed. restartRequired [11] IMPLICIT BOOLEAN OPTIONAL -- True if a restart of the server is required for a change of the -- parameter to take effect. } END categories: category: RecordStructure CCL> Page 26 of 30 Record 1 of 1 description: text: Information about the physical structure of records within the server asn1Module: SIM-31-Recstruct {z39-50-recordSyntax 1000 62 1 9} DEFINITIONS ::= BEGIN IMPORTS DatabaseName, StringOrNumeric, InternationalString FROM Z39-50-APDU HighlightText, SgmlInfo FROM SIM-20-DB-Local z39-50-recordSyntax FROM Z39-50-Oids CommonInfo, HumanString FROM Z39-50-EXPLAIN; -- -- A local database definition CCL> Page 27 of 30 Record 1 of 1 -- RecstructInfo ::= --snacc isPdu:"TRUE" -- SEQUENCE { commonInfo [0] IMPLICIT CommonInfo OPTIONAL, -- Key element follows: databaseName [1] IMPLICIT DatabaseName, -- Non-key brief elements follow name [2] IMPLICIT InternationalString, -- Non-brief description elements follow. description [3] IMPLICIT HumanString OPTIONAL, -- Non-description elements follow. fields [4] IMPLICIT SEQUENCE OF RecfieldDef OPTIONAL CCL> Page 28 of 30 Record 1 of 1 } RecfieldDef ::= SEQUENCE { name CHOICE { textName [1] IMPLICIT InternationalString, tagPath [13] IMPLICIT SEQUENCE { tagType [1] IMPLICIT INTEGER, tagValue StringOrNumeric } }, mandatory [2] IMPLICIT BOOLEAN, repeating [3] IMPLICIT BOOLEAN, description [6] IMPLICIT HumanString OPTIONAL, type [7] RecfieldType, highlightText [11] IMPLICIT HighlightText, sentenceHighlightText [14] IMPLICIT HighlightText OPTIONAL, storageEncoding [12] IMPLICIT INTEGER {utf8(0), utf16(1) } OPTIONAL } RecfieldType ::= CHOICE { string [1] IMPLICIT NULL, uniString [2] IMPLICIT NULL, binary [3] IMPLICIT NULL, integer [4] IMPLICIT NULL, boolean [5] IMPLICIT NULL, dateTime [6] IMPLICIT NULL, duration [7] IMPLICIT NULL, marc [8] IMPLICIT OBJECT IDENTIFIER, -- Somewhere should have listing of string<->oid mappings for marc. sgml [9] IMPLICIT SgmlInfo, struct [10] IMPLICIT SEQUENCE OF RecfieldDef, float [11] IMPLICIT NULL, uniSgml [12] IMPLICIT SgmlInfo } END
Received on Tuesday, 14 November 2000 19:01:45 UTC