comparison env/lib/python3.9/site-packages/cwltool/schemas/v1.1/Process.yml @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 saladVersion: v1.1
2 $base: "https://w3id.org/cwl/cwl#"
3
4 $namespaces:
5 cwl: "https://w3id.org/cwl/cwl#"
6 sld: "https://w3id.org/cwl/salad#"
7 rdfs: "http://www.w3.org/2000/01/rdf-schema#"
8
9 $graph:
10
11 - name: "Common Workflow Language, v1.1"
12 type: documentation
13 doc: {$include: concepts.md}
14
15 - $import: "salad/schema_salad/metaschema/metaschema_base.yml"
16
17 - name: BaseTypesDoc
18 type: documentation
19 doc: |
20 ## Base types
21 docChild:
22 - "#CWLType"
23 - "#Process"
24
25 - type: enum
26 name: CWLVersion
27 doc: "Version symbols for published CWL document versions."
28 symbols:
29 - cwl:draft-2
30 - cwl:draft-3.dev1
31 - cwl:draft-3.dev2
32 - cwl:draft-3.dev3
33 - cwl:draft-3.dev4
34 - cwl:draft-3.dev5
35 - cwl:draft-3
36 - cwl:draft-4.dev1
37 - cwl:draft-4.dev2
38 - cwl:draft-4.dev3
39 - cwl:v1.0.dev4
40 - cwl:v1.0
41 - cwl:v1.1.0-dev1 # a dash is required by the semver 2.0 rules
42 - cwl:v1.1
43
44 - name: CWLType
45 type: enum
46 extends: "sld:PrimitiveType"
47 symbols:
48 - cwl:File
49 - cwl:Directory
50 doc:
51 - "Extends primitive types with the concept of a file and directory as a builtin type."
52 - "File: A File object"
53 - "Directory: A Directory object"
54
55 - name: File
56 type: record
57 docParent: "#CWLType"
58 doc: |
59 Represents a file (or group of files when `secondaryFiles` is provided) that
60 will be accessible by tools using standard POSIX file system call API such as
61 open(2) and read(2).
62
63 Files are represented as objects with `class` of `File`. File objects have
64 a number of properties that provide metadata about the file.
65
66 The `location` property of a File is a URI that uniquely identifies the
67 file. Implementations must support the file:// URI scheme and may support
68 other schemes such as http://. The value of `location` may also be a
69 relative reference, in which case it must be resolved relative to the URI
70 of the document it appears in. Alternately to `location`, implementations
71 must also accept the `path` property on File, which must be a filesystem
72 path available on the same host as the CWL runner (for inputs) or the
73 runtime environment of a command line tool execution (for command line tool
74 outputs).
75
76 If no `location` or `path` is specified, a file object must specify
77 `contents` with the UTF-8 text content of the file. This is a "file
78 literal". File literals do not correspond to external resources, but are
79 created on disk with `contents` with when needed for a executing a tool.
80 Where appropriate, expressions can return file literals to define new files
81 on a runtime. The maximum size of `contents` is 64 kilobytes.
82
83 The `basename` property defines the filename on disk where the file is
84 staged. This may differ from the resource name. If not provided,
85 `basename` must be computed from the last path part of `location` and made
86 available to expressions.
87
88 The `secondaryFiles` property is a list of File or Directory objects that
89 must be staged in the same directory as the primary file. It is an error
90 for file names to be duplicated in `secondaryFiles`.
91
92 The `size` property is the size in bytes of the File. It must be computed
93 from the resource and made available to expressions. The `checksum` field
94 contains a cryptographic hash of the file content for use it verifying file
95 contents. Implementations may, at user option, enable or disable
96 computation of the `checksum` field for performance or other reasons.
97 However, the ability to compute output checksums is required to pass the
98 CWL conformance test suite.
99
100 When executing a CommandLineTool, the files and secondary files may be
101 staged to an arbitrary directory, but must use the value of `basename` for
102 the filename. The `path` property must be file path in the context of the
103 tool execution runtime (local to the compute node, or within the executing
104 container). All computed properties should be available to expressions.
105 File literals also must be staged and `path` must be set.
106
107 When collecting CommandLineTool outputs, `glob` matching returns file paths
108 (with the `path` property) and the derived properties. This can all be
109 modified by `outputEval`. Alternately, if the file `cwl.output.json` is
110 present in the output, `outputBinding` is ignored.
111
112 File objects in the output must provide either a `location` URI or a `path`
113 property in the context of the tool execution runtime (local to the compute
114 node, or within the executing container).
115
116 When evaluating an ExpressionTool, file objects must be referenced via
117 `location` (the expression tool does not have access to files on disk so
118 `path` is meaningless) or as file literals. It is legal to return a file
119 object with an existing `location` but a different `basename`. The
120 `loadContents` field of ExpressionTool inputs behaves the same as on
121 CommandLineTool inputs, however it is not meaningful on the outputs.
122
123 An ExpressionTool may forward file references from input to output by using
124 the same value for `location`.
125
126 fields:
127 - name: class
128 type:
129 type: enum
130 name: File_class
131 symbols:
132 - cwl:File
133 jsonldPredicate:
134 _id: "@type"
135 _type: "@vocab"
136 doc: Must be `File` to indicate this object describes a file.
137 - name: location
138 type: string?
139 doc: |
140 An IRI that identifies the file resource. This may be a relative
141 reference, in which case it must be resolved using the base IRI of the
142 document. The location may refer to a local or remote resource; the
143 implementation must use the IRI to retrieve file content. If an
144 implementation is unable to retrieve the file content stored at a
145 remote resource (due to unsupported protocol, access denied, or other
146 issue) it must signal an error.
147
148 If the `location` field is not provided, the `contents` field must be
149 provided. The implementation must assign a unique identifier for
150 the `location` field.
151
152 If the `path` field is provided but the `location` field is not, an
153 implementation may assign the value of the `path` field to `location`,
154 then follow the rules above.
155 jsonldPredicate:
156 _id: "@id"
157 _type: "@id"
158 - name: path
159 type: string?
160 doc: |
161 The local host path where the File is available when a CommandLineTool is
162 executed. This field must be set by the implementation. The final
163 path component must match the value of `basename`. This field
164 must not be used in any other context. The command line tool being
165 executed must be able to to access the file at `path` using the POSIX
166 `open(2)` syscall.
167
168 As a special case, if the `path` field is provided but the `location`
169 field is not, an implementation may assign the value of the `path`
170 field to `location`, and remove the `path` field.
171
172 If the `path` contains [POSIX shell metacharacters](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02)
173 (`|`,`&`, `;`, `<`, `>`, `(`,`)`, `$`,`` ` ``, `\`, `"`, `'`,
174 `<space>`, `<tab>`, and `<newline>`) or characters
175 [not allowed](http://www.iana.org/assignments/idna-tables-6.3.0/idna-tables-6.3.0.xhtml)
176 for [Internationalized Domain Names for Applications](https://tools.ietf.org/html/rfc6452)
177 then implementations may terminate the process with a
178 `permanentFailure`.
179 jsonldPredicate:
180 "_id": "cwl:path"
181 "_type": "@id"
182 - name: basename
183 type: string?
184 doc: |
185 The base name of the file, that is, the name of the file without any
186 leading directory path. The base name must not contain a slash `/`.
187
188 If not provided, the implementation must set this field based on the
189 `location` field by taking the final path component after parsing
190 `location` as an IRI. If `basename` is provided, it is not required to
191 match the value from `location`.
192
193 When this file is made available to a CommandLineTool, it must be named
194 with `basename`, i.e. the final component of the `path` field must match
195 `basename`.
196 jsonldPredicate: "cwl:basename"
197 - name: dirname
198 type: string?
199 doc: |
200 The name of the directory containing file, that is, the path leading up
201 to the final slash in the path such that `dirname + '/' + basename ==
202 path`.
203
204 The implementation must set this field based on the value of `path`
205 prior to evaluating parameter references or expressions in a
206 CommandLineTool document. This field must not be used in any other
207 context.
208 - name: nameroot
209 type: string?
210 doc: |
211 The basename root such that `nameroot + nameext == basename`, and
212 `nameext` is empty or begins with a period and contains at most one
213 period. For the purposess of path splitting leading periods on the
214 basename are ignored; a basename of `.cshrc` will have a nameroot of
215 `.cshrc`.
216
217 The implementation must set this field automatically based on the value
218 of `basename` prior to evaluating parameter references or expressions.
219 - name: nameext
220 type: string?
221 doc: |
222 The basename extension such that `nameroot + nameext == basename`, and
223 `nameext` is empty or begins with a period and contains at most one
224 period. Leading periods on the basename are ignored; a basename of
225 `.cshrc` will have an empty `nameext`.
226
227 The implementation must set this field automatically based on the value
228 of `basename` prior to evaluating parameter references or expressions.
229 - name: checksum
230 type: string?
231 doc: |
232 Optional hash code for validating file integrity. Currently must be in the form
233 "sha1$ + hexadecimal string" using the SHA-1 algorithm.
234 - name: size
235 type: long?
236 doc: Optional file size
237 - name: "secondaryFiles"
238 type:
239 - "null"
240 - type: array
241 items: [File, Directory]
242 jsonldPredicate:
243 _id: "cwl:secondaryFiles"
244 secondaryFilesDSL: true
245 doc: |
246 A list of additional files or directories that are associated with the
247 primary file and must be transferred alongside the primary file.
248 Examples include indexes of the primary file, or external references
249 which must be included when loading primary document. A file object
250 listed in `secondaryFiles` may itself include `secondaryFiles` for
251 which the same rules apply.
252 - name: format
253 type: string?
254 jsonldPredicate:
255 _id: cwl:format
256 _type: "@id"
257 identity: true
258 doc: |
259 The format of the file: this must be an IRI of a concept node that
260 represents the file format, preferrably defined within an ontology.
261 If no ontology is available, file formats may be tested by exact match.
262
263 Reasoning about format compatability must be done by checking that an
264 input file format is the same, `owl:equivalentClass` or
265 `rdfs:subClassOf` the format required by the input parameter.
266 `owl:equivalentClass` is transitive with `rdfs:subClassOf`, e.g. if
267 `<B> owl:equivalentClass <C>` and `<B> owl:subclassOf <A>` then infer
268 `<C> owl:subclassOf <A>`.
269
270 File format ontologies may be provided in the "$schema" metadata at the
271 root of the document. If no ontologies are specified in `$schema`, the
272 runtime may perform exact file format matches.
273 - name: contents
274 type: string?
275 doc: |
276 File contents literal. Maximum of 64 KiB.
277
278 If neither `location` nor `path` is provided, `contents` must be
279 non-null. The implementation must assign a unique identifier for the
280 `location` field. When the file is staged as input to CommandLineTool,
281 the value of `contents` must be written to a file.
282
283 If `loadContents` of `inputBinding` or `outputBinding` is true and
284 `location` is valid, the implementation must read up to the first 64
285 KiB of text from the file and place it in the "contents" field.
286
287
288 - name: Directory
289 type: record
290 docAfter: "#File"
291 doc: |
292 Represents a directory to present to a command line tool.
293
294 Directories are represented as objects with `class` of `Directory`. Directory objects have
295 a number of properties that provide metadata about the directory.
296
297 The `location` property of a Directory is a URI that uniquely identifies
298 the directory. Implementations must support the file:// URI scheme and may
299 support other schemes such as http://. Alternately to `location`,
300 implementations must also accept the `path` property on Directory, which
301 must be a filesystem path available on the same host as the CWL runner (for
302 inputs) or the runtime environment of a command line tool execution (for
303 command line tool outputs).
304
305 A Directory object may have a `listing` field. This is a list of File and
306 Directory objects that are contained in the Directory. For each entry in
307 `listing`, the `basename` property defines the name of the File or
308 Subdirectory when staged to disk. If `listing` is not provided, the
309 implementation must have some way of fetching the Directory listing at
310 runtime based on the `location` field.
311
312 If a Directory does not have `location`, it is a Directory literal. A
313 Directory literal must provide `listing`. Directory literals must be
314 created on disk at runtime as needed.
315
316 The resources in a Directory literal do not need to have any implied
317 relationship in their `location`. For example, a Directory listing may
318 contain two files located on different hosts. It is the responsibility of
319 the runtime to ensure that those files are staged to disk appropriately.
320 Secondary files associated with files in `listing` must also be staged to
321 the same Directory.
322
323 When executing a CommandLineTool, Directories must be recursively staged
324 first and have local values of `path` assigend.
325
326 Directory objects in CommandLineTool output must provide either a
327 `location` URI or a `path` property in the context of the tool execution
328 runtime (local to the compute node, or within the executing container).
329
330 An ExpressionTool may forward file references from input to output by using
331 the same value for `location`.
332
333 Name conflicts (the same `basename` appearing multiple times in `listing`
334 or in any entry in `secondaryFiles` in the listing) is a fatal error.
335
336 fields:
337 - name: class
338 type:
339 type: enum
340 name: Directory_class
341 symbols:
342 - cwl:Directory
343 jsonldPredicate:
344 _id: "@type"
345 _type: "@vocab"
346 doc: Must be `Directory` to indicate this object describes a Directory.
347 - name: location
348 type: string?
349 doc: |
350 An IRI that identifies the directory resource. This may be a relative
351 reference, in which case it must be resolved using the base IRI of the
352 document. The location may refer to a local or remote resource. If
353 the `listing` field is not set, the implementation must use the
354 location IRI to retrieve directory listing. If an implementation is
355 unable to retrieve the directory listing stored at a remote resource (due to
356 unsupported protocol, access denied, or other issue) it must signal an
357 error.
358
359 If the `location` field is not provided, the `listing` field must be
360 provided. The implementation must assign a unique identifier for
361 the `location` field.
362
363 If the `path` field is provided but the `location` field is not, an
364 implementation may assign the value of the `path` field to `location`,
365 then follow the rules above.
366 jsonldPredicate:
367 _id: "@id"
368 _type: "@id"
369 - name: path
370 type: string?
371 doc: |
372 The local path where the Directory is made available prior to executing a
373 CommandLineTool. This must be set by the implementation. This field
374 must not be used in any other context. The command line tool being
375 executed must be able to to access the directory at `path` using the POSIX
376 `opendir(2)` syscall.
377
378 If the `path` contains [POSIX shell metacharacters](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02)
379 (`|`,`&`, `;`, `<`, `>`, `(`,`)`, `$`,`` ` ``, `\`, `"`, `'`,
380 `<space>`, `<tab>`, and `<newline>`) or characters
381 [not allowed](http://www.iana.org/assignments/idna-tables-6.3.0/idna-tables-6.3.0.xhtml)
382 for [Internationalized Domain Names for Applications](https://tools.ietf.org/html/rfc6452)
383 then implementations may terminate the process with a
384 `permanentFailure`.
385 jsonldPredicate:
386 _id: "cwl:path"
387 _type: "@id"
388 - name: basename
389 type: string?
390 doc: |
391 The base name of the directory, that is, the name of the file without any
392 leading directory path. The base name must not contain a slash `/`.
393
394 If not provided, the implementation must set this field based on the
395 `location` field by taking the final path component after parsing
396 `location` as an IRI. If `basename` is provided, it is not required to
397 match the value from `location`.
398
399 When this file is made available to a CommandLineTool, it must be named
400 with `basename`, i.e. the final component of the `path` field must match
401 `basename`.
402 jsonldPredicate: "cwl:basename"
403 - name: listing
404 type:
405 - "null"
406 - type: array
407 items: [File, Directory]
408 doc: |
409 List of files or subdirectories contained in this directory. The name
410 of each file or subdirectory is determined by the `basename` field of
411 each `File` or `Directory` object. It is an error if a `File` shares a
412 `basename` with any other entry in `listing`. If two or more
413 `Directory` object share the same `basename`, this must be treated as
414 equivalent to a single subdirectory with the listings recursively
415 merged.
416 jsonldPredicate:
417 _id: "cwl:listing"
418
419 - name: Labeled
420 type: record
421 abstract: true
422 fields:
423 - name: label
424 type:
425 - "null"
426 - string
427 jsonldPredicate: "rdfs:label"
428 doc: "A short, human-readable label of this object."
429
430
431 - name: Identified
432 type: record
433 abstract: true
434 fields:
435 - name: id
436 type: string?
437 jsonldPredicate: "@id"
438 doc: "The unique identifier for this object."
439
440
441 - name: LoadListingEnum
442 type: enum
443 symbols: [no_listing, shallow_listing, deep_listing]
444 doc:
445 - |
446 Specify the desired behavior for loading the `listing` field of
447 a Directory object for use by expressions.
448 - "no_listing: Do not load the directory listing."
449 - "shallow_listing: Only load the top level listing, do not recurse into subdirectories."
450 - "deep_listing: Load the directory listing and recursively load all subdirectories as well."
451
452
453 - name: LoadContents
454 type: record
455 abstract: true
456 fields:
457 - name: loadContents
458 type: boolean?
459 jsonldPredicate: "cwl:loadContents"
460 doc: |
461 Only valid when `type: File` or is an array of `items: File`.
462
463 Read up to the first 64 KiB of text from the file and place it in the
464 "contents" field of the file object for use by expressions.
465 - name: loadListing
466 type: LoadListingEnum?
467 jsonldPredicate: "cwl:loadListing"
468 doc: |
469 Only valid when `type: Directory` or is an array of `items: Directory`.
470
471 Specify the desired behavior for loading the `listing` field of
472 a Directory object for use by expressions.
473
474 The order of precedence for loadListing is:
475
476 1. `loadListing` on an individual parameter
477 2. Inherited from `LoadListingRequirement`
478 3. By default: `no_listing`
479
480 - name: FieldBase
481 type: record
482 extends: Labeled
483 abstract: true
484 fields:
485 secondaryFiles:
486 type:
487 - "null"
488 - SecondaryFileSchema
489 - type: array
490 items: SecondaryFileSchema
491 jsonldPredicate:
492 _id: "cwl:secondaryFiles"
493 secondaryFilesDSL: true
494 doc: |
495 Only valid when `type: File` or is an array of `items: File`.
496
497 Provides a pattern or expression specifying files or
498 directories that should be included alongside the primary
499 file. Secondary files may be required or optional. When not
500 explicitly specified, secondary files specified for `inputs`
501 are required and `outputs` are optional. An implementation
502 must include matching Files and Directories in the
503 `secondaryFiles` property of the primary file. These Files
504 and Directories must be transferred and staged alongside the
505 primary file. An implementation may fail workflow execution
506 if a required secondary file does not exist.
507
508 If the value is an expression, the value of `self` in the expression
509 must be the primary input or output File object to which this binding
510 applies. The `basename`, `nameroot` and `nameext` fields must be
511 present in `self`. For `CommandLineTool` outputs the `path` field must
512 also be present. The expression must return a filename string relative
513 to the path to the primary File, a File or Directory object with either
514 `path` or `location` and `basename` fields set, or an array consisting
515 of strings or File or Directory objects. It is legal to reference an
516 unchanged File or Directory object taken from input as a secondaryFile.
517 The expression may return "null" in which case there is no secondaryFile
518 from that expression.
519
520 To work on non-filename-preserving storage systems, portable tool
521 descriptions should avoid constructing new values from `location`, but
522 should construct relative references using `basename` or `nameroot`
523 instead.
524
525 If a value in `secondaryFiles` is a string that is not an expression,
526 it specifies that the following pattern should be applied to the path
527 of the primary file to yield a filename relative to the primary File:
528
529 1. If string ends with `?` character, remove the last `?` and mark
530 the resulting secondary file as optional.
531 2. If string begins with one or more caret `^` characters, for each
532 caret, remove the last file extension from the path (the last
533 period `.` and all following characters). If there are no file
534 extensions, the path is unchanged.
535 3. Append the remainder of the string to the end of the file path.
536
537 streamable:
538 type: boolean?
539 doc: |
540 Only valid when `type: File` or is an array of `items: File`.
541
542 A value of `true` indicates that the file is read or written
543 sequentially without seeking. An implementation may use this flag to
544 indicate whether it is valid to stream file contents using a named
545 pipe. Default: `false`.
546
547
548 - name: InputFormat
549 type: record
550 abstract: true
551 fields:
552 format:
553 type:
554 - "null"
555 - string
556 - type: array
557 items: string
558 - Expression
559 jsonldPredicate:
560 _id: cwl:format
561 _type: "@id"
562 identity: true
563 doc: |
564 Only valid when `type: File` or is an array of `items: File`.
565
566 This must be one or more IRIs of concept nodes
567 that represents file formats which are allowed as input to this
568 parameter, preferrably defined within an ontology. If no ontology is
569 available, file formats may be tested by exact match.
570
571
572 - name: OutputFormat
573 type: record
574 abstract: true
575 fields:
576 format:
577 type:
578 - "null"
579 - string
580 - Expression
581 jsonldPredicate:
582 _id: cwl:format
583 _type: "@id"
584 identity: true
585 doc: |
586 Only valid when `type: File` or is an array of `items: File`.
587
588 This is the file format that will be assigned to the output
589 File object.
590
591
592 - name: Parameter
593 type: record
594 extends: [FieldBase, sld:Documented, Identified]
595 abstract: true
596 doc: |
597 Define an input or output parameter to a process.
598
599
600 - type: enum
601 name: Expression
602 doc: |
603 'Expression' is not a real type. It indicates that a field must allow
604 runtime parameter references. If [InlineJavascriptRequirement](#InlineJavascriptRequirement)
605 is declared and supported by the platform, the field must also allow
606 Javascript expressions.
607 symbols:
608 - cwl:ExpressionPlaceholder
609
610
611 - name: InputBinding
612 type: record
613 fields:
614 - name: loadContents
615 type:
616 - "null"
617 - boolean
618 jsonldPredicate: "cwl:loadContents"
619 doc: |
620 Use of `loadContents` in `InputBinding` is deprecated.
621 Preserved for v1.0 backwards compatability. Will be removed in
622 CWL v2.0. Use `InputParameter.loadContents` instead.
623
624 Only valid when `type: File` or is an array of `items: File`.
625
626 Read up to the first 64 KiB of text from the file and place it in the
627 "contents" field of the file object for use by expressions.
628
629
630 - name: IOSchema
631 extends: [Labeled, sld:Documented]
632 type: record
633 abstract: true
634 fields:
635 - name: name
636 type: string?
637 jsonldPredicate: "@id"
638 doc: "The identifier for this type"
639
640 - name: InputSchema
641 extends: [IOSchema]
642 type: record
643 abstract: true
644
645 - name: OutputSchema
646 extends: [IOSchema]
647 type: record
648 abstract: true
649
650
651 - name: InputRecordField
652 type: record
653 extends: [sld:RecordField, FieldBase, InputFormat, LoadContents]
654 specialize:
655 - specializeFrom: "sld:RecordSchema"
656 specializeTo: InputRecordSchema
657 - specializeFrom: "sld:EnumSchema"
658 specializeTo: InputEnumSchema
659 - specializeFrom: "sld:ArraySchema"
660 specializeTo: InputArraySchema
661 - specializeFrom: "sld:PrimitiveType"
662 specializeTo: CWLType
663
664
665 - name: InputRecordSchema
666 type: record
667 extends: ["sld:RecordSchema", InputSchema]
668 specialize:
669 - specializeFrom: "sld:RecordField"
670 specializeTo: InputRecordField
671
672
673 - name: InputEnumSchema
674 type: record
675 extends: ["sld:EnumSchema", InputSchema]
676
677
678 - name: InputArraySchema
679 type: record
680 extends: ["sld:ArraySchema", InputSchema]
681 specialize:
682 - specializeFrom: "sld:RecordSchema"
683 specializeTo: InputRecordSchema
684 - specializeFrom: "sld:EnumSchema"
685 specializeTo: InputEnumSchema
686 - specializeFrom: "sld:ArraySchema"
687 specializeTo: InputArraySchema
688 - specializeFrom: "sld:PrimitiveType"
689 specializeTo: CWLType
690
691
692 - name: OutputRecordField
693 type: record
694 extends: [sld:RecordField, FieldBase, OutputFormat]
695 specialize:
696 - specializeFrom: "sld:RecordSchema"
697 specializeTo: OutputRecordSchema
698 - specializeFrom: "sld:EnumSchema"
699 specializeTo: OutputEnumSchema
700 - specializeFrom: "sld:ArraySchema"
701 specializeTo: OutputArraySchema
702 - specializeFrom: "sld:PrimitiveType"
703 specializeTo: CWLType
704
705
706 - name: OutputRecordSchema
707 type: record
708 extends: ["sld:RecordSchema", "#OutputSchema"]
709 docParent: "#OutputParameter"
710 specialize:
711 - specializeFrom: "sld:RecordField"
712 specializeTo: OutputRecordField
713
714
715 - name: OutputEnumSchema
716 type: record
717 extends: ["sld:EnumSchema", OutputSchema]
718 docParent: "#OutputParameter"
719
720
721 - name: OutputArraySchema
722 type: record
723 extends: ["sld:ArraySchema", OutputSchema]
724 docParent: "#OutputParameter"
725 specialize:
726 - specializeFrom: "sld:RecordSchema"
727 specializeTo: OutputRecordSchema
728 - specializeFrom: "sld:EnumSchema"
729 specializeTo: OutputEnumSchema
730 - specializeFrom: "sld:ArraySchema"
731 specializeTo: OutputArraySchema
732 - specializeFrom: "sld:PrimitiveType"
733 specializeTo: CWLType
734
735
736 - name: InputParameter
737 type: record
738 abstract: true
739 extends: [Parameter, InputFormat, LoadContents]
740 fields:
741 - name: default
742 type: Any?
743 jsonldPredicate:
744 _id: sld:default
745 noLinkCheck: true
746 doc: |
747 The default value to use for this parameter if the parameter is missing
748 from the input object, or if the value of the parameter in the input
749 object is `null`. Default values are applied before evaluating expressions
750 (e.g. dependent `valueFrom` fields).
751
752
753 - name: OutputParameter
754 type: record
755 extends: [Parameter, OutputFormat]
756 abstract: true
757
758
759 - type: record
760 name: ProcessRequirement
761 abstract: true
762 doc: |
763 A process requirement declares a prerequisite that may or must be fulfilled
764 before executing a process. See [`Process.hints`](#process) and
765 [`Process.requirements`](#process).
766
767 Process requirements are the primary mechanism for specifying extensions to
768 the CWL core specification.
769
770
771 - type: record
772 name: Process
773 extends: [Identified, Labeled, sld:Documented]
774 abstract: true
775 doc: |
776
777 The base executable type in CWL is the `Process` object defined by the
778 document. Note that the `Process` object is abstract and cannot be
779 directly executed.
780
781 fields:
782 - name: inputs
783 type:
784 type: array
785 items: InputParameter
786 jsonldPredicate:
787 _id: "cwl:inputs"
788 mapSubject: id
789 mapPredicate: type
790 doc: |
791 Defines the input parameters of the process. The process is ready to
792 run when all required input parameters are associated with concrete
793 values. Input parameters include a schema for each parameter which is
794 used to validate the input object. It may also be used to build a user
795 interface for constructing the input object.
796
797 When accepting an input object, all input parameters must have a value.
798 If an input parameter is missing from the input object, it must be
799 assigned a value of `null` (or the value of `default` for that
800 parameter, if provided) for the purposes of validation and evaluation
801 of expressions.
802
803 - name: outputs
804 type:
805 type: array
806 items: OutputParameter
807 jsonldPredicate:
808 _id: "cwl:outputs"
809 mapSubject: id
810 mapPredicate: type
811 doc: |
812 Defines the parameters representing the output of the process. May be
813 used to generate and/or validate the output object.
814 - name: requirements
815 type: ProcessRequirement[]?
816 jsonldPredicate:
817 _id: "cwl:requirements"
818 mapSubject: class
819 doc: |
820 Declares requirements that apply to either the runtime environment or the
821 workflow engine that must be met in order to execute this process. If
822 an implementation cannot satisfy all requirements, or a requirement is
823 listed which is not recognized by the implementation, it is a fatal
824 error and the implementation must not attempt to run the process,
825 unless overridden at user option.
826 - name: hints
827 type: Any[]?
828 doc: |
829 Declares hints applying to either the runtime environment or the
830 workflow engine that may be helpful in executing this process. It is
831 not an error if an implementation cannot satisfy all hints, however
832 the implementation may report a warning.
833 jsonldPredicate:
834 _id: cwl:hints
835 noLinkCheck: true
836 mapSubject: class
837 - name: cwlVersion
838 type: CWLVersion?
839 doc: |
840 CWL document version. Always required at the document root. Not
841 required for a Process embedded inside another Process.
842 jsonldPredicate:
843 "_id": "cwl:cwlVersion"
844 "_type": "@vocab"
845
846 - name: InlineJavascriptRequirement
847 type: record
848 extends: ProcessRequirement
849 doc: |
850 Indicates that the workflow platform must support inline Javascript expressions.
851 If this requirement is not present, the workflow platform must not perform expression
852 interpolatation.
853 fields:
854 - name: class
855 type: string
856 doc: "Always 'InlineJavascriptRequirement'"
857 jsonldPredicate:
858 "_id": "@type"
859 "_type": "@vocab"
860 - name: expressionLib
861 type: string[]?
862 doc: |
863 Additional code fragments that will also be inserted
864 before executing the expression code. Allows for function definitions that may
865 be called from CWL expressions.
866
867
868 - name: CommandInputSchema
869 type: record
870 abstract: true
871
872 - name: SchemaDefRequirement
873 type: record
874 extends: ProcessRequirement
875 doc: |
876 This field consists of an array of type definitions which must be used when
877 interpreting the `inputs` and `outputs` fields. When a `type` field
878 contain a IRI, the implementation must check if the type is defined in
879 `schemaDefs` and use that definition. If the type is not found in
880 `schemaDefs`, it is an error. The entries in `schemaDefs` must be
881 processed in the order listed such that later schema definitions may refer
882 to earlier schema definitions.
883 fields:
884 - name: class
885 type: string
886 doc: "Always 'SchemaDefRequirement'"
887 jsonldPredicate:
888 "_id": "@type"
889 "_type": "@vocab"
890 - name: types
891 type:
892 type: array
893 items: CommandInputSchema
894 doc: The list of type definitions.
895
896 - name: SecondaryFileSchema
897 type: record
898 fields:
899 - name: pattern
900 type:
901 - string
902 - Expression
903 doc: |
904 Provides a pattern or expression specifying files or directories that
905 should be included alongside the primary file.
906
907 If the value is an expression, the value of `self` in the expression
908 must be the primary input or output File object to which this binding
909 applies. The `basename`, `nameroot` and `nameext` fields must be
910 present in `self`. For `CommandLineTool` outputs the `path` field must
911 also be present. The expression must return a filename string relative
912 to the path to the primary File, a File or Directory object with either
913 `path` or `location` and `basename` fields set, or an array consisting
914 of strings or File or Directory objects. It is legal to reference an
915 unchanged File or Directory object taken from input as a secondaryFile.
916 The expression may return "null" in which case there is no secondaryFile
917 from that expression.
918
919 To work on non-filename-preserving storage systems, portable tool
920 descriptions should avoid constructing new values from `location`, but
921 should construct relative references using `basename` or `nameroot`
922 instead.
923
924 If a value in `secondaryFiles` is a string that is not an expression,
925 it specifies that the following pattern should be applied to the path
926 of the primary file to yield a filename relative to the primary File:
927
928 1. If string ends with `?` character, remove the last `?` and mark
929 the resulting secondary file as optional.
930 2. If string begins with one or more caret `^` characters, for each
931 caret, remove the last file extension from the path (the last
932 period `.` and all following characters). If there are no file
933 extensions, the path is unchanged.
934 3. Append the remainder of the string to the end of the file path.
935 - name: required
936 type: ["null", boolean, Expression]
937 doc: |
938 An implementation must not fail workflow execution if `required` is
939 set to `false` and the expected secondary file does not exist.
940 Default value for `required` field is `true` for secondary files on
941 input and `false` for secondary files on output.
942
943 - name: LoadListingRequirement
944 type: record
945 extends: ProcessRequirement
946 doc: |
947 Specify the desired behavior for loading the `listing` field of
948 a Directory object for use by expressions.
949 fields:
950 class:
951 type: string
952 doc: "Always 'LoadListingRequirement'"
953 jsonldPredicate:
954 "_id": "@type"
955 "_type": "@vocab"
956 loadListing:
957 type: LoadListingEnum?
958 jsonldPredicate: "cwl:loadListing"