pysodafair 0.1.66__py3-none-any.whl → 0.1.68__py3-none-any.whl
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.
- pysoda/core/dataset_generation/upload.py +12 -7
- pysoda/core/metadata/code_description.py +37 -1
- pysoda/core/metadata/dataset_description.py +3 -1
- pysoda/core/metadata/performances.py +14 -1
- pysoda/core/metadata/resources.py +16 -1
- pysoda/core/metadata/samples.py +25 -74
- pysoda/core/metadata/sites.py +14 -1
- pysoda/core/metadata/subjects.py +51 -22
- pysoda/core/metadata_templates/.dss +1 -0
- pysoda/core/metadata_templates/dataset_description.xlsx +0 -0
- pysoda/core/metadata_templates/samples.xlsx +0 -0
- pysoda/core/metadata_templates/subjects.xlsx +0 -0
- pysoda/core/metadata_templates/submission.xlsx +0 -0
- pysoda/schema/code_description.json +121 -51
- pysoda/schema/dataset_description.json +35 -31
- pysoda/schema/manifest.json +1 -1
- pysoda/schema/performances.json +16 -6
- pysoda/schema/resources.json +2 -1
- pysoda/schema/samples.json +31 -5
- pysoda/schema/sites.json +4 -2
- pysoda/schema/subjects.json +41 -10
- pysoda/schema/submission_schema.json +7 -4
- pysoda/utils/exceptions.py +10 -2
- pysoda/utils/pennsieveAgentUtils.py +11 -2
- {pysodafair-0.1.66.dist-info → pysodafair-0.1.68.dist-info}/METADATA +2 -5
- {pysodafair-0.1.66.dist-info → pysodafair-0.1.68.dist-info}/RECORD +28 -27
- {pysodafair-0.1.66.dist-info → pysodafair-0.1.68.dist-info}/WHEEL +0 -0
- {pysodafair-0.1.66.dist-info → pysodafair-0.1.68.dist-info}/licenses/LICENSE +0 -0
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"type": "array",
|
|
14
14
|
"items": {
|
|
15
15
|
"type": "string",
|
|
16
|
-
"description": "The identifier used to identify the resource in the RRID database."
|
|
16
|
+
"description": "The identifier used to identify the resource in the RRID database.",
|
|
17
|
+
"pattern": "^$|^RRID:"
|
|
17
18
|
}
|
|
18
19
|
},
|
|
19
20
|
"ontology_term": {
|
|
@@ -40,8 +41,13 @@
|
|
|
40
41
|
"properties": {
|
|
41
42
|
"Link": {
|
|
42
43
|
"type": "string",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
44
|
+
"description": "The URL or DOI of the publication that describes the tool or method.",
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
48
|
+
},
|
|
49
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
50
|
+
]
|
|
45
51
|
},
|
|
46
52
|
"Rating": {
|
|
47
53
|
"type": "string",
|
|
@@ -73,7 +79,12 @@
|
|
|
73
79
|
"properties": {
|
|
74
80
|
"Link": {
|
|
75
81
|
"type": "string",
|
|
76
|
-
"
|
|
82
|
+
"anyOf": [
|
|
83
|
+
{
|
|
84
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
85
|
+
},
|
|
86
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
87
|
+
],
|
|
77
88
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
78
89
|
},
|
|
79
90
|
"Rating": {
|
|
@@ -106,7 +117,12 @@
|
|
|
106
117
|
"properties": {
|
|
107
118
|
"Link": {
|
|
108
119
|
"type": "string",
|
|
109
|
-
"
|
|
120
|
+
"anyOf": [
|
|
121
|
+
{
|
|
122
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
123
|
+
},
|
|
124
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
125
|
+
],
|
|
110
126
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
111
127
|
},
|
|
112
128
|
"Rating": {
|
|
@@ -139,33 +155,44 @@
|
|
|
139
155
|
"properties": {
|
|
140
156
|
"Link": {
|
|
141
157
|
"type": "string",
|
|
142
|
-
"
|
|
158
|
+
"anyOf": [
|
|
159
|
+
{
|
|
160
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
161
|
+
},
|
|
162
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
163
|
+
],
|
|
143
164
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
144
165
|
}
|
|
145
166
|
},
|
|
146
|
-
"required": [
|
|
147
|
-
"Link"
|
|
148
|
-
]
|
|
167
|
+
"required": ["Link"]
|
|
149
168
|
},
|
|
150
169
|
"TSR3c": {
|
|
151
170
|
"type": "object",
|
|
152
171
|
"properties": {
|
|
153
172
|
"Link": {
|
|
154
173
|
"type": "string",
|
|
155
|
-
"
|
|
174
|
+
"anyOf": [
|
|
175
|
+
{
|
|
176
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
177
|
+
},
|
|
178
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
179
|
+
],
|
|
156
180
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
157
181
|
}
|
|
158
182
|
},
|
|
159
|
-
"required": [
|
|
160
|
-
"Link"
|
|
161
|
-
]
|
|
183
|
+
"required": ["Link"]
|
|
162
184
|
},
|
|
163
185
|
"TSR4": {
|
|
164
186
|
"type": "object",
|
|
165
187
|
"properties": {
|
|
166
188
|
"Link": {
|
|
167
189
|
"type": "string",
|
|
168
|
-
"
|
|
190
|
+
"anyOf": [
|
|
191
|
+
{
|
|
192
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
193
|
+
},
|
|
194
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
195
|
+
],
|
|
169
196
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
170
197
|
},
|
|
171
198
|
"Rating": {
|
|
@@ -198,7 +225,12 @@
|
|
|
198
225
|
"properties": {
|
|
199
226
|
"Link": {
|
|
200
227
|
"type": "string",
|
|
201
|
-
"
|
|
228
|
+
"anyOf": [
|
|
229
|
+
{
|
|
230
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
231
|
+
},
|
|
232
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
233
|
+
],
|
|
202
234
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
203
235
|
},
|
|
204
236
|
"Rating": {
|
|
@@ -231,7 +263,12 @@
|
|
|
231
263
|
"properties": {
|
|
232
264
|
"Link": {
|
|
233
265
|
"type": "string",
|
|
234
|
-
"
|
|
266
|
+
"anyOf": [
|
|
267
|
+
{
|
|
268
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
269
|
+
},
|
|
270
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
271
|
+
],
|
|
235
272
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
236
273
|
},
|
|
237
274
|
"Rating": {
|
|
@@ -264,7 +301,12 @@
|
|
|
264
301
|
"properties": {
|
|
265
302
|
"Link": {
|
|
266
303
|
"type": "string",
|
|
267
|
-
"
|
|
304
|
+
"anyOf": [
|
|
305
|
+
{
|
|
306
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
307
|
+
},
|
|
308
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
309
|
+
],
|
|
268
310
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
269
311
|
},
|
|
270
312
|
"Rating": {
|
|
@@ -297,59 +339,76 @@
|
|
|
297
339
|
"properties": {
|
|
298
340
|
"Link": {
|
|
299
341
|
"type": "string",
|
|
300
|
-
"
|
|
342
|
+
"anyOf": [
|
|
343
|
+
{
|
|
344
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
345
|
+
},
|
|
346
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
347
|
+
],
|
|
301
348
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
302
349
|
}
|
|
303
350
|
},
|
|
304
|
-
"required": [
|
|
305
|
-
"Link"
|
|
306
|
-
]
|
|
351
|
+
"required": ["Link"]
|
|
307
352
|
},
|
|
308
353
|
"TSR7c": {
|
|
309
354
|
"type": "object",
|
|
310
355
|
"properties": {
|
|
311
356
|
"Link": {
|
|
312
357
|
"type": "string",
|
|
313
|
-
"
|
|
358
|
+
"anyOf": [
|
|
359
|
+
{
|
|
360
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
361
|
+
},
|
|
362
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
363
|
+
],
|
|
314
364
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
315
365
|
}
|
|
316
366
|
},
|
|
317
|
-
"required": [
|
|
318
|
-
"Link"
|
|
319
|
-
]
|
|
367
|
+
"required": ["Link"]
|
|
320
368
|
},
|
|
321
369
|
"TSR7d": {
|
|
322
370
|
"type": "object",
|
|
323
371
|
"properties": {
|
|
324
372
|
"Link": {
|
|
325
373
|
"type": "string",
|
|
326
|
-
"
|
|
374
|
+
"anyOf": [
|
|
375
|
+
{
|
|
376
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
377
|
+
},
|
|
378
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
379
|
+
],
|
|
327
380
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
328
381
|
}
|
|
329
382
|
},
|
|
330
|
-
"required": [
|
|
331
|
-
"Link"
|
|
332
|
-
]
|
|
383
|
+
"required": ["Link"]
|
|
333
384
|
},
|
|
334
385
|
"TSR7e": {
|
|
335
386
|
"type": "object",
|
|
336
387
|
"properties": {
|
|
337
388
|
"Link": {
|
|
338
389
|
"type": "string",
|
|
339
|
-
"
|
|
390
|
+
"anyOf": [
|
|
391
|
+
{
|
|
392
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
393
|
+
},
|
|
394
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
395
|
+
],
|
|
340
396
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
341
397
|
}
|
|
342
398
|
},
|
|
343
|
-
"required": [
|
|
344
|
-
"Link"
|
|
345
|
-
]
|
|
399
|
+
"required": ["Link"]
|
|
346
400
|
},
|
|
347
401
|
"TSR8a": {
|
|
348
402
|
"type": "object",
|
|
349
403
|
"properties": {
|
|
350
404
|
"Link": {
|
|
351
405
|
"type": "string",
|
|
352
|
-
"
|
|
406
|
+
"anyOf": [
|
|
407
|
+
{
|
|
408
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
409
|
+
},
|
|
410
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
411
|
+
],
|
|
353
412
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
354
413
|
},
|
|
355
414
|
"Rating": {
|
|
@@ -382,20 +441,28 @@
|
|
|
382
441
|
"properties": {
|
|
383
442
|
"Link": {
|
|
384
443
|
"type": "string",
|
|
385
|
-
"
|
|
444
|
+
"anyOf": [
|
|
445
|
+
{
|
|
446
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
447
|
+
},
|
|
448
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
449
|
+
],
|
|
386
450
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
387
451
|
}
|
|
388
452
|
},
|
|
389
|
-
"required": [
|
|
390
|
-
"Link"
|
|
391
|
-
]
|
|
453
|
+
"required": ["Link"]
|
|
392
454
|
},
|
|
393
455
|
"TSR9": {
|
|
394
456
|
"type": "object",
|
|
395
457
|
"properties": {
|
|
396
458
|
"Link": {
|
|
397
459
|
"type": "string",
|
|
398
|
-
"
|
|
460
|
+
"anyOf": [
|
|
461
|
+
{
|
|
462
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
463
|
+
},
|
|
464
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
465
|
+
],
|
|
399
466
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
400
467
|
},
|
|
401
468
|
"Rating": {
|
|
@@ -428,7 +495,12 @@
|
|
|
428
495
|
"properties": {
|
|
429
496
|
"Link": {
|
|
430
497
|
"type": "string",
|
|
431
|
-
"
|
|
498
|
+
"anyOf": [
|
|
499
|
+
{
|
|
500
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
501
|
+
},
|
|
502
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
503
|
+
],
|
|
432
504
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
433
505
|
},
|
|
434
506
|
"Rating": {
|
|
@@ -461,13 +533,16 @@
|
|
|
461
533
|
"properties": {
|
|
462
534
|
"Link": {
|
|
463
535
|
"type": "string",
|
|
464
|
-
"
|
|
536
|
+
"anyOf": [
|
|
537
|
+
{
|
|
538
|
+
"pattern": "^https://doi.org/10\\.[0-9]{4,9}[-._;()/:a-zA-Z0-9]+$"
|
|
539
|
+
},
|
|
540
|
+
{ "pattern": "^https://[wd-._~:/?#[]@!$&'()*+,;=%]+$" }
|
|
541
|
+
],
|
|
465
542
|
"description": "The URL or DOI of the publication that describes the tool or method."
|
|
466
543
|
}
|
|
467
544
|
},
|
|
468
|
-
"required": [
|
|
469
|
-
"Link"
|
|
470
|
-
]
|
|
545
|
+
"required": ["Link"]
|
|
471
546
|
}
|
|
472
547
|
},
|
|
473
548
|
"required": [
|
|
@@ -609,12 +684,7 @@
|
|
|
609
684
|
}
|
|
610
685
|
}
|
|
611
686
|
},
|
|
612
|
-
"required": [
|
|
613
|
-
"number_of_inputs",
|
|
614
|
-
"inputs",
|
|
615
|
-
"number_of_outputs",
|
|
616
|
-
"outputs"
|
|
617
|
-
]
|
|
687
|
+
"required": ["number_of_inputs", "inputs", "number_of_outputs", "outputs"]
|
|
618
688
|
}
|
|
619
689
|
},
|
|
620
690
|
"required": [
|
|
@@ -626,4 +696,4 @@
|
|
|
626
696
|
"ontology_term",
|
|
627
697
|
"ontology_identifier"
|
|
628
698
|
]
|
|
629
|
-
}
|
|
699
|
+
}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
"properties": {
|
|
5
5
|
"metadata_version": {
|
|
6
6
|
"type": "string",
|
|
7
|
-
"description": "The version of the metadata schema used."
|
|
7
|
+
"description": "The version of the metadata schema used.",
|
|
8
|
+
"enum": ["3.0.0", "3.0.1", "3.0.2"]
|
|
8
9
|
},
|
|
9
10
|
"type": {
|
|
10
11
|
"type": "string",
|
|
@@ -148,36 +149,39 @@
|
|
|
148
149
|
"pattern": "^(([Vv]an|[Vv]an [Dd]e[rn]?|[Vv]an [Tt]|[Vv]ander|[Vv]on|[Vv]on [Dd]e[rn]?|[Zz]u|[Zz]ur|[Vv]om|[Dd]e|[Dd]es|[Dd]u|[Dd]e [Ll]a|[Dd]e [Ll]es|[Dd]e [Ll]os|[Ll]e|[Ll]a|[Ll]es|[Dd]el|[Dd]e [Ll]os|[Dd]e [Ll]a|[Dd]e [Ll]as|[Dd]a|[Dd]o|[Dd]i|[Dd]ell[ao]|[Dd]ell[ei]|[Dd]ai|[Dd]al|[Dd]alle|[Oo]'|[Mm]c|[Mm]ac|[Aa]l|[Ee]l|[Aa]bd [Aa]l|[Aa]bu|[Ii]bn|[Ff]itz|[Aa]p|[Bb]en|[Bb]ar|[Bb]at) )?[^, ]+, [^,]+$",
|
|
149
150
|
"description": "The name of the contributor. The format should be 'Last Name, First Name'. Supports international family name prefixes (van, von, de, del, etc.)."
|
|
150
151
|
},
|
|
151
|
-
"
|
|
152
|
-
"type": "
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
152
|
+
"contributor_roles": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"items": {
|
|
155
|
+
"type": "string",
|
|
156
|
+
"enum": [
|
|
157
|
+
"CorrespondingAuthor",
|
|
158
|
+
"ContactPerson",
|
|
159
|
+
"Creator",
|
|
160
|
+
"DataCollector",
|
|
161
|
+
"DataCurator",
|
|
162
|
+
"DataManager",
|
|
163
|
+
"Distributor",
|
|
164
|
+
"Editor",
|
|
165
|
+
"HostingInstitution",
|
|
166
|
+
"PrincipalInvestigator",
|
|
167
|
+
"CoInvestigator",
|
|
168
|
+
"Producer",
|
|
169
|
+
"ProjectLeader",
|
|
170
|
+
"ProjectManager",
|
|
171
|
+
"ProjectMember",
|
|
172
|
+
"RegistrationAgency",
|
|
173
|
+
"RegistrationAuthority",
|
|
174
|
+
"RelatedPerson",
|
|
175
|
+
"Researcher",
|
|
176
|
+
"ResearchGroup",
|
|
177
|
+
"RightsHolder",
|
|
178
|
+
"Sponsor",
|
|
179
|
+
"Supervisor",
|
|
180
|
+
"WorkPackageLeader",
|
|
181
|
+
"Other"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"description": "The roles of the contributor in the project. There must be at least one PrincipalInvestigator. The Creator role requires an additional role to accompany it."
|
|
181
185
|
}
|
|
182
186
|
}
|
|
183
187
|
}
|
pysoda/schema/manifest.json
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"timestamp": {
|
|
13
13
|
"type": "string",
|
|
14
14
|
"description": "Timestamp of when the data was created or last modified. This should be in ISO 8601 format. Per the SDS guidelines, commas are to be used for separating fractional seconds. Empty string for when it does not apply.",
|
|
15
|
-
"pattern": "^([0-9]{4}-[
|
|
15
|
+
"pattern": "^([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9]([.,][0-9]{1,9})?)?(Z|[+-]([01][0-9]|2[0-3]):[0-5][0-9]))?$"
|
|
16
16
|
},
|
|
17
17
|
"description": {
|
|
18
18
|
"type": "string",
|
pysoda/schema/performances.json
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"type": "array",
|
|
4
4
|
"items": {
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
7
7
|
"performance_id": {
|
|
8
8
|
"type": "string",
|
|
9
|
-
"description": "Unique identifier for the performance"
|
|
9
|
+
"description": "Unique identifier for the performance",
|
|
10
|
+
"pattern": "^(pop-)?perf-[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"
|
|
10
11
|
},
|
|
11
12
|
"protocol_url_or_doi": {
|
|
12
13
|
"type": "string",
|
|
13
|
-
"description": "URL or DOI of the protocol
|
|
14
|
-
"
|
|
14
|
+
"description": "URL or DOI of the protocol used for the subject.",
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{ "pattern": "^$" },
|
|
17
|
+
{ "pattern": "^https://[A-Za-z0-9.-]+[A-Za-z0-9](:[0-9]+)?(/.*)?$" },
|
|
18
|
+
{ "pattern": "^10\\.\\d{4,9}/[-._;()/:A-Za-z0-9]+$" },
|
|
19
|
+
{
|
|
20
|
+
"pattern": "^https://doi\\.org/10\\.\\d{4,9}/[-._;()/:A-Za-z0-9]+$"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
15
23
|
},
|
|
16
24
|
"date": {
|
|
17
25
|
"type": "string",
|
|
@@ -21,12 +29,14 @@
|
|
|
21
29
|
"start_datetime": {
|
|
22
30
|
"type": "string",
|
|
23
31
|
"format": "date-time",
|
|
24
|
-
"description": "Start date and time of the performance in ISO 8601 format"
|
|
32
|
+
"description": "Start date and time of the performance in ISO 8601 format",
|
|
33
|
+
"pattern": "^([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9]([.,][0-9]{1,9})?)?(Z|[+-]([01][0-9]|2[0-3]):[0-5][0-9]))?$"
|
|
25
34
|
},
|
|
26
35
|
"end_datetime": {
|
|
27
36
|
"type": "string",
|
|
28
37
|
"format": "date-time",
|
|
29
|
-
"description": "End date and time of the performance in ISO 8601 format"
|
|
38
|
+
"description": "End date and time of the performance in ISO 8601 format",
|
|
39
|
+
"pattern": "^([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9]([.,][0-9]{1,9})?)?(Z|[+-]([01][0-9]|2[0-3]):[0-5][0-9]))?$"
|
|
30
40
|
},
|
|
31
41
|
"participants": {
|
|
32
42
|
"type": "array",
|
pysoda/schema/resources.json
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
"properties": {
|
|
7
7
|
"rrid": {
|
|
8
8
|
"type": "string",
|
|
9
|
-
"
|
|
9
|
+
"pattern": "^$|^RRID:",
|
|
10
|
+
"description": "Research Resource Identifier (RRID) for the resource. Accepts RRID:SCR_003070 or RRID:SCR:003070 formats. Also captures legacy format."
|
|
10
11
|
},
|
|
11
12
|
"type": {
|
|
12
13
|
"type": "string",
|
pysoda/schema/samples.json
CHANGED
|
@@ -8,11 +8,13 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"sample_id": {
|
|
10
10
|
"type": "string",
|
|
11
|
-
"description": "Unique identifier for the sample within the dataset."
|
|
11
|
+
"description": "Unique identifier for the sample within the dataset.",
|
|
12
|
+
"pattern": "^(pop-)?sam-[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"
|
|
12
13
|
},
|
|
13
14
|
"subject_id": {
|
|
14
15
|
"type": "string",
|
|
15
|
-
"description": "Unique identifier for the subject from which the sample was derived."
|
|
16
|
+
"description": "Unique identifier for the subject from which the sample was derived.",
|
|
17
|
+
"pattern": "^(pop-)?sub-[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"
|
|
16
18
|
},
|
|
17
19
|
"was_derived_from": {
|
|
18
20
|
"type": "string",
|
|
@@ -31,8 +33,18 @@
|
|
|
31
33
|
"description": "Type of sample (e.g., blood, tissue, etc.)."
|
|
32
34
|
},
|
|
33
35
|
"sample_anatomical_location": {
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
+
"description": "Anatomical location of the sample. Can be a single string or an array of strings.",
|
|
37
|
+
"oneOf": [
|
|
38
|
+
{
|
|
39
|
+
"type": "string"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
36
48
|
},
|
|
37
49
|
"also_in_dataset": {
|
|
38
50
|
"type": "string",
|
|
@@ -84,7 +96,21 @@
|
|
|
84
96
|
},
|
|
85
97
|
"protocol_url_or_doi": {
|
|
86
98
|
"type": "string",
|
|
87
|
-
"description": "URL or DOI of the protocol used
|
|
99
|
+
"description": "URL or DOI of the protocol used for the subject.",
|
|
100
|
+
"anyOf": [
|
|
101
|
+
{ "pattern": "^$" },
|
|
102
|
+
{
|
|
103
|
+
"pattern": "^https://[A-Za-z0-9.-]+[A-Za-z0-9](:[0-9]+)?(/.*)?$"
|
|
104
|
+
},
|
|
105
|
+
{ "pattern": "^10\\.\\d{4,9}/[-._;()/:A-Za-z0-9]+$" },
|
|
106
|
+
{
|
|
107
|
+
"pattern": "^https://doi\\.org/10\\.\\d{4,9}/[-._;()/:A-Za-z0-9]+$"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"number_of_directly_derived_samples": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"description": "Number of samples directly derived from this sample."
|
|
88
114
|
}
|
|
89
115
|
},
|
|
90
116
|
"required": ["sample_id", "subject_id"],
|
pysoda/schema/sites.json
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
"properties": {
|
|
7
7
|
"site_id": {
|
|
8
8
|
"type": "string",
|
|
9
|
-
"description": "Unique identifier for the site"
|
|
9
|
+
"description": "Unique identifier for the site",
|
|
10
|
+
"pattern": "^(pop-)?site-[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"
|
|
10
11
|
},
|
|
11
12
|
"specimen_id": {
|
|
12
13
|
"type": "string",
|
|
13
|
-
"description": "Unique identifier for the specimen associated with the site"
|
|
14
|
+
"description": "Unique identifier for the specimen associated with the site",
|
|
15
|
+
"pattern": "^(pop-)?(sub|sam)-[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$"
|
|
14
16
|
},
|
|
15
17
|
"site_type": {
|
|
16
18
|
"type": "string",
|