Re: Explain discussion question

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