1 package uk.ac.cam.ch.wwmm.opsin;
2 
3 /**
4  * Contains static final strings corresponding to XML element names and attributes employed by OPSIN
5  * @author dl387
6  *
7  */
8 class XmlDeclarations {
9 
10 	//TODO are all these types and subtypes actually a good idea considering the vast majority are never used?
11 
12 	/*
13 	 * The container XML elements. These are generated by OPSIN
14 	 */
15 	/**Define a scope for determining what group a substituent should bond to*/
16 	static final String BRACKET_EL ="bracket";
17 
18 	/**Contains a functional group or class. These terms typically effect the chosen wordRule for the name*/
19 	static final String FUNCTIONALTERM_EL ="functionalTerm";
20 
21 	/**The top most element in OPSIN's parse tree. As a name can describe multiple molecules the same is confusingly true of this element*/
22 	static final String MOLECULE_EL ="molecule";
23 
24 	/**Contains a substituent. A substituent will after the ComponentProcessor contain one group*/
25 	static final String SUBSTITUENT_EL = "substituent";
26 
27 	/**Contains a root group(the rightmost in a word). A root will after the ComponentProcessor contain one group*/
28 	static final String ROOT_EL ="root";
29 
30 	/**Contains brackets/substituents/root. Generally these correspond to words in the original chemical name (unless erroneous/omitted spaces were present)*/
31 	static final String WORD_EL ="word";
32 
33 	/**Contains words/wordRules. The value of the wordRule indicates how the StructureBuilder should process its children*/
34 	static final String WORDRULE_EL ="wordRule";
35 
36 
37 	/*
38 	 * The token XML elements. These are generally produced by the parser from the tokenised chemical name
39 	 * Some are produced by OPSIN in the ComponentGenerator/ComponentProcessor
40 	 */
41 
42 	/**Adds a hydrogen to an unsaturated system, this is hydrogen that is added due to a suffix and is expressed in a locant e.g. 1(2H) */
43 	static final String ADDEDHYDROGEN_EL ="addedHydrogen";
44 
45 	/**A component of an alkaneStem e.g. [octa][hexaconta][tetract]ane will have three alkaneStemComponents*/
46 	static final String ALKANESTEMCOMPONENT ="alkaneStemComponent";
47 
48 	/**Something like tert/iso/sec Modifies an alkaneStem in the ComponentGenerator*/
49 	static final String ALKANESTEMMODIFIER_EL ="alkaneStemModifier";
50 
51 	/**An annulene. Converted to a group by the ComponentGenerator*/
52 	static final String ANNULEN_EL ="annulen";
53 
54 	/**A bridge described in SMILES for used on rings*/
55 	static final String FUSEDRINGBRIDGE_EL ="fusedRingBridge";
56 
57 	/**An O that indicates that the preceding alkaneStem is in fact a bridge*/
58 	static final String BRIDGEFORMINGO_EL ="bridgeFormingO";
59 
60 	/**A locant indicating the positions for a glycosidic linkage. The first locant will point to an alpha carbon
61 	 * Also used to indicate joining of nucleosyl groups*/
62 	static final String BIOCHEMICALLINKAGE_EL ="biochemicalLinkage";
63 
64 	/**Indicates the size of the ring in a carbohydrate e.g. furanose = 5*/
65 	static final String CARBOHYDRATERINGSIZE_EL ="carbohydrateRingSize";
66 
67 	/**A charge specifier e.g. (2+). Value is the charge to set something to*/
68 	static final String CHARGESPECIFIER_EL ="chargeSpecifier";
69 
70 	/**Used amongst other things to indicate how the rings of a ring assembly should be assembled*/
71 	static final String COLONORSEMICOLONDELIMITEDLOCANT_EL ="colonOrSemiColonDelimitedLocant";
72 
73 	/**Created by the ComponentProcessor. Something like the acetic acid in benzene-1,3,5-triacetic acid*/
74 	static final String CONJUNCTIVESUFFIXGROUP_EL ="conjunctiveSuffixGroup";
75 
76 	/**Used by the ComponentGenerator to group elements into bracket elements*/
77 	static final String CLOSEBRACKET_EL ="closebracket";
78 
79 	/**Used by the ComponentGenerator to modify alkanes into cycloalkanes*/
80 	static final String CYCLO_EL ="cyclo";
81 
82 	/** A delta used to indicate the position of a double bond in older nomenclature*/
83 	static final String DELTA_EL ="delta";
84 
85 	/**A fractional multiplier e.g. hemi*/
86 	static final String FRACTIONALMULTIPLIER_EL ="fractionalMultiplier";
87 
88 	/**A functional Class such as acid. Does not correspond to a fragment*/
89 	static final String FUNCTIONALCLASS_EL ="functionalClass";
90 
91 	/**A functional group such as alcohol or sulfone. Describes a fragment*/
92 	static final String FUNCTIONALGROUP_EL ="functionalGroup";
93 
94 	/**Currently just poly or oligo for polymers*/
95 	static final String FUNCTIONALMODIFIER_EL ="functionalModifier";
96 
97 	/**A fusion bracket. Used in fusion nomenclature*/
98 	static final String FUSION_EL ="fusion";
99 
100 	/**Define a scope for determining what group a substituent should bond to*/
101 	static final String GROUP_EL ="group";
102 
103 	/**A heteroatom. Could be part of a Hantzsch Widman ring or a replacement prefix*/
104 	static final String HETEROATOM_EL ="heteroatom";
105 
106 	/**Adds a hydrogen to an unsaturated system (hydro/perhydro)*/
107 	static final String HYDRO_EL ="hydro";
108 
109 	/**One of the systematic hydrocarbon fused ring series e.g. tetralene, pentalene. Converted to a group by the ComponentGenerator*/
110 	static final String HYDROCARBONFUSEDRINGSYSTEM_EL ="hydrocarbonFusedRingSystem";
111 
112 	/**Adds a hydrogen to an unsaturated system to indicate what atoms are saturated in a system where not all atoms with spare valency can form double bonds e.g.  e.g. 2H-pyran*/
113 	static final String INDICATEDHYDROGEN_EL ="indicatedHydrogen";
114 
115 	/**Specifies that one of more atoms are enriched with a particular isotope*/
116 	static final String ISOTOPESPECIFICATION_EL ="isotopeSpecification";
117 
118 	/**A hyphen between two substituents. Used as hint that the two substituents do not join together*/
119 	static final String HYPHEN_EL ="hyphen";
120 
121 	/**ine as in the end of an aminoAcid. Has no meaning*/
122 	static final String INE_EL ="ine";
123 
124 	/**An infix. This performs functionalReplacement on a suffix*/
125 	static final String INFIX_EL ="infix";
126 
127 	/**Indicates that a heteroatom or atom should be in a specific valency*/
128 	static final String LAMBDACONVENTION_EL ="lambdaConvention";
129 
130 	/**A locant e.g. where a substituent should attach*/
131 	static final String LOCANT_EL ="locant";
132 
133 	/**Used by the ComponentGenerator to group elements into bracket elements*/
134 	static final String OPENBRACKET_EL ="openbracket";
135 
136 	/**otho/meta/para Converted to a locant by the ComponentProcessor*/
137 	static final String ORTHOMETAPARA_EL ="orthoMetaPara";
138 
139 	/**Describes the number of spiro centres in a poly cyclic spiro system*/
140 	static final String POLYCYCLICSPIRO_EL ="polyCyclicSpiro";
141 
142 	/**A locant indicating through which atoms a multiplied parent in multiplicative nomenclature is connected*/
143 	static final String MULTIPLICATIVELOCANT_EL ="multiplicativeLocant";
144 
145 	/**A multiplier e.g. indicating multiplication of a heteroatom or substituent*/
146 	static final String MULTIPLIER_EL ="multiplier";
147 
148 	/**e.g. (III), Specifies the oxidation number of an atom. Value is the oxidation number to set something to*/
149 	static final String OXIDATIONNUMBERSPECIFIER_EL ="oxidationNumberSpecifier";
150 
151 	/**Used to indicate how many rings are in a ring assembly*/
152 	static final String RINGASSEMBLYMULTIPLIER_EL ="ringAssemblyMultiplier";
153 
154 	/**A spiro system. Converted to a group by the ComponentGenerator*/
155 	static final String SPIRO_EL ="spiro";
156 
157 	/**A locant that separates components of a spiro system*/
158 	static final String SPIROLOCANT_EL ="spiroLocant";
159 
160 	/**Something like R/S/E/Z. Indicates stereochemical configuration*/
161 	static final String STEREOCHEMISTRY_EL ="stereoChemistry";
162 
163 	/**Present in complicated nomenclature e.g. ring assemblies to avoid ambiguity*/
164 	static final String STRUCTURALCLOSEBRACKET_EL ="structuralCloseBracket";
165 
166 	/**Present in complicated nomenclature to avoid ambiguity*/
167 	static final String STRUCTURALOPENBRACKET_EL ="structuralOpenBracket";
168 
169 	/**Indicates replacement of a group by hydrogen e.g. deoxy means replace OH with H*/
170 	static final String SUBTRACTIVEPREFIX_EL ="subtractivePrefix";
171 
172 	/**A suffix e.g. amide, al, yl etc.*/
173 	static final String SUFFIX_EL ="suffix";
174 
175 	/**Something like sulfon/carbo/carbox that modifies a following suffix*/
176 	static final String SUFFIXPREFIX_EL ="suffixPrefix";
177 
178 	/**ene/yne, indicated that a double/triple bond should be formed at a saturated location*/
179 	static final String UNSATURATOR_EL ="unsaturator";
180 
181 	/**A vonBaeyer system. Converted to a group by the ComponentGenerator*/
182 	static final String VONBAEYER_EL ="vonBaeyer";
183 
184 	/*
185 	 * The token XML attributes. These are generally produced by the parser from the tokenised chemical name
186 	 * Some are produced by OPSIN in the ComponentGenerator/ComponentProcessor
187 	 */
188 
189 	/**The semantic meaning of the token. Exact meaning is dependent on the element type e.g. SMILES for a group but a number for a multiplier*/
190 	static final String VALUE_ATR ="value";
191 
192 	/**The type of the token. Possible values are enumerated with strings ending in _TYPE_VAL */
193 	static final String TYPE_ATR = "type";
194 
195 	/**The subType of the token. Possible values are enumerated with strings ending in _SUBTYPE_VAL */
196 	static final String SUBTYPE_ATR = "subType";
197 
198 	/**Whether the group can be additively bonded to. e.g. thio */
199 	static final String ACCEPTSADDITIVEBONDS_ATR = "acceptsAdditiveBonds";
200 
201 	/**Used to add a higher order bond at a position that can be subsequently specified.
202 	 * Syntax: semicolon delimited list of the format: orderOfBond space ("id"|"locant"|"defaultId"|"defaultLocant") space (id|locant) */
203 	static final String ADDBOND_ATR = "addBond";
204 
205 	/**Used to add a group at a position that can be subsequently specified
206 	 * Syntax: semicolon delimited list of the format: SMILESofGroupToBeAdded space ("id"|"locant"|"defaultId"|"defaultLocant") space (id|locant) [space locantLabel]. */
207 	static final String ADDGROUP_ATR = "addGroup";
208 
209 	/**Used to set a heteroatom at a position that can be subsequently specified
210 	 * Syntax: semicolon delimited list of the format: elementOfAtom space ("id"|"locant"|"defaultId"|"defaultLocant") space (id|locant). */
211 	static final String ADDHETEROATOM_ATR = "addHeteroAtom";
212 
213 	/**Another value that the token takes. e.g. for suffix tokens that add two suffixes to the molecule*/
214 	static final String ADDITIONALVALUE_ATR = "additionalValue";
215 
216 	/**Listed in a clockwise order, the locants of the atoms that define a pseudo 2D plane for alpha/beta stereochemistry */
217 	static final String ALPHABETACLOCKWISEATOMORDERING_ATR="alphaBetaClockWiseAtomOrdering";
218 
219 	/**For elements, the typical oxidation states (comma separated) then a colon and the maximum oxidation station*/
220 	static final String COMMONOXIDATIONSTATESANDMAX_ATR = "commonOxidationStatesAndMax";
221 
222 	/**The ID of the atom which by default an incoming fragment should connect to. ID is relative to this particular fragment (first atom =1) */
223 	static final String DEFAULTINID_ATR = "defaultInID";
224 
225 	/**The locant of the atom which by default an incoming fragment should connect to**/
226 	static final String DEFAULTINLOCANT_ATR = "defaultInLocant";
227 
228 	/**Works like the locant attribute but refers to the atoms OPSIN ID. Will be overridden by the locant/locantId attribute*/
229 	static final String DEFAULTLOCANTID_ATR = "defaultLocantID";
230 
231 	/**A comma separated list of locants that are expected in front of a group for either xylene-like nomenclature or as indirect locants*/
232 	static final String FRONTLOCANTSEXPECTED_ATR = "frontLocantsExpected";
233 
234 	/**A comma separated list of relative IDs at which to add functionalAtoms*/
235 	static final String FUNCTIONALIDS_ATR = "functionalIDs";
236 
237 	/**Numbering to use when ring is part of a fused ring system */
238 	static final String FUSEDRINGNUMBERING_ATR = "fusedRingNumbering";
239 
240 	/**Semi-colon delimited list of labels for * atoms, where the * atoms represent generic groups e.g. Alkyl*/
241 	static final String HOMOLOGY_ATR = "homology";
242 
243 	/**Indicates that the substituent can either be -X- or X=  depending on context cf. imino or methylene*/
244 	static final String IMINOLIKE_ATR = "iminoLike";
245 
246 	/**The functional replacement specified by an infix to be performed on the suffix*/
247 	static final String INFIX_ATR = "infix";
248 
249 	/**Defines the locants for which a radical will connect to another group in multiplicative nomenclature e.g. in 2,2'-methylenedipyridine the 2,2' become inlocants of the pyridine*/
250 	static final String INLOCANTS_ATR = "inLocants";
251 
252 	/**Determined by the {@link ComponentProcessor}. True if a fragment has more than two radical positions e.g. ethan-1,2-diyl not ethanylidene*/
253 	static final String ISAMULTIRADICAL_ATR = "isAMultiRadical";
254 
255 	/**Was the word salt encountered indicating that a salt was expected? */
256 	static final String ISSALT_ATR = "isSalt";
257 
258 	/**Slash delimited list of locants. List must be the same length as number of atoms. Multiple locants can be given to an atom by comma delimiting them*/
259 	static final String LABELS_ATR = "labels";
260 
261 	/**Added to a heteroatom or LAMBDACONVENTION_EL to indicate the desired valency*/
262 	static final String LAMBDA_ATR = "lambda";
263 
264 	/**Locant used when deciding where to apply an operation*/
265 	static final String LOCANT_ATR = "locant";
266 
267 	/**Works like a locant but refers to the atom's OPSIN id*/
268 	static final String LOCANTID_ATR = "locantID";
269 
270 	/**Indicates that this trivial name has the opposite D/L stereochemistry to others in its class i.e. L- for carbohydrates or D- for amino acids*/
271 	static final String NATURALENTISOPPOSITE_ATR ="naturalEntIsOpposite";
272 
273 	/** Used as a fudge for some hydrogen esters e.g. dihydrogenphosphate*/
274 	static final String NUMBEROFFUNCTIONALATOMSTOREMOVE_ATR = "numberOfFunctionalAtomsToRemove";
275 
276 	/**Indicates that an element has been multiplied. Prevents badly assigning indirect locants*/
277 	static final String MULTIPLIED_ATR = "multiplied";
278 
279 	/**Indicates how many times a bracket/substituent should be multiplied*/
280 	static final String MULTIPLIER_ATR ="multiplier";
281 
282 	/** The name that was inputted into OPSIN's parser. Attribute of molecule */
283 	static final String NAME_ATR = "name";
284 
285 	/**A comma separated list of relative IDs at which to add OutAtoms*/
286 	static final String OUTIDS_ATR = "outIDs";
287 
288 	/**Indicates that a substituent/bracket has been processed by StructureBuildingMethods*/
289 	static final String RESOLVED_ATR ="resolved";
290 
291 	/**Placed on a word rule if explicit stoichiometry has been provided. Value is always an integer */
292 	static final String STOICHIOMETRY_ATR = "stoichiometry";
293 
294 	/** Holds the value of any tokens for which XML was not generated by the parser e.g. an optional e. Multiple elided tokens will be concatenated*/
295 	static final String SUBSEQUENTUNSEMANTICTOKEN_ATR ="subsequentUnsemanticToken";
296 
297 	/**A comma separated list of relatives IDs indicating where to add suffix/es*/
298 	static final String SUFFIXAPPLIESTO_ATR = "suffixAppliesTo";
299 
300 	/**A relatives ID indicating at what position to attach a suffix to by default*/
301 	static final String SUFFIXAPPLIESTOBYDEFAULT_ATR = "suffixAppliesToByDefault";
302 
303 	/**Added by the ComponentGenerator to a suffix*/
304 	static final String SUFFIXPREFIX_ATR = "suffixPrefix";
305 
306 	/**Can the substituent be implicitly bracketed to a previous substitutent e.g. methylaminobenzene --> (methylamino)benzene as amino has this attribute*/
307 	static final String USABLEASJOINER_ATR = "usableAsAJoiner";
308 
309 	/**The wordRule that a wordRule element corresponds to*/
310 	static final String WORDRULE_ATR ="wordRule";
311 
312 	/*
313 	 * The values the type attribute can take
314 	 * Type is expected to be present at minimum on all group elements
315 	 */
316 	/**A term like amide or hydrazide that replaces a functional hydroxy group*/
317 	static final String ACIDREPLACINGFUNCTIONALGROUP_TYPE_VAL ="acidReplacingFunctionalGroup";
318 
319 	/**A trivial carboxylic acid. These by default do not have their acid groups which are then added on using suffixes*/
320 	static final String ACIDSTEM_TYPE_VAL ="acidStem";
321 
322 	/**This stereochemistry element conveys alpha/beta stereochemistry*/
323 	static final String ALPHA_OR_BETA_TYPE_VAL ="alphaOrBeta";
324 
325 	/**An aminoAcid. These by default do not have their acid groups which are then added on using suffixes. Notably these suffixes do NOT correspond to tokens in the input chemical name!*/
326 	static final String AMINOACID_TYPE_VAL ="aminoAcid";
327 
328 	/**A subtractive prefix that removes a terminal chalcogen and forms an intramolecular bridge to another*/
329 	static final String ANHYDRO_TYPE_VAL ="anhydro";
330 
331 	/**This stereochemistry element conveys axial stereochemistry
332 	 * These indicate the postion of groups are an axis/plane/helix. This is expressed by the descriptors: M, P, Ra, Sa, Rp, Sp*/
333 	static final String AXIAL_TYPE_VAL ="axial";
334 
335 	/**A normal multiplier e.g. di*/
336 	static final String BASIC_TYPE_VAL ="basic";
337 
338 	/**An isotopeSpecification using boughton system nomenclature*/
339 	static final String BOUGHTONSYSTEM_TYPE_VAL ="boughtonSystem";
340 
341 	/**A locant enclosed in square brackets e.g. [5]*/
342 	static final String BRACKETEDLOCANT_TYPE_VAL ="bracketedLocant";
343 
344 	/**This stereochemistry element specifies stereochemistry in a carbohydrate e.g. gluco is  r/l/r/r (position of hydroxy in a fischer projection)*/
345 	static final String CARBOHYDRATECONFIGURATIONPREFIX_TYPE_VAL ="carbohydrateConfigurationalPrefix";
346 
347 	/**Groups formed in accordance with carbohydrate nomenclature */
348 	static final String CARBOHYDRATE_TYPE_VAL ="carbohydrate";
349 
350 	/**Indicates the group should be acyclic*/
351 	static final String CHAIN_TYPE_VAL ="chain";
352 
353 	/**This suffix modifies charge*/
354 	static final String CHARGE_TYPE_VAL ="charge";
355 
356 	/**This stereochemistry element conveys cis/trans stereochemistry*/
357 	static final String CISORTRANS_TYPE_VAL ="cisOrTrans";
358 
359 	/**This stereochemistry element conveys R/S stereochemistry*/
360 	static final String R_OR_S_TYPE_VAL ="RorS";
361 
362 	/**This stereochemistry element conveys E/Z stereochemistry*/
363 	static final String E_OR_Z_TYPE_VAL ="EorZ";
364 
365 	/**This group is a sulfur/selenium/tellurium acid with the acidic hydroxy missing*/
366 	static final String CHALCOGENACIDSTEM_TYPE_VAL ="chalcogenAcidStem";
367 
368 	/**A subtractive prefix that removes a hydrogen to covert a hydroxy into a carbonyl or convert a bond to a double/triple bond*/
369 	static final String DEHYDRO_TYPE_VAL ="dehydro";
370 
371 	/**A subtractive prefix that removes a terminal hydroxy like atom*/
372 	static final String DEOXY_TYPE_VAL ="deoxy";
373 
374 	/**A functional group describing a divalent group*/
375 	static final String DIVALENTGROUP_TYPE_VAL ="diValentGroup";
376 
377 	/** This stereochemsitry element indicates the configuration of an amino acid/carbohydrate relative to glyceraldehyde*/
378 	static final String DLSTEREOCHEMISTRY_TYPE_VAL ="dlStereochemistry";
379 
380 	/**This stereochemistry element conveys endo/exo/syn/anti stereochemistry
381 	 * These indicate relative orientation of groups attached to non-bridgehead atoms in a bicyclo[x.y.z]alkane (x >= y > z > 0)*/
382 	static final String ENDO_EXO_SYN_ANTI_TYPE_VAL ="endoExoSynAnti";
383 
384 	/**A group that is functional class e.g. O for anhydride*/
385 	static final String FUNCTIONALCLASS_TYPE_VAL ="functionalClass";
386 
387 	/**A multiplier for groups of terms e.g. bis*/
388 	static final String GROUP_TYPE_VAL ="group";
389 
390 	/**An implicit bracket. Implicit brackets are added where a bracket is needed to give the intended meaning*/
391 	static final String IMPLICIT_TYPE_VAL ="implicit";
392 
393 	/**This suffix adds a radical to the preceding group e.g. yl, oyl*/
394 	static final String INLINE_TYPE_VAL ="inline";
395 
396 	/**An isotopeSpecification using IUPAC nomenclature*/
397 	static final String IUPACSYSTEM_TYPE_VAL ="iupacSystem";
398 
399 	/**This functional group is monovalent e.g. alcohol*/
400 	static final String MONOVALENTGROUP_TYPE_VAL ="monoValentGroup";
401 
402 	/**This functional group is monovalent and describes a specific compound e.g. cyanide*/
403 	static final String MONOVALENTSTANDALONEGROUP_TYPE_VAL ="monoValentStandaloneGroup";
404 
405 	/**A non carboxylic acid e.g. phosphoric*/
406 	static final String NONCARBOXYLICACID_TYPE_VAL ="nonCarboxylicAcid";
407 
408 	/**This stereochemistry element describes the direction that plane polarised light is rotated*/
409 	static final String OPTICALROTATION_TYPE_VAL ="opticalRotation";
410 
411 	/**Indicates the locant was made from an ortho/meta/para term*/
412 	static final String ORTHOMETAPARA_TYPE_VAL ="orthoMetaPara";
413 
414 	/**This stereochemistry element conveys relative cis/trans stereochemistry e.g. r-1, c-2, t-3*/
415 	static final String RELATIVECISTRANS_TYPE_VAL ="relativeCisTrans";
416 
417 	/**Indicates the group should be, at least in part, cyclic*/
418 	static final String RING_TYPE_VAL ="ring";
419 
420 	/**Indicates a group that does not allow suffixes*/
421 	static final String SIMPLEGROUP_TYPE_VAL ="simpleGroup";
422 
423 	/**Groups that do not have any special rules for suffix handling*/
424 	static final String STANDARDGROUP_TYPE_VAL ="standardGroup";
425 
426 	/**A bracket containing R/S/E/Z descriptors*/
427 	static final String STEREOCHEMISTRYBRACKET_TYPE_VAL ="stereochemistryBracket";
428 
429 	/**Indicates a group that is a substituent*/
430 	static final String SUBSTITUENT_TYPE_VAL ="substituent";
431 
432 	/**A locant that also indicated the addition of hydrogen e.g.2(1H); not used to locant onto another group*/
433 	static final String ADDEDHYDROGENLOCANT_TYPE_VAL ="addedHydrogenLocant";
434 
435 	/**Indicates a group that is a suffix*/
436 	static final String SUFFIX_TYPE_VAL ="suffix";
437 
438 	/**A suffix that does not add a radical, hence will be present only on the root group */
439 	static final String ROOT_TYPE_VAL ="root";
440 
441 	/**A multiplier for a Von Baeyer system e.g. bi in bicyclo*/
442 	static final String VONBAEYER_TYPE_VAL ="VonBaeyer";
443 
444 
445 	/*
446 	 * The values the subType attribute can take
447 	 * subType is expected to be present at minimum on all group elements
448 	 */
449 
450 	/**The stem of an alkane e.g. "eth" */
451 	static final String ALKANESTEM_SUBTYPE_VAL ="alkaneStem";
452 	/**An anhydride functional term e.g. "thioanhydride"*/
453 	static final String ANHYDRIDE_SUBTYPE_VAL ="anhydride";
454 	/**An aryl subsituent or stem e.g. "phenyl", "styr" */
455 	static final String ARYLSUBSTITUENT_SUBTYPE_VAL ="arylSubstituent";
456 	/**Nucleotides/nucleosides/natural products.
457 	 * Carbohydrates can be detected by {@link XmlDeclarations#CARBOHYDRATE_TYPE_VAL}
458 	 * Amino acids can be detected by {@link XmlDeclarations#AMINOACID_TYPE_VAL}
459 	 * For any of the above use {@link OpsinTools#isBiochemical(String, String)}*/
460 	static final String BIOCHEMICAL_SUBTYPE_VAL ="biochemical";
461 	/**A trivial carbohydrate stem for an aldose e.g. "galact"*/
462 	static final String CARBOHYDRATESTEMALDOSE_SUBTYPE_VAL ="carbohydrateStemAldose";
463 	/**A trivial carbohydrate stem for a ketose e.g. "fruct"*/
464 	static final String CARBOHYDRATESTEMKETOSE_SUBTYPE_VAL ="carbohydrateStemKetose";
465 	/**A suffix that forms a cycle e.g. imide, lactam, sultam*/
466 	static final String CYCLEFORMER_SUBTYPE_VAL ="cycleformer";
467 	/**A hydrocarbon stem that is typically followed by an unsaturator e.g. "adamant" */
468 	static final String CYCLICUNSATURABLEHYDROCARBON_SUBTYPE_VAL ="cyclicUnsaturableHydrocarbon";
469 	/**Replacmenet terms that are not substituents e.g.  amido/hydrazido/imido/nitrido*/
470 	static final String DEDICATEDFUNCTIONALREPLACEMENTPREFIX_SUBTYPE_VAL = "dedicatedFunctionalReplacementPrefix";
471 	/**An atom e.g. "lithium" */
472 	static final String ELEMENTARYATOM_SUBTYPE_VAL ="elementaryAtom";
473 	/**An amino acid that ends in an e.g. tryptoph */
474 	static final String ENDINAN_SUBTYPE_VAL ="endInAn";
475 	/**An amino acid that ends in ic e.g. aspart */
476 	static final String ENDINIC_SUBTYPE_VAL ="endInIc";
477 	/**An amino acid that ends in ine e.g. alan */
478 	static final String ENDININE_SUBTYPE_VAL ="endInIne";
479 	/**A substituent that is expected to form a bridge e.g. "epoxy", "epiimino" */
480 	static final String EPOXYLIKE_SUBTYPE_VAL ="epoxyLike";
481 	/**A ring that will be fused onto another ring e.g. "benzo", "pyrido", "pyridino" */
482 	static final String FUSIONRING_SUBTYPE_VAL ="fusionRing";
483 	/**A group that can be suffixed e.g. "hydrazin" */
484 	static final String GROUPSTEM_SUBTYPE_VAL ="groupStem";
485 	/**A halide or pseudo halide e.g. "bromo", "cyano". Can be functional replacment terms when preceding certain non-carboxylic acids */
486 	static final String HALIDEORPSEUDOHALIDE_SUBTYPE_VAL = "halideOrPseudoHalide";
487 	/**The stem of a hantzch Widman ring sytem e.g. "an", "ol", "olidin"  */
488 	static final String HANTZSCHWIDMAN_SUBTYPE_VAL ="hantzschWidman";
489 	/**A heteroatom hydride e.g. "az" "sulf" (will be followed by an unsaturator, may be preceded by a multiplier to form the heteroatom equivalent of alkanes)*/
490 	static final String HETEROSTEM_SUBTYPE_VAL ="heteroStem";
491 	/**A group with no special properties Similar to: {@link XmlDeclarations#NONE_SUBTYPE_VAL}*/
492 	static final String SIMPLEGROUP_SUBTYPE_VAL ="simpleGroup";
493 	/**A substituent which intrinsically forms multiple bonds e.g. "siloxane", "thio" */
494 	static final String MULTIRADICALSUBSTITUENT_SUBTYPE_VAL ="multiRadicalSubstituent";
495 	/**A non-carboxylic acid which cannot form a substituent e.g. "bor" */
496 	static final String NOACYL_SUBTYPE_VAL ="noAcyl";
497 	/**A group with no special properties Similar to: {@link XmlDeclarations#SIMPLEGROUP_SUBTYPE_VAL}*/
498 	static final String NONE_SUBTYPE_VAL ="none";
499 	/**oxido/sulfido/selenido/tellurido These are handled similarly to oxide e.g. might give -[O-] or =O*/
500 	static final String OXIDOLIKE_SUBTYPE_VAL ="oxidoLike";
501 	/**A term indicating replacement of all substitutable hydrogens by a halogen e.g. "perchloro" */
502 	static final String PERHALOGENO_SUBTYPE_VAL ="perhalogeno";
503 	/** phospho and other very related substituents. Strongly prefer forming bonds to hydroxy groups */
504 	static final String PHOSPHO_SUBTYPE_VAL ="phospho";
505 	/**A ring group e.g. "pyridin" */
506 	static final String RING_SUBTYPE_VAL ="ring";
507 	/** A component of a salt e.g "hydrate", "2HCl" */
508 	static final String SALTCOMPONENT_SUBTYPE_VAL ="saltComponent";
509 	/**A substitutent with no suffix e.g. "amino" */
510 	static final String SIMPLESUBSTITUENT_SUBTYPE_VAL ="simpleSubstituent";
511 	/**A substituent expecting a suffix e.g."bor" "vin" */
512 	static final String SUBSTITUENT_SUBTYPE_VAL ="substituent";
513 	/**A group representing a straight chain carbohydrate of a certain length with undefined stereochemistry e.g. hex in hexose */
514 	static final String SYSTEMATICCARBOHYDRATESTEMALDOSE_SUBTYPE_VAL ="systematicCarbohydrateStemAldose";
515 	/**A group representing a straight chain carbohydrate of a certain length with undefined stereochemistry e.g. hex in hex-2-ulose */
516 	static final String SYSTEMATICCARBOHYDRATESTEMKETOSE_SUBTYPE_VAL ="systematicCarbohydrateStemKetose";
517 	/**A suffix that attaches to the end of a chain e.g. "aldehyde", "ic acid" */
518 	static final String TERMINAL_SUBTYPE_VAL ="terminal";
519 	/**An acid that when suffixed with yl gives an acyl group e.g. "acet" */
520 	static final String YLFORACYL_SUBTYPE_VAL ="ylForAcyl";
521 	/**An acid that has undefined meaning when suffixed with yl */
522 	static final String YLFORNOTHING_SUBTYPE_VAL ="ylForNothing";
523 	/**An acid that when suffixed with yl gives an alkyl group e.g. "laur" */
524 	static final String YLFORYL_SUBTYPE_VAL ="ylForYl";
525 
526 	/**Requests that no labelling should be applied */
527 	static final String NONE_LABELS_VAL ="none";
528 
529 	/**Requests that labelling be done like a fused ring. It is assumed that the order of the atoms is locant 1 as the first atom*/
530 	static final String FUSEDRING_LABELS_VAL ="fusedRing";
531 
532 	/**Requests that labelling be 1, 2, 3 etc. It is assumed that the order of the atoms is locant 1 as the first atom*/
533 	static final String NUMERIC_LABELS_VAL ="numeric";
534 
535 	/** InLocants have not been specified */
536 	static final String INLOCANTS_DEFAULT = "default";
537 
538 	/**
539 	 * See suffixRules.dtd
540 	 */
541 	static final String SUFFIXRULES_RULE_EL = "rule";
542 	static final String SUFFIXRULES_VALUE_ATR = "value";
543 	static final String SUFFIXRULES_SMILES_ATR = "SMILES";
544 	static final String SUFFIXRULES_LABELS_ATR = "labels";
545 	static final String SUFFIXRULES_FUNCTIONALIDS_ATR = "functionalIDs";
546 	static final String SUFFIXRULES_OUTIDS_ATR = "outIDs";
547 	static final String SUFFIXRULES_KETONELOCANT_ATR = "ketoneLocant";
548 	static final String SUFFIXRULES_ORDER_ATR = "order";
549 	static final String SUFFIXRULES_OUTVALENCY_ATR = "outValency";
550 	static final String SUFFIXRULES_CHARGE_ATR = "charge";
551 	static final String SUFFIXRULES_PROTONS_ATR = "protons";
552 	static final String SUFFIXRULES_ELEMENT_ATR = "element";
553 
554 	/**
555 	 * See suffixApplicability.dtd
556 	 */
557 	static final String SUFFIXAPPLICABILITY_GROUPTYPE_EL = "groupType";
558 	static final String SUFFIXAPPLICABILITY_SUFFIX_EL = "suffix";
559 	static final String SUFFIXAPPLICABILITY_TYPE_ATR = "type";
560 	static final String SUFFIXAPPLICABILITY_VALUE_ATR = "value";
561 	static final String SUFFIXAPPLICABILITY_SUBTYPE_ATR = "subType";
562 }
563