- 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