-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathEGA.DAC.json
216 lines (209 loc) · 9.82 KB
/
EGA.DAC.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
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "https://raw.githubusercontent.com/EbiEga/ega-metadata-schema/main/schemas/EGA.DAC.json",
"type": "object",
"title": "EGA DAC metadata schema",
"meta:version": "0.0.0",
"$async": true,
"description": "Metadata schema used by the European Genome-phenome Archive (EGA) to validate its Data Access Committee (DAC) metadata object. This object is intended to contain metadata about the body of one or more named individuals or legal entities who are data controllers. In other words, responsible for data release to external requestors based on consent and/or National Research Ethics terms. A DAC is typically formed, but not necessarily, from the same organization that collected the samples and generated any associated files/analyses. Further details can be found in the EGA-metadata-schema GitHub repository (https://github.com/EbiEga/ega-metadata-schema/tree/main/schemas) and EGA-archive website (https://ega-archive.org/submission/data_access_committee)",
"required": ["objectId", "dacContacts"],
"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: an DAC (by using EGADACIdPattern)",
"allOf": [
{
"title": "Inherited objectCoreId object",
"$ref": "./EGA.common-definitions.json#/$defs/objectCoreId"
},
{
"title": "Check that DAC EGA ID (EGAC) is correct",
"properties": {
"egaAccession": {
"$ref": "./EGA.common-definitions.json#/$defs/EGADACIdPattern"
}
}
}
]
},
"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 DAC",
"description": "Short free-form text that can be used to call out DAC records in searches or displays.",
"minLength": 1,
"examples": [ "EBI Consortium Data Access Committee" ]
},
"objectDescription": {
"type": "string",
"title": "Description of the DAC",
"description": "An in-depth description of the DAC, including its overall purpose or nature of studies it governs.",
"minLength": 1,
"examples": [ "EBI DAC governing data from projects related to human microbiome with data provenance..." ]
},
"dacContacts": {
"type": "object",
"title": "DAC contacts' details",
"description": "Object containing the main contact's and optional additional contact's details.",
"additionalProperties": false,
"required": ["mainContact"],
"properties": {
"mainContact": {
"title": "Main contact of the DAC",
"description": "The main contact of that DAC whose contact details will be used first to reach the DAC.",
"$ref": "./EGA.common-definitions.json#/$defs/contactDetails"
},
"additionalContacts": {
"type": "array",
"title": "Additional DAC contacts' details",
"description": "An array compromising additional contact details to use when in need to reach the DAC yet the main contact is unresponsive or does not exist.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"$ref": "./EGA.common-definitions.json#/$defs/contactDetails"
}
}
}
},
"dacRelationships": {
"type": "array",
"title": "DAC 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 DAC) 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 DAC",
"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 DAC.",
"anyOf": [
{
"title": "Allowed relationships of type referencedBy (main ones)",
"allOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rTypeReferencedBy"
},
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rTargetPolicy"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rSourceSubmission"
}
]
}
]
},
{
"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/rTypeMemberOf"
}
]
},
{
"anyOf": [
{
"$ref": "./EGA.common-definitions.json#/$defs/rSourceDAC"
},
{
"$ref": "./EGA.common-definitions.json#/$defs/rTargetDAC"
}
]
}
]
},
{
"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/rTypeFamilyRelationshipWith"
},
{
"$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"
}
]
}
]
}
]
}
]
},
"contains": {
"title": "Constraint to have at least one 'submission' relationship",
"$ref": "./EGA.common-definitions.json#/$defs/rConstraintOneSourcedSubmission"
}
},
"dacAttributes": {
"type": "array",
"title": "DAC custom attributes",
"description": "Custom attributes of a DAC: reusable attributes to encode tag-value pairs (e.g. Tag being 'Targeted loci' and its Value '5:63256183-63258334') with optional units (e.g. 'base pairs'). Its properties are inherited from the common-definitions.json schema.",
"minItems": 1,
"additionalProperties": false,
"uniqueItems": true,
"items": {
"$ref": "./EGA.common-definitions.json#/$defs/customAttribute"
}
}
}
}