@forwardimpact/schema 0.1.0 → 0.2.0

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.
Files changed (66) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +58 -0
  3. package/bin/fit-schema.js +48 -21
  4. package/examples/behaviours/outcome_ownership.yaml +1 -1
  5. package/examples/behaviours/polymathic_knowledge.yaml +1 -1
  6. package/examples/behaviours/precise_communication.yaml +1 -1
  7. package/examples/behaviours/relentless_curiosity.yaml +1 -1
  8. package/examples/behaviours/systems_thinking.yaml +1 -1
  9. package/examples/capabilities/business.yaml +1 -1
  10. package/examples/capabilities/delivery.yaml +1 -1
  11. package/examples/capabilities/people.yaml +1 -1
  12. package/examples/capabilities/reliability.yaml +1 -1
  13. package/examples/capabilities/scale.yaml +1 -1
  14. package/examples/disciplines/data_engineering.yaml +1 -1
  15. package/examples/disciplines/engineering_management.yaml +1 -1
  16. package/examples/disciplines/software_engineering.yaml +1 -1
  17. package/examples/drivers.yaml +1 -1
  18. package/examples/framework.yaml +1 -1
  19. package/examples/grades.yaml +1 -1
  20. package/examples/questions/behaviours/outcome_ownership.yaml +1 -1
  21. package/examples/questions/behaviours/polymathic_knowledge.yaml +1 -1
  22. package/examples/questions/behaviours/precise_communication.yaml +1 -1
  23. package/examples/questions/behaviours/relentless_curiosity.yaml +1 -1
  24. package/examples/questions/behaviours/systems_thinking.yaml +1 -1
  25. package/examples/questions/skills/architecture_design.yaml +1 -1
  26. package/examples/questions/skills/cloud_platforms.yaml +1 -1
  27. package/examples/questions/skills/code_quality.yaml +1 -1
  28. package/examples/questions/skills/data_modeling.yaml +1 -1
  29. package/examples/questions/skills/devops.yaml +1 -1
  30. package/examples/questions/skills/full_stack_development.yaml +1 -1
  31. package/examples/questions/skills/sre_practices.yaml +1 -1
  32. package/examples/questions/skills/stakeholder_management.yaml +1 -1
  33. package/examples/questions/skills/team_collaboration.yaml +1 -1
  34. package/examples/questions/skills/technical_writing.yaml +1 -1
  35. package/examples/self-assessments.yaml +1 -1
  36. package/examples/stages.yaml +1 -1
  37. package/examples/tracks/platform.yaml +1 -1
  38. package/examples/tracks/sre.yaml +1 -1
  39. package/lib/schema-validation.js +1 -1
  40. package/package.json +5 -5
  41. package/schema/json/behaviour-questions.schema.json +1 -1
  42. package/schema/json/behaviour.schema.json +1 -1
  43. package/schema/json/capability.schema.json +1 -1
  44. package/schema/json/defs.schema.json +1 -1
  45. package/schema/json/discipline.schema.json +1 -1
  46. package/schema/json/drivers.schema.json +1 -1
  47. package/schema/json/framework.schema.json +1 -1
  48. package/schema/json/grades.schema.json +1 -1
  49. package/schema/json/self-assessments.schema.json +1 -1
  50. package/schema/json/skill-questions.schema.json +1 -1
  51. package/schema/json/stages.schema.json +1 -1
  52. package/schema/json/track.schema.json +1 -1
  53. package/schema/rdf/behaviour-questions.ttl +96 -0
  54. package/schema/rdf/behaviour.ttl +130 -0
  55. package/schema/rdf/capability.ttl +440 -0
  56. package/schema/rdf/defs.ttl +396 -0
  57. package/schema/rdf/discipline.ttl +336 -0
  58. package/schema/rdf/drivers.ttl +84 -0
  59. package/schema/rdf/framework.ttl +128 -0
  60. package/schema/rdf/grades.ttl +357 -0
  61. package/schema/rdf/self-assessments.ttl +147 -0
  62. package/schema/rdf/skill-questions.ttl +128 -0
  63. package/schema/rdf/stages.ttl +142 -0
  64. package/schema/rdf/track.ttl +231 -0
  65. package/schema/json/index.schema.json +0 -18
  66. package/schema/rdf/pathway.ttl +0 -2362
@@ -0,0 +1,396 @@
1
+ @prefix fit: <https://www.forwardimpact.team/schema/rdf/> .
2
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
3
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
4
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
6
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
7
+
8
+ # =============================================================================
9
+ # Engineering Pathway Common Definitions
10
+ # =============================================================================
11
+ # Shared definitions for all pathway schemas: enumerations, common classes,
12
+ # and shared properties.
13
+ # =============================================================================
14
+
15
+ # -----------------------------------------------------------------------------
16
+ # Ontology Definition
17
+ # -----------------------------------------------------------------------------
18
+
19
+ fit: a owl:Ontology ;
20
+ rdfs:label "Engineering Pathway Schema"@en ;
21
+ rdfs:comment "SHACL schema for the Engineering Pathway framework - a unified system for defining engineering roles, skills, behaviours, and AI agent configurations."@en .
22
+
23
+ # =============================================================================
24
+ # ENUMERATIONS (Named Individuals)
25
+ # =============================================================================
26
+
27
+ # -----------------------------------------------------------------------------
28
+ # Skill Levels (5 levels from lowest to highest proficiency)
29
+ # -----------------------------------------------------------------------------
30
+
31
+ fit:SkillLevel a rdfs:Class ;
32
+ rdfs:label "Skill Level"@en ;
33
+ rdfs:comment "Skill proficiency level from lowest to highest"@en .
34
+
35
+ fit:awareness a fit:SkillLevel ;
36
+ rdfs:label "Awareness"@en ;
37
+ fit:ordinal 1 ;
38
+ rdfs:comment "Learning fundamentals, needs guidance"@en .
39
+
40
+ fit:foundational a fit:SkillLevel ;
41
+ rdfs:label "Foundational"@en ;
42
+ fit:ordinal 2 ;
43
+ rdfs:comment "Can apply basics independently"@en .
44
+
45
+ fit:working a fit:SkillLevel ;
46
+ rdfs:label "Working"@en ;
47
+ fit:ordinal 3 ;
48
+ rdfs:comment "Solid competence, handles ambiguity"@en .
49
+
50
+ fit:practitioner a fit:SkillLevel ;
51
+ rdfs:label "Practitioner"@en ;
52
+ fit:ordinal 4 ;
53
+ rdfs:comment "Deep expertise, leads and mentors"@en .
54
+
55
+ fit:expert a fit:SkillLevel ;
56
+ rdfs:label "Expert"@en ;
57
+ fit:ordinal 5 ;
58
+ rdfs:comment "Authority, shapes direction across org"@en .
59
+
60
+ # -----------------------------------------------------------------------------
61
+ # Behaviour Maturities (5 levels from lowest to highest)
62
+ # -----------------------------------------------------------------------------
63
+
64
+ fit:BehaviourMaturity a rdfs:Class ;
65
+ rdfs:label "Behaviour Maturity"@en ;
66
+ rdfs:comment "Behaviour maturity level from lowest to highest"@en .
67
+
68
+ fit:emerging a fit:BehaviourMaturity ;
69
+ rdfs:label "Emerging"@en ;
70
+ fit:ordinal 1 ;
71
+ rdfs:comment "Shows interest, needs prompting"@en .
72
+
73
+ fit:developing a fit:BehaviourMaturity ;
74
+ rdfs:label "Developing"@en ;
75
+ fit:ordinal 2 ;
76
+ rdfs:comment "Regular practice with guidance"@en .
77
+
78
+ fit:practicing a fit:BehaviourMaturity ;
79
+ rdfs:label "Practicing"@en ;
80
+ fit:ordinal 3 ;
81
+ rdfs:comment "Consistent application, proactive"@en .
82
+
83
+ fit:role_modeling a fit:BehaviourMaturity ;
84
+ rdfs:label "Role Modeling"@en ;
85
+ fit:ordinal 4 ;
86
+ rdfs:comment "Influences team culture"@en .
87
+
88
+ fit:exemplifying a fit:BehaviourMaturity ;
89
+ rdfs:label "Exemplifying"@en ;
90
+ fit:ordinal 5 ;
91
+ rdfs:comment "Shapes organizational culture"@en .
92
+
93
+ # -----------------------------------------------------------------------------
94
+ # Lifecycle Stages
95
+ # -----------------------------------------------------------------------------
96
+
97
+ fit:Stage a rdfs:Class ;
98
+ rdfs:label "Stage"@en ;
99
+ rdfs:comment "Engineering lifecycle stage"@en .
100
+
101
+ fit:plan a fit:Stage ;
102
+ rdfs:label "Plan"@en ;
103
+ rdfs:comment "Research, gather context, design"@en .
104
+
105
+ fit:code a fit:Stage ;
106
+ rdfs:label "Code"@en ;
107
+ rdfs:comment "Implement, test, iterate"@en .
108
+
109
+ fit:review a fit:Stage ;
110
+ rdfs:label "Review"@en ;
111
+ rdfs:comment "Verify, approve, document"@en .
112
+
113
+ # =============================================================================
114
+ # COMMON PROPERTIES
115
+ # =============================================================================
116
+
117
+ fit:id a rdf:Property ;
118
+ rdfs:label "id"@en ;
119
+ rdfs:comment "Unique identifier"@en ;
120
+ rdfs:range xsd:string .
121
+
122
+ fit:name a rdf:Property ;
123
+ rdfs:label "name"@en ;
124
+ rdfs:comment "Human-readable name"@en ;
125
+ rdfs:range xsd:string .
126
+
127
+ fit:description a rdf:Property ;
128
+ rdfs:label "description"@en ;
129
+ rdfs:comment "Description text"@en ;
130
+ rdfs:range xsd:string .
131
+
132
+ fit:emojiIcon a rdf:Property ;
133
+ rdfs:label "emojiIcon"@en ;
134
+ rdfs:comment "Emoji for visual representation"@en ;
135
+ rdfs:range xsd:string .
136
+
137
+ fit:displayOrder a rdf:Property ;
138
+ rdfs:label "displayOrder"@en ;
139
+ rdfs:comment "Order for display in UI"@en ;
140
+ rdfs:range xsd:integer .
141
+
142
+ fit:ordinal a rdf:Property ;
143
+ rdfs:label "ordinal"@en ;
144
+ rdfs:comment "Numeric position in ordered sequence"@en ;
145
+ rdfs:range xsd:integer .
146
+
147
+ fit:title a rdf:Property ;
148
+ rdfs:label "title"@en ;
149
+ rdfs:comment "Display title"@en ;
150
+ rdfs:range xsd:string .
151
+
152
+ fit:human a rdf:Property ;
153
+ rdfs:label "human"@en ;
154
+ rdfs:comment "Human-specific content"@en .
155
+
156
+ fit:agent a rdf:Property ;
157
+ rdfs:label "agent"@en ;
158
+ rdfs:comment "Agent-specific content"@en .
159
+
160
+ fit:minGrade a rdf:Property ;
161
+ rdfs:label "minGrade"@en ;
162
+ rdfs:comment "Minimum grade required"@en ;
163
+ rdfs:range fit:Grade .
164
+
165
+ fit:constraints a rdf:Property ;
166
+ rdfs:label "constraints"@en ;
167
+ rdfs:comment "Restrictions or things to avoid"@en ;
168
+ rdfs:range xsd:string .
169
+
170
+ # =============================================================================
171
+ # SHARED NESTED CLASSES
172
+ # =============================================================================
173
+
174
+ fit:LevelDescriptions a rdfs:Class ;
175
+ rdfs:label "Level Descriptions"@en ;
176
+ rdfs:comment "Description of expectations at each skill level"@en .
177
+
178
+ fit:MaturityDescriptions a rdfs:Class ;
179
+ rdfs:label "Maturity Descriptions"@en ;
180
+ rdfs:comment "Description of expectations at each behaviour maturity level"@en .
181
+
182
+ fit:ResponsibilitiesByLevel a rdfs:Class ;
183
+ rdfs:label "Responsibilities By Level"@en ;
184
+ rdfs:comment "Responsibility descriptions by skill level"@en .
185
+
186
+ # -----------------------------------------------------------------------------
187
+ # Level Description Properties
188
+ # -----------------------------------------------------------------------------
189
+
190
+ fit:awarenessDescription a rdf:Property ;
191
+ rdfs:label "awarenessDescription"@en ;
192
+ rdfs:comment "Description for awareness level"@en ;
193
+ rdfs:range xsd:string .
194
+
195
+ fit:foundationalDescription a rdf:Property ;
196
+ rdfs:label "foundationalDescription"@en ;
197
+ rdfs:comment "Description for foundational level"@en ;
198
+ rdfs:range xsd:string .
199
+
200
+ fit:workingDescription a rdf:Property ;
201
+ rdfs:label "workingDescription"@en ;
202
+ rdfs:comment "Description for working level"@en ;
203
+ rdfs:range xsd:string .
204
+
205
+ fit:practitionerDescription a rdf:Property ;
206
+ rdfs:label "practitionerDescription"@en ;
207
+ rdfs:comment "Description for practitioner level"@en ;
208
+ rdfs:range xsd:string .
209
+
210
+ fit:expertDescription a rdf:Property ;
211
+ rdfs:label "expertDescription"@en ;
212
+ rdfs:comment "Description for expert level"@en ;
213
+ rdfs:range xsd:string .
214
+
215
+ # -----------------------------------------------------------------------------
216
+ # Maturity Description Properties
217
+ # -----------------------------------------------------------------------------
218
+
219
+ fit:emergingDescription a rdf:Property ;
220
+ rdfs:label "emergingDescription"@en ;
221
+ rdfs:comment "Description for emerging maturity"@en ;
222
+ rdfs:range xsd:string .
223
+
224
+ fit:developingDescription a rdf:Property ;
225
+ rdfs:label "developingDescription"@en ;
226
+ rdfs:comment "Description for developing maturity"@en ;
227
+ rdfs:range xsd:string .
228
+
229
+ fit:practicingDescription a rdf:Property ;
230
+ rdfs:label "practicingDescription"@en ;
231
+ rdfs:comment "Description for practicing maturity"@en ;
232
+ rdfs:range xsd:string .
233
+
234
+ fit:roleModelingDescription a rdf:Property ;
235
+ rdfs:label "roleModelingDescription"@en ;
236
+ rdfs:comment "Description for role_modeling maturity"@en ;
237
+ rdfs:range xsd:string .
238
+
239
+ fit:exemplifyingDescription a rdf:Property ;
240
+ rdfs:label "exemplifyingDescription"@en ;
241
+ rdfs:comment "Description for exemplifying maturity"@en ;
242
+ rdfs:range xsd:string .
243
+
244
+ # =============================================================================
245
+ # SHARED SHACL SHAPES
246
+ # =============================================================================
247
+
248
+ # -----------------------------------------------------------------------------
249
+ # Level Descriptions Shape
250
+ # -----------------------------------------------------------------------------
251
+
252
+ fit:LevelDescriptionsShape a sh:NodeShape ;
253
+ sh:targetClass fit:LevelDescriptions ;
254
+ sh:property [
255
+ sh:path fit:awarenessDescription ;
256
+ sh:datatype xsd:string ;
257
+ sh:minCount 1 ;
258
+ sh:maxCount 1 ;
259
+ sh:name "awareness" ;
260
+ ] ;
261
+ sh:property [
262
+ sh:path fit:foundationalDescription ;
263
+ sh:datatype xsd:string ;
264
+ sh:minCount 1 ;
265
+ sh:maxCount 1 ;
266
+ sh:name "foundational" ;
267
+ ] ;
268
+ sh:property [
269
+ sh:path fit:workingDescription ;
270
+ sh:datatype xsd:string ;
271
+ sh:minCount 1 ;
272
+ sh:maxCount 1 ;
273
+ sh:name "working" ;
274
+ ] ;
275
+ sh:property [
276
+ sh:path fit:practitionerDescription ;
277
+ sh:datatype xsd:string ;
278
+ sh:minCount 1 ;
279
+ sh:maxCount 1 ;
280
+ sh:name "practitioner" ;
281
+ ] ;
282
+ sh:property [
283
+ sh:path fit:expertDescription ;
284
+ sh:datatype xsd:string ;
285
+ sh:minCount 1 ;
286
+ sh:maxCount 1 ;
287
+ sh:name "expert" ;
288
+ ] .
289
+
290
+ # -----------------------------------------------------------------------------
291
+ # Maturity Descriptions Shape
292
+ # -----------------------------------------------------------------------------
293
+
294
+ fit:MaturityDescriptionsShape a sh:NodeShape ;
295
+ sh:targetClass fit:MaturityDescriptions ;
296
+ sh:property [
297
+ sh:path fit:emergingDescription ;
298
+ sh:datatype xsd:string ;
299
+ sh:minCount 1 ;
300
+ sh:maxCount 1 ;
301
+ sh:name "emerging" ;
302
+ ] ;
303
+ sh:property [
304
+ sh:path fit:developingDescription ;
305
+ sh:datatype xsd:string ;
306
+ sh:minCount 1 ;
307
+ sh:maxCount 1 ;
308
+ sh:name "developing" ;
309
+ ] ;
310
+ sh:property [
311
+ sh:path fit:practicingDescription ;
312
+ sh:datatype xsd:string ;
313
+ sh:minCount 1 ;
314
+ sh:maxCount 1 ;
315
+ sh:name "practicing" ;
316
+ ] ;
317
+ sh:property [
318
+ sh:path fit:roleModelingDescription ;
319
+ sh:datatype xsd:string ;
320
+ sh:minCount 1 ;
321
+ sh:maxCount 1 ;
322
+ sh:name "role_modeling" ;
323
+ ] ;
324
+ sh:property [
325
+ sh:path fit:exemplifyingDescription ;
326
+ sh:datatype xsd:string ;
327
+ sh:minCount 1 ;
328
+ sh:maxCount 1 ;
329
+ sh:name "exemplifying" ;
330
+ ] .
331
+
332
+ # -----------------------------------------------------------------------------
333
+ # Responsibilities By Level Shape
334
+ # -----------------------------------------------------------------------------
335
+
336
+ fit:ResponsibilitiesByLevelShape a sh:NodeShape ;
337
+ sh:targetClass fit:ResponsibilitiesByLevel ;
338
+ sh:property [
339
+ sh:path fit:awarenessDescription ;
340
+ sh:datatype xsd:string ;
341
+ sh:minCount 1 ;
342
+ sh:maxCount 1 ;
343
+ sh:name "awareness" ;
344
+ ] ;
345
+ sh:property [
346
+ sh:path fit:foundationalDescription ;
347
+ sh:datatype xsd:string ;
348
+ sh:minCount 1 ;
349
+ sh:maxCount 1 ;
350
+ sh:name "foundational" ;
351
+ ] ;
352
+ sh:property [
353
+ sh:path fit:workingDescription ;
354
+ sh:datatype xsd:string ;
355
+ sh:minCount 1 ;
356
+ sh:maxCount 1 ;
357
+ sh:name "working" ;
358
+ ] ;
359
+ sh:property [
360
+ sh:path fit:practitionerDescription ;
361
+ sh:datatype xsd:string ;
362
+ sh:minCount 1 ;
363
+ sh:maxCount 1 ;
364
+ sh:name "practitioner" ;
365
+ ] ;
366
+ sh:property [
367
+ sh:path fit:expertDescription ;
368
+ sh:datatype xsd:string ;
369
+ sh:minCount 1 ;
370
+ sh:maxCount 1 ;
371
+ sh:name "expert" ;
372
+ ] .
373
+
374
+ # -----------------------------------------------------------------------------
375
+ # Index Shape (Auto-generated index files)
376
+ # -----------------------------------------------------------------------------
377
+
378
+ fit:Index a rdfs:Class ;
379
+ rdfs:label "Index"@en ;
380
+ rdfs:comment "Auto-generated index file for browser loading"@en .
381
+
382
+ fit:files a rdf:Property ;
383
+ rdfs:label "files"@en ;
384
+ rdfs:comment "List of file basenames in the directory"@en ;
385
+ rdfs:domain fit:Index ;
386
+ rdfs:range xsd:string .
387
+
388
+ fit:IndexShape a sh:NodeShape ;
389
+ sh:targetClass fit:Index ;
390
+ sh:property [
391
+ sh:path fit:files ;
392
+ sh:datatype xsd:string ;
393
+ sh:minCount 1 ;
394
+ sh:name "files" ;
395
+ sh:description "List of file basenames (without extension) in the directory" ;
396
+ ] .