Skip to content

Commit bafeddb

Browse files
clevinsonclaude
andauthored
feat: batch P0 schema changes for form alignment (#12)
- Move public_comments from Project to Experiment (#3) - Rename alkalinity_perturbation_description to mcdr_forcing_description (#72) - Add tracer_form_custom field with conditional rule on TracerDetails (#9) - Enable multivalued on experiment_type for multi-select (#21) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a8eda3c commit bafeddb

6 files changed

Lines changed: 190 additions & 59 deletions

File tree

project/jsonschema/oae_data_protocol.schema.json

Lines changed: 113 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2513,9 +2513,12 @@
25132513
"type": "array"
25142514
},
25152515
"experiment_type": {
2516-
"$ref": "#/$defs/ExperimentType",
25172516
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
2518-
"title": "mCDR Experiment Type"
2517+
"items": {
2518+
"$ref": "#/$defs/ExperimentType"
2519+
},
2520+
"title": "mCDR Experiment Type",
2521+
"type": "array"
25192522
},
25202523
"name": {
25212524
"description": "Optional common name for experiment.",
@@ -2527,6 +2530,11 @@
25272530
"title": "Project ID",
25282531
"type": "string"
25292532
},
2533+
"public_comments": {
2534+
"description": "If possible, please provide public comments concatenated into a single pdf",
2535+
"title": "Public Comments",
2536+
"type": "string"
2537+
},
25302538
"spatial_coverage": {
25312539
"$ref": "#/$defs/SpatialCoverage",
25322540
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -3040,9 +3048,12 @@
30403048
"type": "array"
30413049
},
30423050
"experiment_type": {
3043-
"$ref": "#/$defs/ExperimentType",
30443051
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
3045-
"title": "mCDR Experiment Type"
3052+
"items": {
3053+
"$ref": "#/$defs/ExperimentType"
3054+
},
3055+
"title": "mCDR Experiment Type",
3056+
"type": "array"
30463057
},
30473058
"meteorological_and_tidal_data": {
30483059
"description": "Include links to relevant open datasets if referenced in the experiment but not provided in the submission.",
@@ -3076,6 +3087,11 @@
30763087
"title": "Project ID",
30773088
"type": "string"
30783089
},
3090+
"public_comments": {
3091+
"description": "If possible, please provide public comments concatenated into a single pdf",
3092+
"title": "Public Comments",
3093+
"type": "string"
3094+
},
30793095
"spatial_coverage": {
30803096
"$ref": "#/$defs/SpatialCoverage",
30813097
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -3261,9 +3277,12 @@
32613277
"type": "array"
32623278
},
32633279
"experiment_type": {
3264-
"$ref": "#/$defs/ExperimentType",
32653280
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
3266-
"title": "mCDR Experiment Type"
3281+
"items": {
3282+
"$ref": "#/$defs/ExperimentType"
3283+
},
3284+
"title": "mCDR Experiment Type",
3285+
"type": "array"
32673286
},
32683287
"meteorological_and_tidal_data": {
32693288
"description": "Include links to relevant open datasets if referenced in the experiment but not provided in the submission.",
@@ -3297,6 +3316,11 @@
32973316
"title": "Project ID",
32983317
"type": "string"
32993318
},
3319+
"public_comments": {
3320+
"description": "If possible, please provide public comments concatenated into a single pdf",
3321+
"title": "Public Comments",
3322+
"type": "string"
3323+
},
33003324
"spatial_coverage": {
33013325
"$ref": "#/$defs/SpatialCoverage",
33023326
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -3342,6 +3366,26 @@
33423366
"InterventionWithTracer": {
33433367
"additionalProperties": false,
33443368
"allOf": [
3369+
{
3370+
"if": {
3371+
"properties": {
3372+
"tracer_form": {
3373+
"const": "other"
3374+
}
3375+
},
3376+
"required": [
3377+
"tracer_form"
3378+
]
3379+
},
3380+
"then": {
3381+
"properties": {
3382+
"tracer_form_custom": {}
3383+
},
3384+
"required": [
3385+
"tracer_form_custom"
3386+
]
3387+
}
3388+
},
33453389
{
33463390
"if": {
33473391
"properties": {
@@ -3495,9 +3539,12 @@
34953539
"type": "array"
34963540
},
34973541
"experiment_type": {
3498-
"$ref": "#/$defs/ExperimentType",
34993542
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
3500-
"title": "mCDR Experiment Type"
3543+
"items": {
3544+
"$ref": "#/$defs/ExperimentType"
3545+
},
3546+
"title": "mCDR Experiment Type",
3547+
"type": "array"
35013548
},
35023549
"meteorological_and_tidal_data": {
35033550
"description": "Include links to relevant open datasets if referenced in the experiment but not provided in the submission.",
@@ -3531,6 +3578,11 @@
35313578
"title": "Project ID",
35323579
"type": "string"
35333580
},
3581+
"public_comments": {
3582+
"description": "If possible, please provide public comments concatenated into a single pdf",
3583+
"title": "Public Comments",
3584+
"type": "string"
3585+
},
35343586
"spatial_coverage": {
35353587
"$ref": "#/$defs/SpatialCoverage",
35363588
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -3557,6 +3609,11 @@
35573609
"description": "The form of tracer upon delivery to the ocean (e.g. gas or dye-release)",
35583610
"title": "Tracer Form"
35593611
},
3612+
"tracer_form_custom": {
3613+
"description": "If \"other\" was selected for Tracer Form, please specify the custom tracer form here.",
3614+
"title": "Tracer Form (Custom)",
3615+
"type": "string"
3616+
},
35603617
"vertical_coverage": {
35613618
"$ref": "#/$defs/VerticalExtent",
35623619
"description": "Minimum and maximum depths of observations in meters.",
@@ -3650,9 +3707,12 @@
36503707
"type": "array"
36513708
},
36523709
"experiment_type": {
3653-
"$ref": "#/$defs/ExperimentType",
36543710
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
3655-
"title": "mCDR Experiment Type"
3711+
"items": {
3712+
"$ref": "#/$defs/ExperimentType"
3713+
},
3714+
"title": "mCDR Experiment Type",
3715+
"type": "array"
36563716
},
36573717
"grid_details": {
36583718
"description": "Details about the model grid(s). Use multiple entries for nested grid configurations.",
@@ -3702,6 +3762,11 @@
37023762
"title": "Project ID",
37033763
"type": "string"
37043764
},
3765+
"public_comments": {
3766+
"description": "If possible, please provide public comments concatenated into a single pdf",
3767+
"title": "Public Comments",
3768+
"type": "string"
3769+
},
37053770
"spatial_coverage": {
37063771
"$ref": "#/$defs/SpatialCoverage",
37073772
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -3988,11 +4053,6 @@
39884053
]
39894054
},
39904055
"properties": {
3991-
"alkalinity_perturbation_description": {
3992-
"description": "Description of the alkalinity perturbation applied in the simulation. Required when simulation_type is \"perturbation\".",
3993-
"title": "Alkalinity Perturbation Description",
3994-
"type": "string"
3995-
},
39964056
"author_list_for_citation": {
39974057
"description": "Author list in the format of Lastname1, Firstname1 Middlename1; Lastname2, Firstname2 Middlename2; ...",
39984058
"title": "Author List (for citation)",
@@ -4051,6 +4111,11 @@
40514111
"title": "License",
40524112
"type": "string"
40534113
},
4114+
"mcdr_forcing_description": {
4115+
"description": "Description of the mCDR forcing applied in the simulation (e.g., the alkalinity perturbation). Required when simulation_type is \"perturbation\".",
4116+
"title": "Description of mCDR Forcing",
4117+
"type": "string"
4118+
},
40544119
"model_output_variables": {
40554120
"description": "Checklist of variables included in the model simulation output.",
40564121
"items": {
@@ -4793,11 +4858,6 @@
47934858
"title": "Project Lead(s)",
47944859
"type": "array"
47954860
},
4796-
"public_comments": {
4797-
"description": "If possible, please provide public comments concatenated into a single pdf",
4798-
"title": "Public Comments",
4799-
"type": "string"
4800-
},
48014861
"research_project": {
48024862
"description": "Project, which the data collection is part of. For example, West Coast Ocean Acidification (WCOA) Project.",
48034863
"title": "Research Project",
@@ -5121,6 +5181,16 @@
51215181
"Tracer": {
51225182
"additionalProperties": false,
51235183
"description": "Additional metadata that applies to experiments where a tracer study was conducted",
5184+
"if": {
5185+
"properties": {
5186+
"tracer_form": {
5187+
"const": "other"
5188+
}
5189+
},
5190+
"required": [
5191+
"tracer_form"
5192+
]
5193+
},
51245194
"properties": {
51255195
"additional_details": {
51265196
"description": "Open text area to include additional information. These may include information for sediment processes data, biological data, or any other required information if not included in the main metadata or data files; see General Guidelines for Your Data for relevant sections of your data. Additional informational files, such as digitized laboratory notebooks, blogs, etc., may be linked here.",
@@ -5187,9 +5257,12 @@
51875257
"type": "array"
51885258
},
51895259
"experiment_type": {
5190-
"$ref": "#/$defs/ExperimentType",
51915260
"description": "The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions.",
5192-
"title": "mCDR Experiment Type"
5261+
"items": {
5262+
"$ref": "#/$defs/ExperimentType"
5263+
},
5264+
"title": "mCDR Experiment Type",
5265+
"type": "array"
51935266
},
51945267
"meteorological_and_tidal_data": {
51955268
"description": "Include links to relevant open datasets if referenced in the experiment but not provided in the submission.",
@@ -5223,6 +5296,11 @@
52235296
"title": "Project ID",
52245297
"type": "string"
52255298
},
5299+
"public_comments": {
5300+
"description": "If possible, please provide public comments concatenated into a single pdf",
5301+
"title": "Public Comments",
5302+
"type": "string"
5303+
},
52265304
"spatial_coverage": {
52275305
"$ref": "#/$defs/SpatialCoverage",
52285306
"description": "Latitude/longitude bounds of observed data in experiment, provided in decimal degrees as westernmost longitude, southernmost latitude, easternmost longitude, northernmost latitude. [S, W, N, E]",
@@ -5249,6 +5327,11 @@
52495327
"description": "The form of tracer upon delivery to the ocean (e.g. gas or dye-release)",
52505328
"title": "Tracer Form"
52515329
},
5330+
"tracer_form_custom": {
5331+
"description": "If \"other\" was selected for Tracer Form, please specify the custom tracer form here.",
5332+
"title": "Tracer Form (Custom)",
5333+
"type": "string"
5334+
},
52525335
"vertical_coverage": {
52535336
"$ref": "#/$defs/VerticalExtent",
52545337
"description": "Minimum and maximum depths of observations in meters.",
@@ -5273,6 +5356,14 @@
52735356
"experiment_leads",
52745357
"start_datetime"
52755358
],
5359+
"then": {
5360+
"properties": {
5361+
"tracer_form_custom": {}
5362+
},
5363+
"required": [
5364+
"tracer_form_custom"
5365+
]
5366+
},
52765367
"title": "Tracer",
52775368
"type": "object"
52785369
},

project/typescript/oae_data_protocol.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -740,8 +740,6 @@ Links to relevant datasets, cruise reports, etc may be provided here. */
740740
previous_or_ongoing_colocated_research?: ExternalProject[],
741741
/** A description is required if any nearby operations exist that may influence the waters over the time period covered by this data. This might be a nearby mCDR project, a facility that discharges water with different characteristics than the inflow (e.g., a desalination plant), frequent boating operations, etc. */
742742
colocated_operations?: string,
743-
/** If possible, please provide public comments concatenated into a single pdf */
744-
public_comments?: string,
745743
/** Project, which the data collection is part of. For example, West Coast Ocean Acidification (WCOA) Project. */
746744
research_project?: string,
747745
/** Include the name of the funder, funder country, project title, project ID, and the project start and end dates. If there is no funding source (e.g., in the case of commercial projects), leave this field empty. */
@@ -832,6 +830,8 @@ Project ID + Experiment type + Optional numerical indicator to differentiate bet
832830
experiment_id: string,
833831
/** The type of mCDR experiment conducted. See Controlled Vocabularies section for definitions. */
834832
experiment_type: string,
833+
/** If possible, please provide public comments concatenated into a single pdf */
834+
public_comments?: string,
835835
/** Provide details for each experiment lead / principal investigator (PI) including: Name, institutional information (name, address), phone, email, ID type (e.g., ORCID, etc), researcher ID, and role. */
836836
experiment_leads: Person[],
837837
/** Start date and time of experiment in UTC ISO-8601 */
@@ -911,6 +911,8 @@ See Controlled Vocabularies section for selected examples (this list is not exha
911911
export interface TracerDetails {
912912
/** The form of tracer upon delivery to the ocean (e.g. gas or dye-release) */
913913
tracer_form: string,
914+
/** If "other" was selected for Tracer Form, please specify the custom tracer form here. */
915+
tracer_form_custom?: string,
914916
/** state the kind of tracer used (e.g. rhodamine, or a specific gas) */
915917
tracer_details: string,
916918
/** Fixed concentration or provide link/source to tracer concentration separately in the dosing file. Please include whether concentration is directly measured or a derived value. If this is a variable included with your data, please note so here as 'tracer concentration provided as a variable' and use 'tracer_concentration' for your column header name. */
@@ -1467,8 +1469,8 @@ export interface ModelOutputDataset extends Dataset {
14671469
output_frequency?: string,
14681470
/** Time-stepping method and time step used in the simulation. */
14691471
time_stepping_scheme?: string,
1470-
/** Description of the alkalinity perturbation applied in the simulation. Required when simulation_type is "perturbation". */
1471-
alkalinity_perturbation_description?: string,
1472+
/** Description of the mCDR forcing applied in the simulation (e.g., the alkalinity perturbation). Required when simulation_type is "perturbation". */
1473+
mcdr_forcing_description?: string,
14721474
/** Details about the computational hardware used for the simulation. */
14731475
hardware_configuration?: HardwareConfiguration,
14741476
/** Checklist of variables included in the model simulation output. */

0 commit comments

Comments
 (0)