154 lines
5.6 KiB
Groff
154 lines
5.6 KiB
Groff
--$Revision: 98896 $
|
|
--**********************************************************************
|
|
--
|
|
-- NCBI General Data elements
|
|
-- by James Ostell, 1990
|
|
-- Version 3.0 - June 1994
|
|
--
|
|
--**********************************************************************
|
|
|
|
NCBI-General DEFINITIONS ::=
|
|
BEGIN
|
|
|
|
EXPORTS Date, Person-id, Object-id, Dbtag, Int-fuzz, User-object, User-field;
|
|
|
|
-- StringStore is really a VisibleString. It is used to define very
|
|
-- long strings which may need to be stored by the receiving program
|
|
-- in special structures, such as a ByteStore, but it's just a hint.
|
|
-- AsnTool stores StringStores in ByteStore structures.
|
|
-- OCTET STRINGs are also stored in ByteStores by AsnTool
|
|
--
|
|
-- typedef struct bsunit { /* for building multiline strings */
|
|
-- Nlm_Handle str; /* the string piece */
|
|
-- Nlm_Int2 len_avail,
|
|
-- len;
|
|
-- struct bsunit PNTR next; } /* the next one */
|
|
-- Nlm_BSUnit, PNTR Nlm_BSUnitPtr;
|
|
--
|
|
-- typedef struct bytestore {
|
|
-- Nlm_Int4 seekptr, /* current position */
|
|
-- totlen, /* total stored data length in bytes */
|
|
-- chain_offset; /* offset in ByteStore of first byte in curchain */
|
|
-- Nlm_BSUnitPtr chain, /* chain of elements */
|
|
-- curchain; /* the BSUnit containing seekptr */
|
|
-- } Nlm_ByteStore, PNTR Nlm_ByteStorePtr;
|
|
--
|
|
-- AsnTool incorporates this as a primitive type, so the definition
|
|
-- is here just for completeness
|
|
--
|
|
-- StringStore ::= [APPLICATION 1] IMPLICIT OCTET STRING
|
|
--
|
|
|
|
-- BigInt is really an INTEGER. It is used to warn the receiving code to expect
|
|
-- a value bigger than Int4 (actually Int8). It will be stored in DataVal.bigintvalue
|
|
--
|
|
-- Like StringStore, AsnTool incorporates it as a primitive. The definition would be:
|
|
-- BigInt ::= [APPLICATION 2] IMPLICIT INTEGER
|
|
--
|
|
|
|
-- Date is used to replace the (overly complex) UTCTtime, GeneralizedTime
|
|
-- of ASN.1
|
|
-- It stores only a date
|
|
--
|
|
|
|
Date ::= CHOICE {
|
|
str VisibleString , -- for those unparsed dates
|
|
std Date-std } -- use this if you can
|
|
|
|
Date-std ::= SEQUENCE { -- NOTE: this is NOT a unix tm struct
|
|
year INTEGER , -- full year (including 1900)
|
|
month INTEGER OPTIONAL , -- month (1-12)
|
|
day INTEGER OPTIONAL , -- day of month (1-31)
|
|
season VisibleString OPTIONAL , -- for "spring", "may-june", etc
|
|
hour INTEGER OPTIONAL , -- hour of day (0-23)
|
|
minute INTEGER OPTIONAL , -- minute of hour (0-59)
|
|
second INTEGER OPTIONAL } -- second of minute (0-59)
|
|
|
|
-- Dbtag is generalized for tagging
|
|
-- eg. { "Social Security", str "023-79-8841" }
|
|
-- or { "member", id 8882224 }
|
|
|
|
Dbtag ::= SEQUENCE {
|
|
db VisibleString , -- name of database or system
|
|
tag Object-id } -- appropriate tag
|
|
|
|
-- Object-id can tag or name anything
|
|
--
|
|
|
|
Object-id ::= CHOICE {
|
|
id INTEGER ,
|
|
str VisibleString }
|
|
|
|
-- Person-id is to define a std element for people
|
|
--
|
|
|
|
Person-id ::= CHOICE {
|
|
dbtag Dbtag , -- any defined database tag
|
|
name Name-std , -- structured name
|
|
ml VisibleString , -- MEDLINE name (semi-structured)
|
|
-- eg. "Jones RM"
|
|
str VisibleString, -- unstructured name
|
|
consortium VisibleString } -- consortium name
|
|
|
|
Name-std ::= SEQUENCE { -- Structured names
|
|
last VisibleString ,
|
|
first VisibleString OPTIONAL ,
|
|
middle VisibleString OPTIONAL ,
|
|
full VisibleString OPTIONAL , -- full name eg. "J. John Smith, Esq"
|
|
initials VisibleString OPTIONAL, -- first + middle initials
|
|
suffix VisibleString OPTIONAL , -- Jr, Sr, III
|
|
title VisibleString OPTIONAL } -- Dr., Sister, etc
|
|
|
|
--**** Int-fuzz **********************************************
|
|
--*
|
|
--* uncertainties in integer values
|
|
|
|
Int-fuzz ::= CHOICE {
|
|
p-m INTEGER , -- plus or minus fixed amount
|
|
range SEQUENCE { -- max to min
|
|
max INTEGER ,
|
|
min INTEGER } ,
|
|
pct INTEGER , -- % plus or minus (x10) 0-1000
|
|
lim ENUMERATED { -- some limit value
|
|
unk (0) , -- unknown
|
|
gt (1) , -- greater than
|
|
lt (2) , -- less than
|
|
tr (3) , -- space to right of position
|
|
tl (4) , -- space to left of position
|
|
circle (5) , -- artificial break at origin of circle
|
|
other (255) } , -- something else
|
|
alt SET OF INTEGER } -- set of alternatives for the integer
|
|
|
|
|
|
--**** User-object **********************************************
|
|
--*
|
|
--* a general object for a user defined structured data item
|
|
--* used by Seq-feat and Seq-descr
|
|
|
|
User-object ::= SEQUENCE {
|
|
class VisibleString OPTIONAL , -- endeavor which designed this object
|
|
type Object-id , -- type of object within class
|
|
data SEQUENCE OF User-field } -- the object itself
|
|
|
|
User-field ::= SEQUENCE {
|
|
label Object-id , -- field label
|
|
num INTEGER OPTIONAL , -- required for strs, ints, reals, oss
|
|
data CHOICE { -- field contents
|
|
str VisibleString ,
|
|
int INTEGER ,
|
|
real REAL ,
|
|
bool BOOLEAN ,
|
|
os OCTET STRING ,
|
|
object User-object , -- for using other definitions
|
|
strs SEQUENCE OF VisibleString ,
|
|
ints SEQUENCE OF INTEGER ,
|
|
reals SEQUENCE OF REAL ,
|
|
oss SEQUENCE OF OCTET STRING ,
|
|
fields SEQUENCE OF User-field ,
|
|
objects SEQUENCE OF User-object } }
|
|
|
|
|
|
|
|
END
|
|
|