/[webpac]/openisis/current/doc/Meta.txt
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /openisis/current/doc/Meta.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 237 - (show annotations)
Mon Mar 8 17:43:12 2004 UTC (20 years ago) by dpavlin
File MIME type: text/plain
File size: 8694 byte(s)
initial import of openisis 0.9.0 vendor drop

1 traditional field definition and OpenIsis data definition metadata.
2
3
4 * the traditional FDT
5
6 According to the CDS/ISIS manual,
7 the field definition table is displayed like
8 $
9 44 Serie 300 X R vz
10 $
11 and contains for each field tag:
12 - a field description (up to 30 characters)
13 - maximum length (1 to 1650)
14 - field type:
15 X for alphanum, A for strictly alpha (not including space),
16 N for numeric (decimal digits), P for pattern (see below).
17 - repeatability indicator
18 R meaning field is repeatable, N else
19 - format (subfield list or pattern)
20 For a P field, this gives a COBOL-PIC-style pattern
21 consisting of X (alnum), A (alpha), 9 (num) and literal letters,
22 e.g. 99-999/AA to allow for input like 35-674/XE.
23 For other field types, this is a list of legal subfields,
24 e.g. vz to allow for input like foo^vbar^zbaz.
25 Patterns are not supported by winisis as of Version 1.4.
26
27 The actual file format looks like
28 $
29 Series vz 44 300 0 1
30 $
31 which is 30 characters name, 20 characters subfield/pattern,
32 the field tag, maximum length, a number encoding the type
33 (0 alphanum, 1 alpha, 2 numeric, 3 pattern),
34 and a number 1 for repeatable / 0 for non repeatable fields.
35
36
37 Moreover, the FDT defines the available
38 worksheets W (.fmt), printformats F (.pft) and field selections S (.fst).
39 Each such definition is on a line starting with the
40 key letter and a colon, and followed by (blank padded)
41 6 character fields of file basenames.
42 $
43 F:THES THES1 THES2
44 $
45
46
47 * principles of OpenIsis metadata
48
49 Definition of data is done in the database's
50 > Options
51 record, rather than in a separate file.
52 Data definition is aimed at being quite general,
53 supporting a wide range of formats according to different application needs.
54 It includes several features that are also found in IsisMARC's FDT21
55 by Ernesto Spinak, but uses substructures rather than a separate database.
56
57
58 Data definition does not only define fields, but also subfields,
59 subrecords, code values (enums) and types in a uniform approach.
60 Basically, for every data element,
61 there is one (heavily structured) field describing the element,
62 which may, however, refer to or be referred to by other fields.
63
64
65 It has the following subfields, separated by TAB:
66 - i id
67 numerical tag of the field or type described
68 - s sub
69 subfield identifier of the element defined (repeatable).
70 Not present in a (top level) field definition.
71 Number base 36 (i.e. 0..9,a=10,b=11..z=35).
72 If the subid does not start with a number base 36,
73 the element can be referred to by it's position among the subfield
74 declarations for the same parent (in base 36, starting from 0).
75 If there is a number, not followed by any characters,
76 the subfield is identified by this number.
77 If subid is empty, or the number is followed by a ')',
78 the field is unidentified in it's parent.
79 If any other character like '=', the field is identified by it's name,
80 delimited by this character (or any single non-id char).
81 - e end
82 end of this element (i.e., for a toplevel field, the initial part).
83 Consists of a leading delimiter char and some optional flags.
84 If empty, is the standard subfield delimiter (a TAB).
85 If absent, and the field has fixed length (type 3 or 4), it has
86 no delimiting character, but just stops after it's length.
87 Else a subfield inherits it's parents end (defaulting to TAB),
88 and for a toplevel there are no subfields (you may still define
89 subfields, but the field value itself will include them).
90 Traditional ISIS data should use e^.
91 An initial numerical value (decimal digits) is interpreted as ASCII code
92 of the delimiter char (TAB is 9).
93 If end contains a (literal) blank, any blanks after the delimiter
94 are consumed.
95 If end contains a quote ("), the delimiter is not recognized within quotes.
96 If end contains a backslash (\), the backslash character can be used
97 to escape the delimiter, a quote (if spec) and itself.
98 - n name
99 technical name of the element, preferrably in english.
100 Must be a lowercase identifier (matching regular expression [a-z_][a-z_0-9]*)
101 unique throughout this data definition.
102 - b base
103 basetype. tag or name of element to copy definitions from.
104 - t type
105 numerical primary type of data, describing the initial part of the element
106 (up to the first subfield delimiter, if any). default is 0.
107 - l length
108 numerical (max) length. Absent = ~ = any.
109 Note that 0 does NOT mean any, but empty, i.e. the element is a flag.
110 For fixed subrecords, this gives the number of childs.
111 For other types, it is the length in characters (not bytes!).
112 For types 3 and 4, this is a fixed length.
113 - f format
114 format pattern, highly dependent on type.
115 if empty, indicates fixed length as given by l.
116 for type 3, if the format is shorter than l,
117 the last character is repeated to fill length l.
118 if nonempty, can be used to imply type 3 and a fixed length.
119 f is repeatable, allowing alternative formats.
120 for subrecord( header)s, this gives a legal child as
121 tag_or_name[,[min][,max]],
122 where min defaults to 0 and max to unlimited.
123 for most other types, this is the traditional pattern format (see above).
124 - m min
125 Minimum # of occurences. Absent = 0. Empty = 1.
126 - r repeat
127 Maximum # of occurences. Absent = 1. Empty = ~ = any.
128 Use r0 for fields that should not directly be included in their parent,
129 but are referenced as basetypes or childs.
130 - v value
131 default value, code for enums
132 - x xref
133 crossreference for field (see below) (repeatable)
134 - d description
135 descriptive text in the database's lead language.
136 translations are maintained separatly.
137
138
139 * types of fields
140
141 | code | C-name | name | description
142 | 0 | FTX | any | actually any characters
143 | 1 | FTA | alpha | STRICTLY alpha
144 | 2 | FTN | numeric | only digits or signs (+-)
145 | 3 | FTP | pattern | given by COBOL-style pattern
146 | 4 | FTB | boolean | 0 or 1 (was 13)
147 | 5 | FTE | enum | one of the codes listed for this field (was 12)
148 | 8 | FTI | iso | alphanum using delimiter ASCII 31 (obsolete, was 10)
149 | 9 | FTT | table | alphanum using delimiter ASCII 9 (TAB) (obsolete, was 14)
150 | 13 | FTO | operator | fixed subrecord
151 | 14 | FTR | record | embraced subrecord (structure)
152 | 15 | FTS | sequence | counted subrecord (array)
153 | 16 | FTV | value | an enum value
154
155
156 * field names
157
158 It is common practice to use long field descriptions
159 like "Corporate Bodies" or "Govt. Publications No.",
160 which may be nice looking but are not well suited for technical use.
161
162 Therefore the OpenIsis metadata contains an extra field name
163 in it's metadata record.
164 When sourcing metadata from an FDT file,
165 OpenIsis will derive field names by lowercasing the descriptions
166 and replacing all runs of non-alphanums by a single '_',
167 yielding "govt_publications_no".
168
169
170 * subrecords
171
172 > Struct subrecords
173 are introduced by one of the types 13 to 15.
174 All those introducing fields may contain any subfields.
175
176 Type 14 records may (after the leading + or -) also contain an
177 initial any string, whose length may be restricted to the given length.
178 (Typically used to hold an initial textnode's contents).
179
180
181 * crossreferences
182
183 Crossreferences can be used for several purposes, including
184 - specifying referential integrity constraints
185 - especially authority, coding and terminology relations
186 - specifying inheritance relations in the
187 > PatchWork
188
189 However, all these purposes are more or less the same,
190 depending just on how you look at it. Any flavour of reference may be used
191 - on data entry,
192 to ensure that a reference can be resolved according to a given cardinality
193 - on data retrieval,
194 to enrich the data of a refering record by it's refered-to records
195
196 Basically, the contents of an element for which a crossref is defined,
197 may, should or must be either an MFN (row number) of a record or,
198 after slight modification, a (prefix of a) valid index entry,
199 in both cases usually in another database (table).
200
201
202 The crossref for a field specifies, separated by semicolon ';',
203 - database of reference
204 - cardinality as used in regular expressions
205 '*' for any, '+' for at least one, '?' at most one, or min,max.
206 Empty means exactly one.
207 - prefix for index lookup
208 Anything after the second ';'
209
210 If a value found in the index is delimited by the same delimiter
211 as the item in question (TAB strongly recommended),
212 it is considered a match and the whole index entry
213 considered the field of reference.
214 Else, the index entry's record is looked up and whatever is the entry's
215 tag is the field of reference.
216
217 Thus, resolving the reference, is largely governed by the index
218 (and you can do all sort of tricks there), not by the referer.
219
220
221 ---
222 $Id: Meta.txt,v 1.8 2003/06/30 09:48:40 kripke Exp $

  ViewVC Help
Powered by ViewVC 1.1.26