@nfdi4plants/arctrl 2.0.0-alpha.4 → 2.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ARC.js CHANGED
@@ -3,11 +3,13 @@ import { ARCtrl_ArcAssay__ArcAssay_ToUpdateContract, ARCtrl_ArcAssay__ArcAssay_T
3
3
  import { ARCtrl_DataMap__DataMap_ToUpdateContractForAssay_Z721C83C5, ARCtrl_DataMap__DataMap_ToCreateContractForAssay_Z721C83C5, ARCtrl_DataMap__DataMap_ToUpdateContractForStudy_Z721C83C5, ARCtrl_DataMap__DataMap_ToCreateContractForStudy_Z721C83C5, ARCtrl_DataMap__DataMap_tryFromReadContractForStudy_Static, ARCtrl_DataMap__DataMap_tryFromReadContractForAssay_Static } from "./Contract/Datamap.js";
4
4
  import { ARCtrl_ArcStudy__ArcStudy_ToCreateContract_6FCE9E49, ARCtrl_ArcStudy__ArcStudy_ToUpdateContract, ARCtrl_ArcStudy__ArcStudy_tryFromReadContract_Static_7570923F } from "./Contract/ArcStudy.js";
5
5
  import { ARCtrl_ArcInvestigation__ArcInvestigation_ToUpdateContract_6FCE9E49, ARCtrl_ArcInvestigation__ArcInvestigation_tryFromReadContract_Static_7570923F } from "./Contract/ArcInvestigation.js";
6
- import { collect, empty, iterate, find, tryFind, map as map_1, singleton, append, delay, toList, toArray } from "./fable_modules/fable-library-js.4.16.0/Seq.js";
6
+ import { collect, empty, iterate, find, tryFind, map as map_1, singleton, append, delay, toList, contains, toArray } from "./fable_modules/fable-library-js.4.16.0/Seq.js";
7
7
  import { FileSystemTree } from "./FileSystem/FileSystemTree.js";
8
8
  import { FileSystem } from "./FileSystem/FileSystem.js";
9
9
  import { bind, map as map_2, value as value_2, defaultArg, unwrap } from "./fable_modules/fable-library-js.4.16.0/Option.js";
10
+ import { comparePrimitives, safeHash, stringHash } from "./fable_modules/fable-library-js.4.16.0/Util.js";
10
11
  import { getStudyFolderPath, getAssayFolderPath } from "./FileSystem/Path.js";
12
+ import { printf, toText, replace } from "./fable_modules/fable-library-js.4.16.0/String.js";
11
13
  import { Contract } from "./Contract/Contract.js";
12
14
  import { ofArray } from "./fable_modules/fable-library-js.4.16.0/List.js";
13
15
  import { tryISAReadContractFromPath } from "./Contract/ARC.js";
@@ -18,16 +20,14 @@ import { ArcInvestigation } from "./Core/ArcTypes.js";
18
20
  import { Assay_datamapFileNameFromIdentifier, Assay_fileNameFromIdentifier, Study_datamapFileNameFromIdentifier, Study_fileNameFromIdentifier } from "./Core/Helper/Identifier.js";
19
21
  import { ARCtrl_ArcStudy__ArcStudy_toFsWorkbook_Static_353D0DB7 } from "./Spreadsheet/ArcStudy.js";
20
22
  import { DataMap__get_StaticHash, DataMap__set_StaticHash_Z524259A4 } from "./Core/Table/DataMap.js";
21
- import { comparePrimitives, safeHash } from "./fable_modules/fable-library-js.4.16.0/Util.js";
22
23
  import { toFsWorkbook as toFsWorkbook_1 } from "./Spreadsheet/DataMap.js";
23
24
  import { toFsWorkbook as toFsWorkbook_2 } from "./Spreadsheet/ArcAssay.js";
24
25
  import { Dictionary_tryGet } from "./fable_modules/FsSpreadsheet.6.1.2/Cells/FsCellsCollection.fs.js";
25
- import { Clone_createCloneContract_5000466F, Init_createAddRemoteContract_Z721C83C5, gitignoreContract, Init_createInitContract_6DFDD678 } from "./Contract/Git.js";
26
+ import { Clone_createCloneContract_5000466F, Init_createAddRemoteContract_Z721C83C5, gitignoreContract, gitattributesContract, Init_createInitContract_6DFDD678 } from "./Contract/Git.js";
26
27
  import { FSharpSet__Contains, ofSeq, unionMany } from "./fable_modules/fable-library-js.4.16.0/Set.js";
27
28
  import { ofSeq as ofSeq_1 } from "./fable_modules/fable-library-js.4.16.0/Map.js";
28
29
  import { fromString } from "./fable_modules/Thoth.Json.JavaScript.0.1.0/Decode.fs.js";
29
30
  import { encoder, decoder as decoder_1 } from "./Json/ARC.js";
30
- import { printf, toText } from "./fable_modules/fable-library-js.4.16.0/String.js";
31
31
  import { toString } from "./fable_modules/Thoth.Json.JavaScript.0.1.0/Encode.fs.js";
32
32
  import { defaultSpaces } from "./Json/Encode.js";
33
33
  import { class_type } from "./fable_modules/fable-library-js.4.16.0/Reflection.js";
@@ -118,14 +118,22 @@ export class ARC {
118
118
  this$._fs = fs;
119
119
  }
120
120
  RemoveAssay(assayIdentifier) {
121
+ let i;
121
122
  const this$ = this;
122
123
  let isa;
123
124
  const matchValue = this$.ISA;
124
125
  if (matchValue == null) {
125
126
  throw new Error("Cannot remove assay from null ISA value.");
126
127
  }
128
+ else if ((i = matchValue, contains(assayIdentifier, i.AssayIdentifiers, {
129
+ Equals: (x, y) => (x === y),
130
+ GetHashCode: stringHash,
131
+ }))) {
132
+ const i_1 = matchValue;
133
+ isa = i_1;
134
+ }
127
135
  else {
128
- isa = matchValue;
136
+ throw new Error("ARC does not contain assay with given name");
129
137
  }
130
138
  const assay = isa.GetAssay(assayIdentifier);
131
139
  const studies = assay.StudiesRegisteredIn;
@@ -137,6 +145,33 @@ export class ARC {
137
145
  const collection = toList(delay(() => append(singleton(ARCtrl_ArcAssay__ArcAssay_ToDeleteContract(assay)), delay(() => append(singleton(ARCtrl_ArcInvestigation__ArcInvestigation_ToUpdateContract_6FCE9E49(isa)), delay(() => map_1(ARCtrl_ArcStudy__ArcStudy_ToUpdateContract, studies)))))));
138
146
  return Array.from(collection);
139
147
  }
148
+ RenameAssay(oldAssayIdentifier, newAssayIdentifier) {
149
+ let i;
150
+ const this$ = this;
151
+ let isa;
152
+ const matchValue = this$.ISA;
153
+ if (matchValue == null) {
154
+ throw new Error("Cannot rename assay in null ISA value.");
155
+ }
156
+ else if ((i = matchValue, contains(oldAssayIdentifier, i.AssayIdentifiers, {
157
+ Equals: (x, y) => (x === y),
158
+ GetHashCode: stringHash,
159
+ }))) {
160
+ const i_1 = matchValue;
161
+ isa = i_1;
162
+ }
163
+ else {
164
+ throw new Error("ARC does not contain assay with given name");
165
+ }
166
+ isa.RenameAssay(oldAssayIdentifier, newAssayIdentifier);
167
+ const paths = this$.FileSystem.Tree.ToFilePaths();
168
+ const oldAssayFolderPath = getAssayFolderPath(oldAssayIdentifier);
169
+ const newAssayFolderPath = getAssayFolderPath(newAssayIdentifier);
170
+ const renamedPaths = map((p) => replace(p, oldAssayFolderPath, newAssayFolderPath), paths);
171
+ this$.SetFilePaths(renamedPaths);
172
+ const collection = toList(delay(() => append(singleton(Contract.createRename(oldAssayFolderPath, newAssayFolderPath)), delay(() => this$.GetUpdateContracts()))));
173
+ return Array.from(collection);
174
+ }
140
175
  RemoveStudy(studyIdentifier) {
141
176
  const this$ = this;
142
177
  let isa;
@@ -155,6 +190,33 @@ export class ARC {
155
190
  const collection = ofArray([Contract.createDelete(studyFolderPath), ARCtrl_ArcInvestigation__ArcInvestigation_ToUpdateContract_6FCE9E49(isa)]);
156
191
  return Array.from(collection);
157
192
  }
193
+ RenameStudy(oldStudyIdentifier, newStudyIdentifier) {
194
+ let i;
195
+ const this$ = this;
196
+ let isa;
197
+ const matchValue = this$.ISA;
198
+ if (matchValue == null) {
199
+ throw new Error("Cannot rename study in null ISA value.");
200
+ }
201
+ else if ((i = matchValue, contains(oldStudyIdentifier, i.StudyIdentifiers, {
202
+ Equals: (x, y) => (x === y),
203
+ GetHashCode: stringHash,
204
+ }))) {
205
+ const i_1 = matchValue;
206
+ isa = i_1;
207
+ }
208
+ else {
209
+ throw new Error("ARC does not contain study with given name");
210
+ }
211
+ isa.RenameStudy(oldStudyIdentifier, newStudyIdentifier);
212
+ const paths = this$.FileSystem.Tree.ToFilePaths();
213
+ const oldStudyFolderPath = getStudyFolderPath(oldStudyIdentifier);
214
+ const newStudyFolderPath = getStudyFolderPath(newStudyIdentifier);
215
+ const renamedPaths = map((p) => replace(p, oldStudyFolderPath, newStudyFolderPath), paths);
216
+ this$.SetFilePaths(renamedPaths);
217
+ const collection = toList(delay(() => append(singleton(Contract.createRename(oldStudyFolderPath, newStudyFolderPath)), delay(() => this$.GetUpdateContracts()))));
218
+ return Array.from(collection);
219
+ }
158
220
  static fromFilePaths(filePaths) {
159
221
  return new ARC(void 0, void 0, FileSystem.fromFilePaths(filePaths));
160
222
  }
@@ -366,7 +428,7 @@ export class ARC {
366
428
  }
367
429
  GetGitInitContracts(branch, repositoryAddress, defaultGitignore) {
368
430
  const defaultGitignore_1 = defaultArg(defaultGitignore, false);
369
- return toArray(delay(() => append(singleton(Init_createInitContract_6DFDD678(unwrap(branch))), delay(() => append(defaultGitignore_1 ? singleton(gitignoreContract) : empty(), delay(() => ((repositoryAddress != null) ? singleton(Init_createAddRemoteContract_Z721C83C5(value_2(repositoryAddress))) : empty())))))));
431
+ return toArray(delay(() => append(singleton(Init_createInitContract_6DFDD678(unwrap(branch))), delay(() => append(singleton(gitattributesContract), delay(() => append(defaultGitignore_1 ? singleton(gitignoreContract) : empty(), delay(() => ((repositoryAddress != null) ? singleton(Init_createAddRemoteContract_Z721C83C5(value_2(repositoryAddress))) : empty())))))))));
370
432
  }
371
433
  static getCloneContract(remoteUrl, merge, branch, token, nolfs) {
372
434
  return Clone_createCloneContract_5000466F(remoteUrl, unwrap(merge), unwrap(branch), unwrap(token), unwrap(nolfs));
@@ -442,7 +504,7 @@ export class ARC {
442
504
  }, (tree = ((paths = ((array = FileSystemTree.toFilePaths()(this$._fs.Copy().Tree), array.filter((p) => !FSharpSet__Contains(registeredPayload, p)))), FileSystemTree.fromFilePaths(paths))), ignoreHidden ? FileSystemTree.filterFiles((n) => !(n.indexOf(".") === 0))(tree) : tree)), FileSystemTree.fromFilePaths([]));
443
505
  }
444
506
  static get DefaultContracts() {
445
- return ofSeq_1([[".gitignore", gitignoreContract]], {
507
+ return ofSeq_1([[".gitignore", gitignoreContract], [".gitattributes", gitattributesContract]], {
446
508
  Compare: comparePrimitives,
447
509
  });
448
510
  }
@@ -87,6 +87,9 @@ export class Contract extends Record {
87
87
  static createExecute(dto, path) {
88
88
  return new Contract("EXECUTE", defaultArg(path, ""), "Cli", dto);
89
89
  }
90
+ static createRename(oldPath, newPath) {
91
+ return new Contract("RENAME", oldPath, void 0, newPath);
92
+ }
90
93
  }
91
94
 
92
95
  export function Contract_$reflection() {
package/Contract/Git.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Contract, CLITool } from "./Contract.js";
2
2
  import { dgi } from "../FileSystem/DefaultGitignore.js";
3
+ import { dga } from "../FileSystem/DefaultGitattributes.js";
3
4
  import { class_type } from "../fable_modules/fable-library-js.4.16.0/Reflection.js";
4
5
  import { value, defaultArg } from "../fable_modules/fable-library-js.4.16.0/Option.js";
5
6
  import { replace } from "../fable_modules/fable-library-js.4.16.0/String.js";
@@ -19,6 +20,8 @@ export function createGitContract(arguments$) {
19
20
 
20
21
  export const gitignoreContract = Contract.createCreate(".gitignore", "PlainText", dgi);
21
22
 
23
+ export const gitattributesContract = Contract.createCreate(".gitattributes", "PlainText", dga);
24
+
22
25
  export class Init {
23
26
  constructor() {
24
27
  }
package/Core/ArcTypes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { value as value_4, defaultArg, map, unwrap } from "../fable_modules/fable-library-js.4.16.0/Option.js";
2
- import { collect, append as append_3, tryFind, removeAt, tryFindIndex, exists, choose, item, map as map_1, delay, toList, fold, length, forAll, contains, filter, toArray } from "../fable_modules/fable-library-js.4.16.0/Seq.js";
2
+ import { collect, append as append_3, tryFind, removeAt, iterateIndexed, iterate, tryFindIndex, exists, choose, item, map as map_1, delay, toList, fold, length, forAll, contains, filter, toArray } from "../fable_modules/fable-library-js.4.16.0/Seq.js";
3
3
  import { defaultOf, safeHash, equals, disposeSafe, getEnumerator, stringHash } from "../fable_modules/fable-library-js.4.16.0/Util.js";
4
4
  import { ResizeArray_choose, ResizeArray_filter, ResizeArray_map } from "./Helper/Collections.js";
5
5
  import { DataMap__Copy } from "./Table/DataMap.js";
@@ -1576,6 +1576,28 @@ export class ArcInvestigation {
1576
1576
  return newInv;
1577
1577
  };
1578
1578
  }
1579
+ RenameAssay(oldIdentifier, newIdentifier) {
1580
+ const this$ = this;
1581
+ iterate((a) => {
1582
+ if (a.Identifier === oldIdentifier) {
1583
+ a.Identifier = newIdentifier;
1584
+ }
1585
+ }, this$.Assays);
1586
+ iterate((s) => {
1587
+ iterateIndexed((i, ai) => {
1588
+ if (ai === oldIdentifier) {
1589
+ s.RegisteredAssayIdentifiers[i] = newIdentifier;
1590
+ }
1591
+ }, s.RegisteredAssayIdentifiers);
1592
+ }, this$.Studies);
1593
+ }
1594
+ static renameAssay(oldIdentifier, newIdentifier) {
1595
+ return (inv) => {
1596
+ const newInv = inv.Copy();
1597
+ newInv.RenameAssay(oldIdentifier, newIdentifier);
1598
+ return newInv;
1599
+ };
1600
+ }
1579
1601
  SetAssayAt(index, assay) {
1580
1602
  const this$ = this;
1581
1603
  const assayIdent = assay.Identifier;
@@ -1810,6 +1832,26 @@ export class ArcInvestigation {
1810
1832
  return copy;
1811
1833
  };
1812
1834
  }
1835
+ RenameStudy(oldIdentifier, newIdentifier) {
1836
+ const this$ = this;
1837
+ iterate((s) => {
1838
+ if (s.Identifier === oldIdentifier) {
1839
+ s.Identifier = newIdentifier;
1840
+ }
1841
+ }, this$.Studies);
1842
+ iterateIndexed((i, si) => {
1843
+ if (si === oldIdentifier) {
1844
+ this$.RegisteredStudyIdentifiers[i] = newIdentifier;
1845
+ }
1846
+ }, this$.RegisteredStudyIdentifiers);
1847
+ }
1848
+ static renameStudy(oldIdentifier, newIdentifier) {
1849
+ return (inv) => {
1850
+ const newInv = inv.Copy();
1851
+ newInv.RenameStudy(oldIdentifier, newIdentifier);
1852
+ return newInv;
1853
+ };
1854
+ }
1813
1855
  SetStudyAt(index, study) {
1814
1856
  const this$ = this;
1815
1857
  const study_1 = study;
@@ -1,7 +1,7 @@
1
1
  import { remove, toFail, endsWith, printf, toText } from "../fable_modules/fable-library-js.4.16.0/String.js";
2
2
  import { Comment$ } from "./Comment.js";
3
3
  import { zip as zip_1, fold, empty as empty_1, singleton as singleton_1, append, delay, map as map_1, filter, toList, indexed, tryPick, choose } from "../fable_modules/fable-library-js.4.16.0/Seq.js";
4
- import { unwrap, value as value_9, map, defaultArg } from "../fable_modules/fable-library-js.4.16.0/Option.js";
4
+ import { unwrap, value as value_10, map, defaultArg } from "../fable_modules/fable-library-js.4.16.0/Option.js";
5
5
  import { Option_fromValueWithDefault, ResizeArray_filter } from "./Helper/Collections.js";
6
6
  import { Value as Value_2 } from "./Process/Value.js";
7
7
  import { Component_create_4208F9FC } from "./Process/Component.js";
@@ -68,7 +68,7 @@ export function Person_getSourceAssayIdentifiersFromComments(person) {
68
68
  export function Person_removeSourceAssayComments(person) {
69
69
  return ResizeArray_filter((c) => {
70
70
  if (c.Name != null) {
71
- return !(value_9(c.Name).indexOf(Person_AssayIdentifierPrefix) === 0);
71
+ return !(value_10(c.Name).indexOf(Person_AssayIdentifierPrefix) === 0);
72
72
  }
73
73
  else {
74
74
  return false;
@@ -80,7 +80,7 @@ export function Person_setOrcidFromComments(person) {
80
80
  const person_1 = person.Copy();
81
81
  const isOrcidComment = (c) => {
82
82
  if (c.Name != null) {
83
- return endsWith(value_9(c.Name).toLocaleUpperCase(), Person_orcidKey);
83
+ return endsWith(value_10(c.Name).toLocaleUpperCase(), Person_orcidKey);
84
84
  }
85
85
  else {
86
86
  return false;
@@ -341,28 +341,28 @@ export function JsonTypes_cellOfValue(value, unit) {
341
341
  * Convert an ISA Component to a CompositeHeader and Cell tuple
342
342
  */
343
343
  export function JsonTypes_decomposeComponent(c) {
344
- return [new CompositeHeader(0, [value_9(c.ComponentType)]), JsonTypes_cellOfValue(c.ComponentValue, c.ComponentUnit)];
344
+ return [new CompositeHeader(0, [value_10(c.ComponentType)]), JsonTypes_cellOfValue(c.ComponentValue, c.ComponentUnit)];
345
345
  }
346
346
 
347
347
  /**
348
348
  * Convert an ISA ProcessParameterValue to a CompositeHeader and Cell tuple
349
349
  */
350
350
  export function JsonTypes_decomposeParameterValue(ppv) {
351
- return [new CompositeHeader(3, [value_9(value_9(ppv.Category).ParameterName)]), JsonTypes_cellOfValue(ppv.Value, ppv.Unit)];
351
+ return [new CompositeHeader(3, [value_10(value_10(ppv.Category).ParameterName)]), JsonTypes_cellOfValue(ppv.Value, ppv.Unit)];
352
352
  }
353
353
 
354
354
  /**
355
355
  * Convert an ISA FactorValue to a CompositeHeader and Cell tuple
356
356
  */
357
357
  export function JsonTypes_decomposeFactorValue(fv) {
358
- return [new CompositeHeader(2, [value_9(value_9(fv.Category).FactorType)]), JsonTypes_cellOfValue(fv.Value, fv.Unit)];
358
+ return [new CompositeHeader(2, [value_10(value_10(fv.Category).FactorType)]), JsonTypes_cellOfValue(fv.Value, fv.Unit)];
359
359
  }
360
360
 
361
361
  /**
362
362
  * Convert an ISA MaterialAttributeValue to a CompositeHeader and Cell tuple
363
363
  */
364
364
  export function JsonTypes_decomposeCharacteristicValue(cv) {
365
- return [new CompositeHeader(1, [value_9(value_9(cv.Category).CharacteristicType)]), JsonTypes_cellOfValue(cv.Value, cv.Unit)];
365
+ return [new CompositeHeader(1, [value_10(value_10(cv.Category).CharacteristicType)]), JsonTypes_cellOfValue(cv.Value, cv.Unit)];
366
366
  }
367
367
 
368
368
  /**
@@ -376,7 +376,7 @@ export function JsonTypes_decomposeProcessInput(pi) {
376
376
  return [new CompositeHeader(11, [new IOType(3, [])]), new CompositeCell(1, [defaultArg(pi.fields[0].Name, "")])];
377
377
  case 2: {
378
378
  const d = pi.fields[0];
379
- const dataType = value_9(d.DataType);
379
+ const dataType = value_10(d.DataType);
380
380
  switch (dataType.tag) {
381
381
  case 0:
382
382
  return [new CompositeHeader(11, [new IOType(2, [])]), new CompositeCell(1, [defaultArg(d.Name, "")])];
@@ -400,7 +400,7 @@ export function JsonTypes_decomposeProcessOutput(po) {
400
400
  return [new CompositeHeader(12, [new IOType(3, [])]), new CompositeCell(1, [defaultArg(po.fields[0].Name, "")])];
401
401
  case 1: {
402
402
  const d = po.fields[0];
403
- const dataType = value_9(d.DataType);
403
+ const dataType = value_10(d.DataType);
404
404
  switch (dataType.tag) {
405
405
  case 0:
406
406
  return [new CompositeHeader(12, [new IOType(2, [])]), new CompositeCell(1, [defaultArg(d.Name, "")])];
@@ -455,7 +455,7 @@ export function JsonTypes_decomposeTechnologyPlatform(name) {
455
455
  }
456
456
 
457
457
  /**
458
- * If the headers of a node depict a component, returns a function for parsing the values of the matrix to the values of this component
458
+ * If the given headers depict a component, returns a function for parsing the values of the matrix to the values of this component
459
459
  */
460
460
  export function ProcessParsing_tryComponentGetter(generalI, valueI, valueHeader) {
461
461
  if (valueHeader.tag === 0) {
@@ -469,7 +469,7 @@ export function ProcessParsing_tryComponentGetter(generalI, valueI, valueHeader)
469
469
  }
470
470
 
471
471
  /**
472
- * If the headers of a node depict a protocolType, returns a function for parsing the values of the matrix to the values of this type
472
+ * If the given headers depict a parameter, returns a function for parsing the values of the matrix to the values of this type
473
473
  */
474
474
  export function ProcessParsing_tryParameterGetter(generalI, valueI, valueHeader) {
475
475
  if (valueHeader.tag === 3) {
@@ -481,6 +481,9 @@ export function ProcessParsing_tryParameterGetter(generalI, valueI, valueHeader)
481
481
  }
482
482
  }
483
483
 
484
+ /**
485
+ * If the given headers depict a factor, returns a function for parsing the values of the matrix to the values of this type
486
+ */
484
487
  export function ProcessParsing_tryFactorGetter(generalI, valueI, valueHeader) {
485
488
  if (valueHeader.tag === 2) {
486
489
  const cat = new CompositeHeader(2, [ARCtrl_OntologyAnnotation__OntologyAnnotation_setColumnIndex_Static(valueI, valueHeader.fields[0])]);
@@ -491,6 +494,9 @@ export function ProcessParsing_tryFactorGetter(generalI, valueI, valueHeader) {
491
494
  }
492
495
  }
493
496
 
497
+ /**
498
+ * If the given headers depict a protocolType, returns a function for parsing the values of the matrix to the values of this type
499
+ */
494
500
  export function ProcessParsing_tryCharacteristicGetter(generalI, valueI, valueHeader) {
495
501
  if (valueHeader.tag === 1) {
496
502
  const cat = new CompositeHeader(1, [ARCtrl_OntologyAnnotation__OntologyAnnotation_setColumnIndex_Static(valueI, valueHeader.fields[0])]);
@@ -502,7 +508,7 @@ export function ProcessParsing_tryCharacteristicGetter(generalI, valueI, valueHe
502
508
  }
503
509
 
504
510
  /**
505
- * If the headers of a node depict a protocolType, returns a function for parsing the values of the matrix to the values of this type
511
+ * If the given headers depict a protocolType, returns a function for parsing the values of the matrix to the values of this type
506
512
  */
507
513
  export function ProcessParsing_tryGetProtocolTypeGetter(generalI, header) {
508
514
  if (header.tag === 4) {
@@ -513,6 +519,9 @@ export function ProcessParsing_tryGetProtocolTypeGetter(generalI, header) {
513
519
  }
514
520
  }
515
521
 
522
+ /**
523
+ * If the given headers depict a protocolREF, returns a function for parsing the values of the matrix to the values of this type
524
+ */
516
525
  export function ProcessParsing_tryGetProtocolREFGetter(generalI, header) {
517
526
  if (header.tag === 8) {
518
527
  return (matrix) => ((i) => getItemFromDict(matrix, [generalI, i]).AsFreeText);
@@ -522,6 +531,9 @@ export function ProcessParsing_tryGetProtocolREFGetter(generalI, header) {
522
531
  }
523
532
  }
524
533
 
534
+ /**
535
+ * If the given headers depict a protocolDescription, returns a function for parsing the values of the matrix to the values of this type
536
+ */
525
537
  export function ProcessParsing_tryGetProtocolDescriptionGetter(generalI, header) {
526
538
  if (header.tag === 5) {
527
539
  return (matrix) => ((i) => getItemFromDict(matrix, [generalI, i]).AsFreeText);
@@ -531,6 +543,9 @@ export function ProcessParsing_tryGetProtocolDescriptionGetter(generalI, header)
531
543
  }
532
544
  }
533
545
 
546
+ /**
547
+ * If the given headers depict a protocolURI, returns a function for parsing the values of the matrix to the values of this type
548
+ */
534
549
  export function ProcessParsing_tryGetProtocolURIGetter(generalI, header) {
535
550
  if (header.tag === 6) {
536
551
  return (matrix) => ((i) => getItemFromDict(matrix, [generalI, i]).AsFreeText);
@@ -540,6 +555,9 @@ export function ProcessParsing_tryGetProtocolURIGetter(generalI, header) {
540
555
  }
541
556
  }
542
557
 
558
+ /**
559
+ * If the given headers depict a protocolVersion, returns a function for parsing the values of the matrix to the values of this type
560
+ */
543
561
  export function ProcessParsing_tryGetProtocolVersionGetter(generalI, header) {
544
562
  if (header.tag === 7) {
545
563
  return (matrix) => ((i) => getItemFromDict(matrix, [generalI, i]).AsFreeText);
@@ -549,6 +567,9 @@ export function ProcessParsing_tryGetProtocolVersionGetter(generalI, header) {
549
567
  }
550
568
  }
551
569
 
570
+ /**
571
+ * If the given headers depict an input, returns a function for parsing the values of the matrix to the values of this type
572
+ */
552
573
  export function ProcessParsing_tryGetInputGetter(generalI, header) {
553
574
  if (header.tag === 11) {
554
575
  return (matrix) => ((i) => JsonTypes_composeProcessInput(header, getItemFromDict(matrix, [generalI, i])));
@@ -558,6 +579,9 @@ export function ProcessParsing_tryGetInputGetter(generalI, header) {
558
579
  }
559
580
  }
560
581
 
582
+ /**
583
+ * If the given headers depict an output, returns a function for parsing the values of the matrix to the values of this type
584
+ */
561
585
  export function ProcessParsing_tryGetOutputGetter(generalI, header) {
562
586
  if (header.tag === 12) {
563
587
  return (matrix) => ((i) => JsonTypes_composeProcessOutput(header, getItemFromDict(matrix, [generalI, i])));
@@ -567,6 +591,18 @@ export function ProcessParsing_tryGetOutputGetter(generalI, header) {
567
591
  }
568
592
  }
569
593
 
594
+ /**
595
+ * If the given headers depict a comment, returns a function for parsing the values of the matrix to the values of this type
596
+ */
597
+ export function ProcessParsing_tryGetCommentGetter(generalI, header) {
598
+ if (header.tag === 14) {
599
+ return (matrix) => ((i) => (new Comment$(header.fields[0], getItemFromDict(matrix, [generalI, i]).AsFreeText)));
600
+ }
601
+ else {
602
+ return void 0;
603
+ }
604
+ }
605
+
570
606
  /**
571
607
  * Given the header sequence of an ArcTable, returns a function for parsing each row of the table to a process
572
608
  */
@@ -594,8 +630,9 @@ export function ProcessParsing_getProcessGetter(processNameRoot, headers) {
594
630
  const protocolDescriptionGetter = tryPick((tupledArg_6) => ProcessParsing_tryGetProtocolDescriptionGetter(tupledArg_6[0], tupledArg_6[1]), headers_1);
595
631
  const protocolURIGetter = tryPick((tupledArg_7) => ProcessParsing_tryGetProtocolURIGetter(tupledArg_7[0], tupledArg_7[1]), headers_1);
596
632
  const protocolVersionGetter = tryPick((tupledArg_8) => ProcessParsing_tryGetProtocolVersionGetter(tupledArg_8[0], tupledArg_8[1]), headers_1);
633
+ const commentGetters = toList(choose((tupledArg_9) => ProcessParsing_tryGetCommentGetter(tupledArg_9[0], tupledArg_9[1]), headers_1));
597
634
  let inputGetter_1;
598
- const matchValue = tryPick((tupledArg_9) => ProcessParsing_tryGetInputGetter(tupledArg_9[0], tupledArg_9[1]), headers_1);
635
+ const matchValue = tryPick((tupledArg_10) => ProcessParsing_tryGetInputGetter(tupledArg_10[0], tupledArg_10[1]), headers_1);
599
636
  if (matchValue == null) {
600
637
  inputGetter_1 = ((matrix_1) => ((i_1) => singleton(new ProcessInput(0, [Source_create_Z5CA08497(void 0, `${processNameRoot}_Input_${i_1}`, toList(map_1((f_1) => f_1(matrix_1)(i_1), charGetters)))]))));
601
638
  }
@@ -608,7 +645,7 @@ export function ProcessParsing_getProcessGetter(processNameRoot, headers) {
608
645
  }));
609
646
  }
610
647
  let outputGetter_1;
611
- const matchValue_1 = tryPick((tupledArg_10) => ProcessParsing_tryGetOutputGetter(tupledArg_10[0], tupledArg_10[1]), headers_1);
648
+ const matchValue_1 = tryPick((tupledArg_11) => ProcessParsing_tryGetOutputGetter(tupledArg_11[0], tupledArg_11[1]), headers_1);
612
649
  if (matchValue_1 == null) {
613
650
  outputGetter_1 = ((matrix_3) => ((i_3) => singleton(new ProcessOutput(0, [Sample_create_62424AD2(void 0, `${processNameRoot}_Output_${i_3}`, void 0, toList(map_1((f_3) => f_3(matrix_3)(i_3), factorValueGetters)))]))));
614
651
  }
@@ -623,9 +660,10 @@ export function ProcessParsing_getProcessGetter(processNameRoot, headers) {
623
660
  return (matrix_4) => ((i_4) => {
624
661
  const pn = map((p) => Process_composeName(p, i_4), Option_fromValueWithDefault("", processNameRoot));
625
662
  const paramvalues = Option_fromValueWithDefault(empty(), map_2((f_4) => f_4(matrix_4)(i_4), parameterValueGetters));
626
- const parameters = map((list_5) => map_2((pv) => value_9(pv.Category), list_5), paramvalues);
663
+ const parameters = map((list_5) => map_2((pv) => value_10(pv.Category), list_5), paramvalues);
664
+ const comments = Option_fromValueWithDefault(empty(), map_2((f_5) => f_5(matrix_4)(i_4), commentGetters));
627
665
  let protocol;
628
- const p_1 = Protocol_make(void 0, map((f_5) => f_5(matrix_4)(i_4), protocolREFGetter), map((f_6) => f_6(matrix_4)(i_4), protocolTypeGetter), map((f_7) => f_7(matrix_4)(i_4), protocolDescriptionGetter), map((f_8) => f_8(matrix_4)(i_4), protocolURIGetter), map((f_9) => f_9(matrix_4)(i_4), protocolVersionGetter), parameters, Option_fromValueWithDefault(empty(), map_2((f_10) => f_10(matrix_4)(i_4), componentGetters)), void 0);
666
+ const p_1 = Protocol_make(void 0, map((f_6) => f_6(matrix_4)(i_4), protocolREFGetter), map((f_7) => f_7(matrix_4)(i_4), protocolTypeGetter), map((f_8) => f_8(matrix_4)(i_4), protocolDescriptionGetter), map((f_9) => f_9(matrix_4)(i_4), protocolURIGetter), map((f_10) => f_10(matrix_4)(i_4), protocolVersionGetter), parameters, Option_fromValueWithDefault(empty(), map_2((f_11) => f_11(matrix_4)(i_4), componentGetters)), void 0);
629
667
  let matchResult;
630
668
  if (p_1.Name == null) {
631
669
  if (p_1.ProtocolType == null) {
@@ -670,7 +708,7 @@ export function ProcessParsing_getProcessGetter(processNameRoot, headers) {
670
708
  const inputs = inputGetter_1(matrix_4)(i_4);
671
709
  const outputs = outputGetter_1(matrix_4)(i_4);
672
710
  patternInput = (((length(inputs) === 1) && (length(outputs) === 2)) ? [ofArray([item(0, inputs), item(0, inputs)]), outputs] : (((length(inputs) === 2) && (length(outputs) === 1)) ? [inputs, ofArray([item(0, outputs), item(0, outputs)])] : [inputs, outputs]));
673
- return Process_make(void 0, pn, protocol, paramvalues, void 0, void 0, void 0, void 0, patternInput[0], patternInput[1], void 0);
711
+ return Process_make(void 0, pn, protocol, paramvalues, void 0, void 0, void 0, void 0, patternInput[0], patternInput[1], comments);
674
712
  });
675
713
  }
676
714
 
@@ -683,21 +721,21 @@ export function ProcessParsing_getProcessGetter(processNameRoot, headers) {
683
721
  */
684
722
  export function ProcessParsing_groupProcesses(ps) {
685
723
  return List_groupBy((x) => {
686
- if ((x.Name != null) && (Process_decomposeName_Z721C83C5(value_9(x.Name))[1] != null)) {
687
- return Process_decomposeName_Z721C83C5(value_9(x.Name))[0];
724
+ if ((x.Name != null) && (Process_decomposeName_Z721C83C5(value_10(x.Name))[1] != null)) {
725
+ return Process_decomposeName_Z721C83C5(value_10(x.Name))[0];
688
726
  }
689
- else if ((x.ExecutesProtocol != null) && (value_9(x.ExecutesProtocol).Name != null)) {
690
- return value_9(value_9(x.ExecutesProtocol).Name);
727
+ else if ((x.ExecutesProtocol != null) && (value_10(x.ExecutesProtocol).Name != null)) {
728
+ return value_10(value_10(x.ExecutesProtocol).Name);
691
729
  }
692
- else if ((x.Name != null) && (value_9(x.Name).indexOf("_") >= 0)) {
693
- const lastUnderScoreIndex = value_9(x.Name).lastIndexOf("_") | 0;
694
- return remove(value_9(x.Name), lastUnderScoreIndex);
730
+ else if ((x.Name != null) && (value_10(x.Name).indexOf("_") >= 0)) {
731
+ const lastUnderScoreIndex = value_10(x.Name).lastIndexOf("_") | 0;
732
+ return remove(value_10(x.Name), lastUnderScoreIndex);
695
733
  }
696
734
  else if (x.Name != null) {
697
- return value_9(x.Name);
735
+ return value_10(x.Name);
698
736
  }
699
- else if ((x.ExecutesProtocol != null) && (value_9(x.ExecutesProtocol).ID != null)) {
700
- return value_9(value_9(x.ExecutesProtocol).ID);
737
+ else if ((x.ExecutesProtocol != null) && (value_10(x.ExecutesProtocol).ID != null)) {
738
+ return value_10(value_10(x.ExecutesProtocol).ID);
701
739
  }
702
740
  else {
703
741
  return createMissingIdentifier();
@@ -713,14 +751,14 @@ export function ProcessParsing_groupProcesses(ps) {
713
751
  */
714
752
  export function ProcessParsing_mergeIdenticalProcesses(processes) {
715
753
  const l = List_groupBy((x) => {
716
- if ((x.Name != null) && (Process_decomposeName_Z721C83C5(value_9(x.Name))[1] != null)) {
717
- return [Process_decomposeName_Z721C83C5(value_9(x.Name))[0], boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues)];
754
+ if ((x.Name != null) && (Process_decomposeName_Z721C83C5(value_10(x.Name))[1] != null)) {
755
+ return [Process_decomposeName_Z721C83C5(value_10(x.Name))[0], boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues), map(boxHashSeq, x.Comments)];
718
756
  }
719
- else if ((x.ExecutesProtocol != null) && (value_9(x.ExecutesProtocol).Name != null)) {
720
- return [value_9(value_9(x.ExecutesProtocol).Name), boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues)];
757
+ else if ((x.ExecutesProtocol != null) && (value_10(x.ExecutesProtocol).Name != null)) {
758
+ return [value_10(value_10(x.ExecutesProtocol).Name), boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues), map(boxHashSeq, x.Comments)];
721
759
  }
722
760
  else {
723
- return [createMissingIdentifier(), boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues)];
761
+ return [createMissingIdentifier(), boxHashOption(x.ExecutesProtocol), map(boxHashSeq, x.ParameterValues), map(boxHashSeq, x.Comments)];
724
762
  }
725
763
  }, processes, {
726
764
  Equals: equalArrays,
@@ -732,12 +770,12 @@ export function ProcessParsing_mergeIdenticalProcesses(processes) {
732
770
  const pVs = item(0, processes_1).ParameterValues;
733
771
  const inputs = Option_fromValueWithDefault(empty(), collect((p) => defaultArg(p.Inputs, empty()), processes_1));
734
772
  const outputs = Option_fromValueWithDefault(empty(), collect((p_1) => defaultArg(p_1.Outputs, empty()), processes_1));
735
- return Process_create_Z7C1F7FA9(void 0, (length(l) > 1) ? Process_composeName(n, i) : n, item(0, processes_1).ExecutesProtocol, pVs, void 0, void 0, void 0, void 0, inputs, outputs);
773
+ return Process_create_Z7C1F7FA9(void 0, (length(l) > 1) ? Process_composeName(n, i) : n, unwrap(item(0, processes_1).ExecutesProtocol), unwrap(pVs), void 0, void 0, void 0, void 0, unwrap(inputs), unwrap(outputs), unwrap(item(0, processes_1).Comments));
736
774
  }, l);
737
775
  }
738
776
 
739
777
  export function ProcessParsing_processToRows(p) {
740
- let list_3;
778
+ let list_4;
741
779
  const pvs = map_2((ppv) => [JsonTypes_decomposeParameterValue(ppv), tryGetParameterColumnIndex(ppv)], defaultArg(p.ParameterValues, empty()));
742
780
  let components;
743
781
  const matchValue = p.ExecutesProtocol;
@@ -749,8 +787,9 @@ export function ProcessParsing_processToRows(p) {
749
787
  }
750
788
  else {
751
789
  const prot_1 = matchValue_1;
752
- protVals = toList(delay(() => append((prot_1.Name != null) ? singleton_1([new CompositeHeader(8, []), new CompositeCell(1, [value_9(prot_1.Name)])]) : empty_1(), delay(() => append((prot_1.ProtocolType != null) ? singleton_1([new CompositeHeader(4, []), new CompositeCell(0, [value_9(prot_1.ProtocolType)])]) : empty_1(), delay(() => append((prot_1.Description != null) ? singleton_1([new CompositeHeader(5, []), new CompositeCell(1, [value_9(prot_1.Description)])]) : empty_1(), delay(() => append((prot_1.Uri != null) ? singleton_1([new CompositeHeader(6, []), new CompositeCell(1, [value_9(prot_1.Uri)])]) : empty_1(), delay(() => ((prot_1.Version != null) ? singleton_1([new CompositeHeader(7, []), new CompositeCell(1, [value_9(prot_1.Version)])]) : empty_1())))))))))));
790
+ protVals = toList(delay(() => append((prot_1.Name != null) ? singleton_1([new CompositeHeader(8, []), new CompositeCell(1, [value_10(prot_1.Name)])]) : empty_1(), delay(() => append((prot_1.ProtocolType != null) ? singleton_1([new CompositeHeader(4, []), new CompositeCell(0, [value_10(prot_1.ProtocolType)])]) : empty_1(), delay(() => append((prot_1.Description != null) ? singleton_1([new CompositeHeader(5, []), new CompositeCell(1, [value_10(prot_1.Description)])]) : empty_1(), delay(() => append((prot_1.Uri != null) ? singleton_1([new CompositeHeader(6, []), new CompositeCell(1, [value_10(prot_1.Uri)])]) : empty_1(), delay(() => ((prot_1.Version != null) ? singleton_1([new CompositeHeader(7, []), new CompositeCell(1, [value_10(prot_1.Version)])]) : empty_1())))))))))));
753
791
  }
792
+ const comments = map_2((c) => [new CompositeHeader(14, [defaultArg(c.Name, "")]), new CompositeCell(1, [defaultArg(c.Value, "")])], defaultArg(p.Comments, empty()));
754
793
  return map_2((tupledArg_1) => {
755
794
  const ios = tupledArg_1[1];
756
795
  const inputForCharas = defaultArg(tryPick_1((tupledArg_2) => {
@@ -793,8 +832,8 @@ export function ProcessParsing_processToRows(p) {
793
832
  const vals = map_2((tuple_5) => tuple_5[0], sortBy((arg) => defaultArg(arg[1], 10000), append_1(chars, append_1(components, append_1(pvs, map_2((fv) => [JsonTypes_decomposeFactorValue(fv), tryGetFactorColumnIndex(fv)], ProcessOutput_getFactorValues_Z42C11600(outputForFactors))))), {
794
833
  Compare: comparePrimitives,
795
834
  }));
796
- return toList(delay(() => append(singleton_1(JsonTypes_decomposeProcessInput(inputForType)), delay(() => append(protVals, delay(() => append(vals, delay(() => singleton_1(JsonTypes_decomposeProcessOutput(outputForType))))))))));
797
- }, List_groupBy((tupledArg) => [ProcessInput__get_Name(tupledArg[0]), ProcessOutput__get_Name(tupledArg[1])], (list_3 = defaultArg(p.Outputs, empty()), zip(defaultArg(p.Inputs, empty()), list_3)), {
835
+ return toList(delay(() => append(singleton_1(JsonTypes_decomposeProcessInput(inputForType)), delay(() => append(protVals, delay(() => append(vals, delay(() => append(comments, delay(() => singleton_1(JsonTypes_decomposeProcessOutput(outputForType))))))))))));
836
+ }, List_groupBy((tupledArg) => [ProcessInput__get_Name(tupledArg[0]), ProcessOutput__get_Name(tupledArg[1])], (list_4 = defaultArg(p.Outputs, empty()), zip(defaultArg(p.Inputs, empty()), list_4)), {
798
837
  Equals: equalArrays,
799
838
  GetHashCode: arrayHash,
800
839
  }));
@@ -959,7 +998,7 @@ export function ARCtrl_ArcTable__ArcTable_fromProtocol_Static_3BF20962(p) {
959
998
  try {
960
999
  while (enumerator["System.Collections.IEnumerator.MoveNext"]()) {
961
1000
  const pp = enumerator["System.Collections.Generic.IEnumerator`1.get_Current"]();
962
- t.AddColumn(new CompositeHeader(3, [value_9(pp.ParameterName)]), void 0, ARCtrl_Process_ProtocolParameter__ProtocolParameter_TryGetColumnIndex(pp));
1001
+ t.AddColumn(new CompositeHeader(3, [value_10(pp.ParameterName)]), void 0, ARCtrl_Process_ProtocolParameter__ProtocolParameter_TryGetColumnIndex(pp));
963
1002
  }
964
1003
  }
965
1004
  finally {
@@ -970,7 +1009,7 @@ export function ARCtrl_ArcTable__ArcTable_fromProtocol_Static_3BF20962(p) {
970
1009
  while (enumerator_1["System.Collections.IEnumerator.MoveNext"]()) {
971
1010
  const c = enumerator_1["System.Collections.Generic.IEnumerator`1.get_Current"]();
972
1011
  const v_1 = map((arg) => singleton_2(ARCtrl_CompositeCell__CompositeCell_fromValue_Static_6B24B5AD(arg, unwrap(c.ComponentUnit))), c.ComponentValue);
973
- t.AddColumn(new CompositeHeader(3, [value_9(c.ComponentType)]), v_1, ARCtrl_Process_Component__Component_TryGetColumnIndex(c));
1012
+ t.AddColumn(new CompositeHeader(3, [value_10(c.ComponentType)]), v_1, ARCtrl_Process_Component__Component_TryGetColumnIndex(c));
974
1013
  }
975
1014
  }
976
1015
  finally {
@@ -20,6 +20,8 @@ export const Pattern_InputPattern = `Input\\s\\[(?<${"iotype"}>.+)\\]`;
20
20
 
21
21
  export const Pattern_OutputPattern = `Output\\s\\[(?<${"iotype"}>.+)\\]`;
22
22
 
23
+ export const Pattern_CommentPattern = `Comment\\s\\[(?<${"commentKey"}>.+)\\]`;
24
+
23
25
  /**
24
26
  * Matches, if the input string matches the given regex pattern.
25
27
  */
@@ -324,6 +326,17 @@ export function ActivePatterns_$007CAutoGeneratedTableName$007C_$007C(input) {
324
326
  }
325
327
  }
326
328
 
329
+ export function ActivePatterns_$007CComment$007C_$007C(input) {
330
+ const activePatternResult = ActivePatterns_$007CRegex$007C_$007C(Pattern_CommentPattern, input);
331
+ if (activePatternResult != null) {
332
+ const r = activePatternResult;
333
+ return (r.groups && r.groups.commentKey) || "";
334
+ }
335
+ else {
336
+ return void 0;
337
+ }
338
+ }
339
+
327
340
  export function tryParseReferenceColumnHeader(str) {
328
341
  const matchValue = str.trim();
329
342
  const activePatternResult = ActivePatterns_$007CReferenceColumnHeader$007C_$007C(matchValue);
@@ -4,8 +4,9 @@ import { StringBuilder__Append_Z721C83C5, StringBuilder_$ctor } from "../fable_m
4
4
  import { printf, toText, join } from "../fable_modules/fable-library-js.4.16.0/String.js";
5
5
  import { toArray, empty, singleton, append, delay, toList } from "../fable_modules/fable-library-js.4.16.0/Seq.js";
6
6
  import { toString } from "../fable_modules/fable-library-js.4.16.0/Types.js";
7
- import { hash, boxHashOption, boxHashArray } from "./Helper/HashCodes.js";
7
+ import { hash as hash_1, boxHashOption, boxHashArray } from "./Helper/HashCodes.js";
8
8
  import { ResizeArray_map } from "./Helper/Collections.js";
9
+ import { safeHash } from "../fable_modules/fable-library-js.4.16.0/Util.js";
9
10
  import { class_type } from "../fable_modules/fable-library-js.4.16.0/Reflection.js";
10
11
 
11
12
  export class OntologyAnnotation {
@@ -166,7 +167,7 @@ export class OntologyAnnotation {
166
167
  }
167
168
  Equals(obj) {
168
169
  const this$ = this;
169
- return hash(this$) === hash(obj);
170
+ return hash_1(this$) === hash_1(obj);
170
171
  }
171
172
  Copy() {
172
173
  const this$ = this;
@@ -184,6 +185,18 @@ export class OntologyAnnotation {
184
185
  const this$ = this;
185
186
  return "OA " + this$.NameText;
186
187
  }
188
+ CompareTo(obj) {
189
+ const this$ = this;
190
+ if (obj instanceof OntologyAnnotation) {
191
+ const oa = obj;
192
+ const hash = safeHash(this$) | 0;
193
+ const otherHash = safeHash(oa) | 0;
194
+ return ((hash === otherHash) ? 0 : ((hash < otherHash) ? -1 : 1)) | 0;
195
+ }
196
+ else {
197
+ return 1;
198
+ }
199
+ }
187
200
  }
188
201
 
189
202
  export function OntologyAnnotation_$reflection() {