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