-
Notifications
You must be signed in to change notification settings - Fork 1
/
ProgressionModelRequest.cs
291 lines (246 loc) · 8.88 KB
/
ProgressionModelRequest.cs
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
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RA.Models.Input
{
/// <summary>
/// Progression Model Publishing Request
/// 22-09-27 Noticed that progression model and progression level are diverging rapidly from concept scheme and concept. Creating custom classess
/// </summary>
public class ProgressionModelRequest : BaseRequest
{
/// <summary>
/// constructor
/// </summary>
public ProgressionModelRequest()
{
ProgressionModel = new ProgressionModel();
}
/// <summary>
/// ProgressionModel
/// Required
/// </summary>
public ProgressionModel ProgressionModel { get; set; } = new ProgressionModel();
/// <summary>
/// ProgressionLevels for ProgressionModel
/// Required
/// </summary>
public List<ProgressionLevel> ProgressionLevels { get; set; } = new List<ProgressionLevel>();
/// <summary>
/// Generate HasTopChild
/// if true, the HasTopChild property is not included in the input document. The HasTopChild property in the JSON document will be generated from the Concept list.
/// Should only be used where the structure is flat. That is there are no concepts that have child concepts.
/// SO that is: all concepts are top childs.
/// Note: in some cases IsTopChildOf was provided and not HasTopChild. In this case: GenerateHasTopChild=true, and GenerateIsTopChild=false
/// </summary>
public bool GenerateHasTopChild { get; set; } = false;
/// <summary>
/// Generate HasTopChild where the concept has property of: TopConceptOf
/// </summary>
public bool GenerateHasTopChildFromIsTopChild { get; set; } = false;
/// <summary>
/// Generate IsTopChild
/// if true, the IsTopChild property must not be included in the input document and the IsTopChild property in the JSON document will be generated for each concept in the list.
/// Must only be used where the structure is flat. That is there are no concepts have child concepts.
/// </summary>
public bool GenerateIsTopChild { get; set; } = false;
}
/// <summary>
/// Progression Model
/// Currently identical to a ConceptScheme
/// 22-09-27 not anymore
/// </summary>
public class ProgressionModel
{
/// <summary>
/// constructor
/// </summary>
public ProgressionModel()
{
Type = "ProgressionModel";
ConceptTerm = null;
}
/// <summary>
/// Helper property for use with blank nodes
/// </summary>
public string Type { get; set; } = "ProgressionModel";
/// <summary>
/// CTID - identifier for Progression Model.
/// REQUIRED
/// </summary>
public string CTID { get; set; }
/// <summary>
/// Concept Keyword
/// A word or phrase used by the promulgating agency to refine and differentiate individual resources contextually.
/// </summary>
public List<string> ConceptKeyword { get; set; } = new List<string>();
/// <summary>
/// Concept Keywords via LanguageMapList
/// </summary>
public LanguageMapList ConceptKeyword_Map { get; set; } = new LanguageMapList();
/// <summary>
/// Concept Term
/// A term drawn from a controlled vocabulary used by the promulgating agency to refine and differentiate individual resources contextually.
/// skos:Concept
/// </summary>
public List<string> ConceptTerm { get; set; } = new List<string>();
/// <summary>
/// Creator
/// An entity primarily responsible for making this resource.
/// </summary>
public List<OrganizationReference> Creator { get; set; } = new List<OrganizationReference>();
/// <summary>
/// Date Copyrighted
/// Date of a statement of copyright for this resource. Typically the year only, but a full date is allowed.
/// xsd:string
/// </summary>
public string DateCopyrighted { get; set; }
/// <summary>
/// Date Created
/// Date of creation of this resource.
/// xsd:date
/// </summary>
public string DateCreated { get; set; }
/// <summary>
/// The date on which this resource was most recently modified in some way.
/// xsd:dateTime
/// </summary>
public string DateModified { get; set; }
/// <summary>
/// Progression Model description
/// REQUIRED and must be a minimum of 15 characters.
/// </summary>
public string Description { get; set; }
/// <summary>
/// Alternately can provide a language map
/// </summary>
public LanguageMap Description_Map { get; set; } = new LanguageMap();
/// <summary>
/// Top Concepts
/// Concept of the scheme at the top of a hierarchy of narrower concepts.
/// List of CTIDs (recommended) or actual registry URIs
/// REQUIRED
/// </summary>
public List<string> HasTopConcept { get; set; } = new List<string>();
/// <summary>
/// Language. Required unless defaultLanguage is provided
/// </summary>
public List<string> InLanguage { get; set; } = new List<string>();
/// <summary>
/// A legal document giving official permission to do something with this resource.
/// xsd:anyURI
/// </summary>
public string License { get; set; }
/// <summary>
/// Name of the Progression Model - required
/// REQUIRED
/// </summary>
public string Name { get; set; }
/// <summary>
/// Alternately can provide a language map
/// </summary>
public LanguageMap Name_Map { get; set; } = new LanguageMap();
/// <summary>
/// The publication status of the of this resource.
/// <seealso cref="https://credreg.net/ctdlasn/terms/PublicationStatus"/>
/// </summary>
public string PublicationStatusType { get; set; }
/// <summary>
/// Name of an agent responsible for making this resource available.
/// </summary>
public List<string> PublisherName { get; set; } = new List<string>();
public LanguageMapList PublisherName_Map { get; set; } = new LanguageMapList();
/// <summary>
/// An agent responsible for making this resource available.
/// This was originally defined as a single, and continuing to match CaSS.
/// </summary>
public List<OrganizationReference> Publisher { get; set; } = new List<OrganizationReference>();
/// <summary>
/// Information about rights held in and over this resource.
/// rdf:langString
/// </summary>
public string Rights { get; set; }
public LanguageMap Rights_Map { get; set; } = new LanguageMap();
/// <summary>
/// An agent owning or managing rights over this resource.
/// Use OrganizationReference for flexibility
/// </summary>
public OrganizationReference RightsHolder { get; set; } = new OrganizationReference();
/// <summary>
/// Original Source of Progression Model
/// xsd:anyURI
/// </summary>
public List<string> Source { get; set; } = new List<string>();
}
/// <summary>
/// ProgressionLevel currently the same as the Concept class
/// </summary>
public class ProgressionLevel
{
/*
skos:topConceptOf
*/
/// <summary>
/// CTID - identifier for concept.
/// Format: ce-UUID (lowercase)
/// example: ce-a044dbd5-12ec-4747-97bd-a8311eb0a042
/// </summary>
public string CTID { get; set; }
/// <summary>
/// Concept
/// Required
/// </summary>
public string PrefLabel { get; set; }
/// <summary>
/// Alternately can provide a language map
/// </summary>
public LanguageMap PrefLabel_Map { get; set; } = new LanguageMap();
/// <summary>
/// Progression Model to which this Progression Level belongs.
/// </summary>
public string InProgressionModel { get; set; }
/// <summary>
/// Concept that is broader in some way than this concept.
/// Concept URL (CTID)
/// </summary>
public string Broader { get; set; }
/// <summary>
/// Supplies a complete explanation of the intended meaning of a concept.
/// </summary>
public string Definition { get; set; }
/// <summary>
/// Alternately can provide a language map
/// </summary>
public LanguageMap Definition_Map { get; set; } = new LanguageMap();
/// <summary>
/// Concept that is narrower in some way than this concept.
/// List of Concept URLs(CTIDs)
/// </summary>
public List<string> Narrower { get; set; } = new List<string>();
/// <summary>
/// Alphanumeric notation or ID code as defined by the promulgating body to identify this resource.
/// </summary>
public string Notation { get; set; }
/// <summary>
/// Annotations to the concept for purposes of general documentation.
/// rdf:langString
/// </summary>
public List<string> Note { get; set; } = new List<string>();
public LanguageMapList Note_Map { get; set; } = new LanguageMapList();
/// <summary>
/// Progression Level that logically comes after this level.
/// Provide the CTID or the full URI for the target pathway component.
/// </summary>
public string Precedes { get; set; }
/// <summary>
/// Progression Level is preceded by the referenced components
/// </summary>
public string PrecededBy { get; set; }
/// <summary>
/// URI to the Progression Model
/// </summary>
public string TopConceptOf { get; set; }
}
}