507 lines
16 KiB
Groff
507 lines
16 KiB
Groff
--$Revision: 464670 $
|
|
--********************************************************************
|
|
--
|
|
-- Network Id server network access
|
|
-- Vasilchenko 2003
|
|
--
|
|
--
|
|
--*********************************************************************
|
|
--
|
|
-- ID2.asn
|
|
--
|
|
-- messages for id server network access
|
|
--
|
|
--*********************************************************************
|
|
|
|
NCBI-ID2Access DEFINITIONS ::=
|
|
BEGIN
|
|
|
|
EXPORTS ID2-Blob-State;
|
|
|
|
IMPORTS Seq-id, Seq-loc FROM NCBI-Seqloc
|
|
ID2S-Chunk-Id, ID2S-Seq-annot-Info FROM NCBI-Seq-split;
|
|
|
|
|
|
--*********************************************************************
|
|
-- request types
|
|
--*********************************************************************
|
|
|
|
-- Requests are sent in packets to allow sending several requests at once
|
|
-- to avoid network latency, without possiblity of deadlock with server.
|
|
-- Server will not start sending replies until it will read the whole packet.
|
|
ID2-Request-Packet ::= SEQUENCE OF ID2-Request
|
|
|
|
|
|
ID2-Request ::= SEQUENCE {
|
|
-- request's serial number, can be used in asynchronic clients
|
|
-- server should copy it to corresponding field in reply
|
|
serial-number INTEGER OPTIONAL,
|
|
|
|
params ID2-Params OPTIONAL,
|
|
|
|
request CHOICE {
|
|
init NULL,
|
|
get-packages ID2-Request-Get-Packages,
|
|
get-seq-id ID2-Request-Get-Seq-id,
|
|
get-blob-id ID2-Request-Get-Blob-Id,
|
|
get-blob-info ID2-Request-Get-Blob-Info,
|
|
reget-blob ID2-Request-ReGet-Blob,
|
|
get-chunks ID2S-Request-Get-Chunks
|
|
}
|
|
}
|
|
|
|
|
|
-- Request for set of params packages know by server.
|
|
-- Packages can be used to abbreviate parameters of request.
|
|
ID2-Request-Get-Packages ::= SEQUENCE {
|
|
-- return known packages from this list
|
|
-- if unset - return all known packages
|
|
names SEQUENCE OF VisibleString OPTIONAL,
|
|
|
|
-- return packages' names only
|
|
no-contents NULL OPTIONAL
|
|
}
|
|
|
|
-- Requested sequence ID, can be any string or Seq-id.
|
|
-- This request will be replied with one or more ID2-Reply-Get-Seq-id.
|
|
ID2-Request-Get-Seq-id ::= SEQUENCE {
|
|
seq-id ID2-Seq-id,
|
|
seq-id-type INTEGER {
|
|
any (0), -- return any qualified Seq-id
|
|
gi (1), -- gi is preferred
|
|
text (2), -- text Seq-id (accession etc) is preferred
|
|
general (4), -- general Seq-id is preferred
|
|
all (127), -- return all qualified Seq-ids of the sequence
|
|
label (128), -- return a sequence string label as string
|
|
-- in general id with db "LABEL"
|
|
taxid (256), -- return a sequence taxonomy ID as integer
|
|
-- in general id with db "TAXID"
|
|
hash (512) -- return a sequence hash as integer
|
|
-- in general id with db "HASH"
|
|
} DEFAULT any
|
|
}
|
|
|
|
|
|
ID2-Seq-id ::= CHOICE {
|
|
string VisibleString,
|
|
seq-id Seq-id
|
|
}
|
|
|
|
|
|
-- Return blob-id with specified seq-id.
|
|
-- This request with be replied with one or more ID2-Reply-Get-Blob-Id.
|
|
ID2-Request-Get-Blob-Id ::= SEQUENCE {
|
|
-- id can be supplied by inner request
|
|
seq-id ID2-Request-Get-Seq-id,
|
|
|
|
-- return id of blob with sequence
|
|
sources SEQUENCE OF VisibleString OPTIONAL,
|
|
|
|
-- return Blob-Ids with external features on this Seq-id
|
|
external NULL OPTIONAL
|
|
}
|
|
|
|
|
|
-- Return some information related to the blob.
|
|
-- This request with be replied with one or more of:
|
|
-- ID2-Reply-Get-Blob-Seq-ids - if requested by get-seq-ids field
|
|
-- ID2-Reply-Get-Blob - if requested by get-data field
|
|
-- ID2S-Reply-Get-Split-Info
|
|
-- ID2S-Reply-Get-Chunk
|
|
-- Last two can be sent in addition to ID2-Reply-Get-Blob
|
|
-- if the blob is split on the server.
|
|
-- The replies are made separate to allow server to create replies easier
|
|
-- from precalculated data. Each of these replies have ID2-Reply-Data field.
|
|
ID2-Request-Get-Blob-Info ::= SEQUENCE {
|
|
-- id can be supplied by inner request
|
|
blob-id CHOICE {
|
|
-- id can be supplied by inner request
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- generate blob-ids from request
|
|
resolve SEQUENCE {
|
|
request ID2-Request-Get-Blob-Id,
|
|
|
|
-- server will not send blobs listed here
|
|
exclude-blobs SEQUENCE OF ID2-Blob-Id OPTIONAL
|
|
}
|
|
},
|
|
|
|
-- return in addition list of Seq-ids also resolving to this blob
|
|
get-seq-ids NULL OPTIONAL,
|
|
|
|
-- level of details requested immediately
|
|
-- server will send relevant chunks if blob is splitted
|
|
get-data ID2-Get-Blob-Details OPTIONAL
|
|
}
|
|
|
|
|
|
-- This is similar to FTP reget command.
|
|
-- It may be unsupported by server.
|
|
-- It's defined only for plain blobs (returned in ID2-Reply-Get-Blob)
|
|
-- as all split data comes in small chunks, so reget doesn't make sense.
|
|
ID2-Request-ReGet-Blob ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- blob split version to resend
|
|
split-version INTEGER,
|
|
|
|
-- start offset of data to get
|
|
offset INTEGER
|
|
}
|
|
|
|
-- Request for specific chunks.
|
|
-- Server will reply with one or more ID2S-Reply-Get-Chunk.
|
|
ID2S-Request-Get-Chunks ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- requests for specific chunks of splitted blob
|
|
chunks SEQUENCE OF ID2S-Chunk-Id,
|
|
|
|
-- blob split version
|
|
split-version INTEGER OPTIONAL
|
|
}
|
|
|
|
|
|
-- The following structure describes what parts of blob are required
|
|
-- immediately after ID2-Request-Get-Blob-Info in case blob is split.
|
|
-- Seq-entry level will have probably the same values as Entry-complexities.
|
|
ID2-Get-Blob-Details ::= SEQUENCE {
|
|
-- reference location for details - can be only part of sequence
|
|
location Seq-loc OPTIONAL,
|
|
|
|
-- Seq-entry level for all data except descriptors (sequnence, annots)
|
|
seq-class-level INTEGER DEFAULT 1,
|
|
|
|
-- Seq-entry level for descriptors
|
|
descr-level INTEGER DEFAULT 1,
|
|
|
|
-- mask of descriptor types - see Seqdesc for variants' values
|
|
descr-type-mask INTEGER DEFAULT 0,
|
|
|
|
-- mask of annotation types - see Seq-annot.data for values
|
|
annot-type-mask INTEGER DEFAULT 0,
|
|
|
|
-- mask of feature types - see SeqFeatData for values
|
|
feat-type-mask INTEGER DEFAULT 0,
|
|
|
|
-- level of sequence data to load
|
|
sequence-level ENUMERATED {
|
|
none (0), -- not required
|
|
seq-map (1), -- at least seq-map
|
|
seq-data (2) -- include seq-data
|
|
} DEFAULT none
|
|
}
|
|
|
|
|
|
--*********************************************************************
|
|
-- reply types
|
|
--*********************************************************************
|
|
|
|
|
|
ID2-Reply ::= SEQUENCE {
|
|
-- request's serial number, copy from request
|
|
serial-number INTEGER OPTIONAL,
|
|
|
|
params ID2-Params OPTIONAL,
|
|
|
|
error SEQUENCE OF ID2-Error OPTIONAL,
|
|
|
|
-- true if this reply is the last one for the request
|
|
-- false if more replies will follow
|
|
end-of-reply NULL OPTIONAL,
|
|
|
|
-- reply data moved at the end to make it easier to construct
|
|
-- the reply data manually from precalculated data
|
|
reply CHOICE {
|
|
init NULL,
|
|
empty NULL,
|
|
get-package ID2-Reply-Get-Package,
|
|
get-seq-id ID2-Reply-Get-Seq-id,
|
|
get-blob-id ID2-Reply-Get-Blob-Id,
|
|
get-blob-seq-ids ID2-Reply-Get-Blob-Seq-ids,
|
|
get-blob ID2-Reply-Get-Blob,
|
|
reget-blob ID2-Reply-ReGet-Blob,
|
|
get-split-info ID2S-Reply-Get-Split-Info,
|
|
get-chunk ID2S-Reply-Get-Chunk
|
|
},
|
|
|
|
-- additional error flag if the reply is broken in the middle
|
|
-- of transfer.
|
|
-- 'last-octet-string', and 'nothing' mean that
|
|
-- client may use ReGet request to get the remaining data.
|
|
discard ENUMERATED {
|
|
reply (0), -- whole reply should be discarded
|
|
last-octet-string (1), -- all data in embedded ID2-Reply-Data
|
|
-- except last OCTET STRING is correct
|
|
nothing (2) -- all data in embedded ID2-Reply-Data
|
|
-- is correct, but is incomplete
|
|
} OPTIONAL
|
|
}
|
|
|
|
|
|
ID2-Error ::= SEQUENCE {
|
|
severity ENUMERATED {
|
|
-- nothing harmful happened
|
|
warning (1) ,
|
|
|
|
-- command cannot be completed this time
|
|
failed-command (2) ,
|
|
|
|
-- connection cannot be reused, reconnect is required
|
|
failed-connection (3) ,
|
|
|
|
-- server cannot be used for a while
|
|
failed-server (4) ,
|
|
|
|
-- resolve request gives no data
|
|
-- probably temporarily (see retry-delay field)
|
|
no-data (5) ,
|
|
|
|
-- data exists but client doesn't have permission to get it
|
|
restricted-data (6) ,
|
|
|
|
-- this request type is not supported by server
|
|
unsupported-command (7) ,
|
|
|
|
-- error in request packet, cannot retry
|
|
invalid-arguments (8)
|
|
},
|
|
|
|
-- client may retry the request after specified time in seconds
|
|
retry-delay INTEGER OPTIONAL,
|
|
|
|
message VisibleString OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Packages.
|
|
ID2-Reply-Get-Package ::= SEQUENCE {
|
|
name VisibleString,
|
|
|
|
params ID2-Params OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Seq-id.
|
|
ID2-Reply-Get-Seq-id ::= SEQUENCE {
|
|
-- copy of request
|
|
request ID2-Request-Get-Seq-id,
|
|
|
|
-- resolved Seq-id
|
|
-- not set if error occurred
|
|
seq-id SEQUENCE OF Seq-id OPTIONAL,
|
|
|
|
-- this Seq-id is the last one in the request
|
|
end-of-reply NULL OPTIONAL
|
|
}
|
|
|
|
-- Bit numbers for different blob states,
|
|
-- used in blob-state fields of several replies.
|
|
-- For example, dead & protected blob has blob-state 24 - 3rd and 4th bits set.
|
|
ID2-Blob-State ::= ENUMERATED {
|
|
live (0),
|
|
suppressed-temp (1),
|
|
suppressed (2),
|
|
dead (3),
|
|
protected (4),
|
|
withdrawn (5)
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Blob-Id.
|
|
ID2-Reply-Get-Blob-Id ::= SEQUENCE {
|
|
-- requested Seq-id
|
|
seq-id Seq-id,
|
|
|
|
-- result
|
|
blob-id ID2-Blob-Id OPTIONAL,
|
|
|
|
-- version of split data
|
|
-- (0 for non split)
|
|
split-version INTEGER DEFAULT 0,
|
|
|
|
-- annotation types in this blob
|
|
-- annotation are unknown if this field is omitted
|
|
annot-info SEQUENCE OF ID2S-Seq-annot-Info OPTIONAL,
|
|
|
|
-- this Blob-id is the last one in the request
|
|
end-of-reply NULL OPTIONAL,
|
|
|
|
-- state bits of the blob, 0 or missing means regular live data
|
|
blob-state INTEGER OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Blob-Info.
|
|
ID2-Reply-Get-Blob-Seq-ids ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- list of Seq-id resolving to this Blob-Id
|
|
-- in compressed format
|
|
ids ID2-Reply-Data OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Blob-Info.
|
|
ID2-Reply-Get-Blob ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- version of split data
|
|
-- (0 for non split)
|
|
split-version INTEGER DEFAULT 0,
|
|
|
|
-- whole blob or blob skeleton
|
|
-- not set if error occurred
|
|
data ID2-Reply-Data OPTIONAL,
|
|
|
|
-- state bits of the blob, 0 or missing means regular live data
|
|
blob-state INTEGER OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-Get-Blob-Info.
|
|
ID2S-Reply-Get-Split-Info ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- version of split data
|
|
split-version INTEGER,
|
|
|
|
-- blob split info
|
|
-- not set if error occurred
|
|
data ID2-Reply-Data OPTIONAL,
|
|
|
|
-- state bits of the blob, 0 or missing means regular live data
|
|
blob-state INTEGER OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2-Request-ReGet-Blob.
|
|
ID2-Reply-ReGet-Blob ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- version of data split
|
|
split-version INTEGER,
|
|
|
|
-- offset of data
|
|
offset INTEGER,
|
|
|
|
-- blob split info
|
|
-- not set if error occurred
|
|
data ID2-Reply-Data OPTIONAL
|
|
}
|
|
|
|
|
|
-- Reply to ID2S-Request-Get-Chunks.
|
|
ID2S-Reply-Get-Chunk ::= SEQUENCE {
|
|
blob-id ID2-Blob-Id,
|
|
|
|
-- id of chunk to send
|
|
chunk-id ID2S-Chunk-Id,
|
|
|
|
-- chunk data
|
|
-- not set if error occurred
|
|
data ID2-Reply-Data OPTIONAL
|
|
}
|
|
|
|
|
|
-- Data packing.
|
|
ID2-Reply-Data ::= SEQUENCE {
|
|
-- index of negotiated types
|
|
-- recommended types
|
|
-- Seq-entry,
|
|
-- ID2S-Split-Info,
|
|
-- ID2S-Chunk
|
|
data-type INTEGER {
|
|
seq-entry (0),
|
|
seq-annot (1),
|
|
id2s-split-info (2),
|
|
id2s-chunk (3)
|
|
} DEFAULT seq-entry,
|
|
|
|
-- serialization format (ASN.1 binary, ASN.1 text)
|
|
-- index of negotiated formats
|
|
data-format INTEGER {
|
|
asn-binary (0),
|
|
asn-text (1),
|
|
xml (2)
|
|
} DEFAULT asn-binary,
|
|
|
|
-- post serialization compression (plain, gzip, etc.)
|
|
-- index of negotiated compressions
|
|
data-compression INTEGER {
|
|
none (0),
|
|
gzip (1),
|
|
nlmzip (2),
|
|
bzip2 (3)
|
|
} DEFAULT none,
|
|
|
|
-- data blob
|
|
data SEQUENCE OF OCTET STRING
|
|
}
|
|
|
|
|
|
-- Data packed within ID2-Reply-Get-Blob-Seq-ids reply.
|
|
ID2-Blob-Seq-ids ::= SEQUENCE OF ID2-Blob-Seq-id
|
|
|
|
|
|
ID2-Blob-Seq-id ::= SEQUENCE {
|
|
seq-id Seq-id,
|
|
|
|
-- this Seq-id is replaced by sequence in another blob
|
|
replaced NULL OPTIONAL
|
|
}
|
|
|
|
|
|
--*********************************************************************
|
|
-- utility types
|
|
--*********************************************************************
|
|
|
|
|
|
ID2-Blob-Id ::= SEQUENCE {
|
|
sat INTEGER,
|
|
sub-sat INTEGER {
|
|
main (0),
|
|
snp (1),
|
|
snp-graph (4),
|
|
cdd (8),
|
|
mgc (16),
|
|
hprd (32),
|
|
sts (64),
|
|
trna (128),
|
|
exon (512)
|
|
} DEFAULT main,
|
|
sat-key INTEGER,
|
|
-- version of blob, optional in some requests
|
|
version INTEGER OPTIONAL
|
|
}
|
|
|
|
|
|
ID2-Params ::= SEQUENCE OF ID2-Param
|
|
|
|
|
|
ID2-Param ::= SEQUENCE {
|
|
name VisibleString,
|
|
value SEQUENCE OF VisibleString OPTIONAL,
|
|
type ENUMERATED {
|
|
-- no response expected
|
|
set-value (1),
|
|
|
|
-- this option is for client only
|
|
-- server replies with its value of param if known
|
|
-- server omits this param in reply if unknown to server
|
|
get-value (2),
|
|
|
|
-- no direct response expected,
|
|
-- but if the param or its value is not supported
|
|
-- an error is reported and the request is not be completed
|
|
force-value (3),
|
|
|
|
-- use named package
|
|
-- value should be unset
|
|
use-package (4)
|
|
} DEFAULT set-value
|
|
}
|
|
|
|
END
|