@forwardimpact/map 0.11.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 (83) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +67 -0
  3. package/bin/fit-map.js +287 -0
  4. package/examples/behaviours/_index.yaml +8 -0
  5. package/examples/behaviours/outcome_ownership.yaml +43 -0
  6. package/examples/behaviours/polymathic_knowledge.yaml +41 -0
  7. package/examples/behaviours/precise_communication.yaml +39 -0
  8. package/examples/behaviours/relentless_curiosity.yaml +37 -0
  9. package/examples/behaviours/systems_thinking.yaml +40 -0
  10. package/examples/capabilities/_index.yaml +8 -0
  11. package/examples/capabilities/business.yaml +205 -0
  12. package/examples/capabilities/delivery.yaml +1001 -0
  13. package/examples/capabilities/people.yaml +68 -0
  14. package/examples/capabilities/reliability.yaml +349 -0
  15. package/examples/capabilities/scale.yaml +1672 -0
  16. package/examples/copilot-setup-steps.yaml +25 -0
  17. package/examples/devcontainer.yaml +21 -0
  18. package/examples/disciplines/_index.yaml +6 -0
  19. package/examples/disciplines/data_engineering.yaml +68 -0
  20. package/examples/disciplines/engineering_management.yaml +61 -0
  21. package/examples/disciplines/software_engineering.yaml +68 -0
  22. package/examples/drivers.yaml +202 -0
  23. package/examples/framework.yaml +73 -0
  24. package/examples/levels.yaml +115 -0
  25. package/examples/questions/behaviours/outcome_ownership.yaml +228 -0
  26. package/examples/questions/behaviours/polymathic_knowledge.yaml +275 -0
  27. package/examples/questions/behaviours/precise_communication.yaml +248 -0
  28. package/examples/questions/behaviours/relentless_curiosity.yaml +248 -0
  29. package/examples/questions/behaviours/systems_thinking.yaml +238 -0
  30. package/examples/questions/capabilities/business.yaml +107 -0
  31. package/examples/questions/capabilities/delivery.yaml +101 -0
  32. package/examples/questions/capabilities/people.yaml +106 -0
  33. package/examples/questions/capabilities/reliability.yaml +105 -0
  34. package/examples/questions/capabilities/scale.yaml +104 -0
  35. package/examples/questions/skills/architecture_design.yaml +115 -0
  36. package/examples/questions/skills/cloud_platforms.yaml +105 -0
  37. package/examples/questions/skills/code_quality.yaml +162 -0
  38. package/examples/questions/skills/data_modeling.yaml +107 -0
  39. package/examples/questions/skills/devops.yaml +111 -0
  40. package/examples/questions/skills/full_stack_development.yaml +118 -0
  41. package/examples/questions/skills/sre_practices.yaml +113 -0
  42. package/examples/questions/skills/stakeholder_management.yaml +116 -0
  43. package/examples/questions/skills/team_collaboration.yaml +106 -0
  44. package/examples/questions/skills/technical_writing.yaml +110 -0
  45. package/examples/self-assessments.yaml +64 -0
  46. package/examples/stages.yaml +191 -0
  47. package/examples/tracks/_index.yaml +5 -0
  48. package/examples/tracks/platform.yaml +47 -0
  49. package/examples/tracks/sre.yaml +46 -0
  50. package/examples/vscode-settings.yaml +21 -0
  51. package/package.json +49 -0
  52. package/schema/json/behaviour-questions.schema.json +95 -0
  53. package/schema/json/behaviour.schema.json +73 -0
  54. package/schema/json/capability-questions.schema.json +95 -0
  55. package/schema/json/capability.schema.json +229 -0
  56. package/schema/json/defs.schema.json +132 -0
  57. package/schema/json/discipline.schema.json +123 -0
  58. package/schema/json/drivers.schema.json +48 -0
  59. package/schema/json/framework.schema.json +68 -0
  60. package/schema/json/levels.schema.json +121 -0
  61. package/schema/json/self-assessments.schema.json +52 -0
  62. package/schema/json/skill-questions.schema.json +83 -0
  63. package/schema/json/stages.schema.json +88 -0
  64. package/schema/json/track.schema.json +95 -0
  65. package/schema/rdf/behaviour-questions.ttl +128 -0
  66. package/schema/rdf/behaviour.ttl +130 -0
  67. package/schema/rdf/capability.ttl +466 -0
  68. package/schema/rdf/defs.ttl +396 -0
  69. package/schema/rdf/discipline.ttl +313 -0
  70. package/schema/rdf/drivers.ttl +84 -0
  71. package/schema/rdf/framework.ttl +166 -0
  72. package/schema/rdf/levels.ttl +357 -0
  73. package/schema/rdf/self-assessments.ttl +147 -0
  74. package/schema/rdf/skill-questions.ttl +155 -0
  75. package/schema/rdf/stages.ttl +166 -0
  76. package/schema/rdf/track.ttl +225 -0
  77. package/src/index-generator.js +65 -0
  78. package/src/index.js +44 -0
  79. package/src/levels.js +553 -0
  80. package/src/loader.js +608 -0
  81. package/src/modifiers.js +23 -0
  82. package/src/schema-validation.js +438 -0
  83. package/src/validation.js +2136 -0
@@ -0,0 +1,84 @@
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
+
7
+ # =============================================================================
8
+ # Drivers Schema
9
+ # =============================================================================
10
+ # Organizational outcomes that productive teams achieve.
11
+ # =============================================================================
12
+
13
+ # -----------------------------------------------------------------------------
14
+ # Classes
15
+ # -----------------------------------------------------------------------------
16
+
17
+ fit:Driver a rdfs:Class ;
18
+ rdfs:label "Driver"@en ;
19
+ rdfs:comment "Organizational outcome that productive teams achieve"@en .
20
+
21
+ # -----------------------------------------------------------------------------
22
+ # Properties
23
+ # -----------------------------------------------------------------------------
24
+
25
+ fit:contributingSkills a rdf:Property ;
26
+ rdfs:label "contributingSkills"@en ;
27
+ rdfs:comment "Skills that contribute to this driver"@en ;
28
+ rdfs:domain fit:Driver ;
29
+ rdfs:range fit:Skill .
30
+
31
+ fit:contributingBehaviours a rdf:Property ;
32
+ rdfs:label "contributingBehaviours"@en ;
33
+ rdfs:comment "Behaviours that contribute to this driver"@en ;
34
+ rdfs:domain fit:Driver ;
35
+ rdfs:range fit:Behaviour .
36
+
37
+ # =============================================================================
38
+ # SHACL SHAPES
39
+ # =============================================================================
40
+
41
+ # -----------------------------------------------------------------------------
42
+ # Driver Shape
43
+ # -----------------------------------------------------------------------------
44
+
45
+ fit:DriverShape a sh:NodeShape ;
46
+ sh:targetClass fit:Driver ;
47
+ sh:property [
48
+ sh:path fit:id ;
49
+ sh:datatype xsd:string ;
50
+ sh:pattern "^[a-z][a-z0-9_]*$" ;
51
+ sh:minCount 1 ;
52
+ sh:maxCount 1 ;
53
+ sh:name "id" ;
54
+ sh:description "Unique driver identifier (snake_case)" ;
55
+ ] ;
56
+ sh:property [
57
+ sh:path fit:name ;
58
+ sh:datatype xsd:string ;
59
+ sh:minCount 1 ;
60
+ sh:maxCount 1 ;
61
+ sh:name "name" ;
62
+ sh:description "Human-readable driver name" ;
63
+ ] ;
64
+ sh:property [
65
+ sh:path fit:description ;
66
+ sh:datatype xsd:string ;
67
+ sh:maxCount 1 ;
68
+ sh:name "description" ;
69
+ sh:description "Description of the business outcome" ;
70
+ ] ;
71
+ sh:property [
72
+ sh:path fit:contributingSkills ;
73
+ sh:datatype xsd:string ;
74
+ sh:pattern "^[a-z][a-z0-9_]*$" ;
75
+ sh:name "contributingSkills" ;
76
+ sh:description "Skills that contribute to this driver (skill IDs)" ;
77
+ ] ;
78
+ sh:property [
79
+ sh:path fit:contributingBehaviours ;
80
+ sh:datatype xsd:string ;
81
+ sh:pattern "^[a-z][a-z0-9_]*$" ;
82
+ sh:name "contributingBehaviours" ;
83
+ sh:description "Behaviours that contribute to this driver (behaviour IDs)" ;
84
+ ] .
@@ -0,0 +1,166 @@
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
+
7
+ # =============================================================================
8
+ # Framework Schema
9
+ # =============================================================================
10
+ # High-level framework configuration.
11
+ # =============================================================================
12
+
13
+ # -----------------------------------------------------------------------------
14
+ # Classes
15
+ # -----------------------------------------------------------------------------
16
+
17
+ fit:Framework a rdfs:Class ;
18
+ rdfs:label "Framework"@en ;
19
+ rdfs:comment "High-level framework configuration"@en .
20
+
21
+ fit:EntityDefinition a rdfs:Class ;
22
+ rdfs:label "Entity Definition"@en ;
23
+ rdfs:comment "Definition for an entity type used in pages and chapters"@en .
24
+
25
+ fit:Distribution a rdfs:Class ;
26
+ rdfs:label "Distribution"@en ;
27
+ rdfs:comment "Distribution configuration for publishing and installing the framework"@en .
28
+
29
+ # -----------------------------------------------------------------------------
30
+ # Properties
31
+ # -----------------------------------------------------------------------------
32
+
33
+ fit:tag a rdf:Property ;
34
+ rdfs:label "tag"@en ;
35
+ rdfs:comment "Organization tag or identifier"@en ;
36
+ rdfs:domain fit:Framework ;
37
+ rdfs:range xsd:string .
38
+
39
+ fit:entityDefinitions a rdf:Property ;
40
+ rdfs:label "entityDefinitions"@en ;
41
+ rdfs:comment "Definitions for each entity type"@en ;
42
+ rdfs:domain fit:Framework ;
43
+ rdfs:range fit:EntityDefinition .
44
+
45
+ fit:distribution a rdf:Property ;
46
+ rdfs:label "distribution"@en ;
47
+ rdfs:comment "Distribution configuration for the framework"@en ;
48
+ rdfs:domain fit:Framework ;
49
+ rdfs:range fit:Distribution .
50
+
51
+ fit:siteUrl a rdf:Property ;
52
+ rdfs:label "siteUrl"@en ;
53
+ rdfs:comment "Base URL for the published static site"@en ;
54
+ rdfs:domain fit:Distribution ;
55
+ rdfs:range xsd:anyURI .
56
+
57
+ fit:entityType a rdf:Property ;
58
+ rdfs:label "entityType"@en ;
59
+ rdfs:comment "The type of entity this definition describes"@en ;
60
+ rdfs:domain fit:EntityDefinition ;
61
+ rdfs:range xsd:string .
62
+
63
+ # =============================================================================
64
+ # SHACL SHAPES
65
+ # =============================================================================
66
+
67
+ # -----------------------------------------------------------------------------
68
+ # Framework Shape
69
+ # -----------------------------------------------------------------------------
70
+
71
+ fit:FrameworkShape a sh:NodeShape ;
72
+ sh:targetClass fit:Framework ;
73
+ sh:property [
74
+ sh:path fit:title ;
75
+ sh:datatype xsd:string ;
76
+ sh:minCount 1 ;
77
+ sh:maxCount 1 ;
78
+ sh:name "title" ;
79
+ sh:description "Title of the engineering pathway" ;
80
+ ] ;
81
+ sh:property [
82
+ sh:path fit:emojiIcon ;
83
+ sh:datatype xsd:string ;
84
+ sh:maxCount 1 ;
85
+ sh:name "emojiIcon" ;
86
+ sh:description "Emoji for visual representation" ;
87
+ ] ;
88
+ sh:property [
89
+ sh:path fit:tag ;
90
+ sh:datatype xsd:string ;
91
+ sh:maxCount 1 ;
92
+ sh:name "tag" ;
93
+ sh:description "Organization tag or identifier" ;
94
+ ] ;
95
+ sh:property [
96
+ sh:path fit:description ;
97
+ sh:datatype xsd:string ;
98
+ sh:maxCount 1 ;
99
+ sh:name "description" ;
100
+ sh:description "Description of the framework's purpose" ;
101
+ ] ;
102
+ sh:property [
103
+ sh:path fit:entityDefinitions ;
104
+ sh:node fit:EntityDefinitionShape ;
105
+ sh:name "entityDefinitions" ;
106
+ sh:description "Definitions for each entity type" ;
107
+ ] ;
108
+ sh:property [
109
+ sh:path fit:distribution ;
110
+ sh:node fit:DistributionShape ;
111
+ sh:maxCount 1 ;
112
+ sh:name "distribution" ;
113
+ sh:description "Distribution configuration for the framework" ;
114
+ ] .
115
+
116
+ # -----------------------------------------------------------------------------
117
+ # Distribution Shape
118
+ # -----------------------------------------------------------------------------
119
+
120
+ fit:DistributionShape a sh:NodeShape ;
121
+ sh:targetClass fit:Distribution ;
122
+ sh:property [
123
+ sh:path fit:siteUrl ;
124
+ sh:datatype xsd:anyURI ;
125
+ sh:minCount 1 ;
126
+ sh:maxCount 1 ;
127
+ sh:name "siteUrl" ;
128
+ sh:description "Base URL for the published static site" ;
129
+ ] .
130
+
131
+ # -----------------------------------------------------------------------------
132
+ # Entity Definition Shape
133
+ # -----------------------------------------------------------------------------
134
+
135
+ fit:EntityDefinitionShape a sh:NodeShape ;
136
+ sh:targetClass fit:EntityDefinition ;
137
+ sh:property [
138
+ sh:path fit:entityType ;
139
+ sh:datatype xsd:string ;
140
+ sh:minCount 1 ;
141
+ sh:maxCount 1 ;
142
+ sh:name "entityType" ;
143
+ sh:description "The type of entity this definition describes" ;
144
+ ] ;
145
+ sh:property [
146
+ sh:path fit:title ;
147
+ sh:datatype xsd:string ;
148
+ sh:minCount 1 ;
149
+ sh:maxCount 1 ;
150
+ sh:name "title" ;
151
+ sh:description "Display title for the entity" ;
152
+ ] ;
153
+ sh:property [
154
+ sh:path fit:emojiIcon ;
155
+ sh:datatype xsd:string ;
156
+ sh:maxCount 1 ;
157
+ sh:name "emojiIcon" ;
158
+ sh:description "Emoji for visual representation" ;
159
+ ] ;
160
+ sh:property [
161
+ sh:path fit:description ;
162
+ sh:datatype xsd:string ;
163
+ sh:maxCount 1 ;
164
+ sh:name "description" ;
165
+ sh:description "Description of the entity type" ;
166
+ ] .
@@ -0,0 +1,357 @@
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
+
7
+ # =============================================================================
8
+ # Levels Schema
9
+ # =============================================================================
10
+ # Career level defining expectations for skill proficiency, behaviour maturity,
11
+ # and scope of impact.
12
+ # =============================================================================
13
+
14
+ # -----------------------------------------------------------------------------
15
+ # Classes
16
+ # -----------------------------------------------------------------------------
17
+
18
+ fit:Level a rdfs:Class ;
19
+ rdfs:label "Level"@en ;
20
+ rdfs:comment "Career level defining expectations for skill proficiency, behaviour maturity, and scope of impact"@en .
21
+
22
+ fit:BaseSkillProficiencies a rdfs:Class ;
23
+ rdfs:label "Base Skill Proficiencies"@en ;
24
+ rdfs:comment "Base skill proficiencys by skill tier for a level"@en .
25
+
26
+ fit:LevelExpectations a rdfs:Class ;
27
+ rdfs:label "Level Expectations"@en ;
28
+ rdfs:comment "Expectations for impact, autonomy, influence, and complexity at a level level"@en .
29
+
30
+ fit:BreadthCriteria a rdfs:Class ;
31
+ rdfs:label "Breadth Criteria"@en ;
32
+ rdfs:comment "Minimum number of skills at each level for breadth (senior levels only)"@en .
33
+
34
+ # -----------------------------------------------------------------------------
35
+ # Properties
36
+ # -----------------------------------------------------------------------------
37
+
38
+ fit:professionalTitle a rdf:Property ;
39
+ rdfs:label "professionalTitle"@en ;
40
+ rdfs:comment "Title for professional/IC track"@en ;
41
+ rdfs:domain fit:Level ;
42
+ rdfs:range xsd:string .
43
+
44
+ fit:managementTitle a rdf:Property ;
45
+ rdfs:label "managementTitle"@en ;
46
+ rdfs:comment "Title for management track"@en ;
47
+ rdfs:domain fit:Level ;
48
+ rdfs:range xsd:string .
49
+
50
+ fit:typicalExperienceRange a rdf:Property ;
51
+ rdfs:label "typicalExperienceRange"@en ;
52
+ rdfs:comment "Expected years of experience range"@en ;
53
+ rdfs:domain fit:Level ;
54
+ rdfs:range xsd:string .
55
+
56
+ fit:ordinalRank a rdf:Property ;
57
+ rdfs:label "ordinalRank"@en ;
58
+ rdfs:comment "Numeric rank for ordering levels (1 = lowest)"@en ;
59
+ rdfs:domain fit:Level ;
60
+ rdfs:range xsd:integer .
61
+
62
+ fit:qualificationSummary a rdf:Property ;
63
+ rdfs:label "qualificationSummary"@en ;
64
+ rdfs:comment "Summary of qualifications expected at this level"@en ;
65
+ rdfs:domain fit:Level ;
66
+ rdfs:range xsd:string .
67
+
68
+ fit:baseSkillProficiencies a rdf:Property ;
69
+ rdfs:label "baseSkillProficiencies"@en ;
70
+ rdfs:comment "Base skill proficiencys by skill tier for this level"@en ;
71
+ rdfs:domain fit:Level ;
72
+ rdfs:range fit:BaseSkillProficiencies .
73
+
74
+ fit:baseBehaviourMaturity a rdf:Property ;
75
+ rdfs:label "baseBehaviourMaturity"@en ;
76
+ rdfs:comment "Base behaviour maturity for this level"@en ;
77
+ rdfs:domain fit:Level ;
78
+ rdfs:range fit:BehaviourMaturity .
79
+
80
+ fit:breadthCriteria a rdf:Property ;
81
+ rdfs:label "breadthCriteria"@en ;
82
+ rdfs:comment "Minimum number of skills at each level for breadth"@en ;
83
+ rdfs:domain fit:Level ;
84
+ rdfs:range fit:BreadthCriteria .
85
+
86
+ fit:expectations a rdf:Property ;
87
+ rdfs:label "expectations"@en ;
88
+ rdfs:comment "Expectations for impact, autonomy, influence, and complexity"@en ;
89
+ rdfs:domain fit:Level ;
90
+ rdfs:range fit:LevelExpectations .
91
+
92
+ # Base Skill Proficiency Properties
93
+ fit:primary a rdf:Property ;
94
+ rdfs:label "primary"@en ;
95
+ rdfs:comment "Level for core/primary skills"@en ;
96
+ rdfs:domain fit:BaseSkillProficiencies ;
97
+ rdfs:range fit:SkillProficiency .
98
+
99
+ fit:secondary a rdf:Property ;
100
+ rdfs:label "secondary"@en ;
101
+ rdfs:comment "Level for supporting/secondary skills"@en ;
102
+ rdfs:domain fit:BaseSkillProficiencies ;
103
+ rdfs:range fit:SkillProficiency .
104
+
105
+ fit:broad a rdf:Property ;
106
+ rdfs:label "broad"@en ;
107
+ rdfs:comment "Level for broad skills"@en ;
108
+ rdfs:domain fit:BaseSkillProficiencies ;
109
+ rdfs:range fit:SkillProficiency .
110
+
111
+ # Level Expectation Properties
112
+ fit:impactScope a rdf:Property ;
113
+ rdfs:label "impactScope"@en ;
114
+ rdfs:comment "Scope of impact expected at this level"@en ;
115
+ rdfs:domain fit:LevelExpectations ;
116
+ rdfs:range xsd:string .
117
+
118
+ fit:autonomyExpectation a rdf:Property ;
119
+ rdfs:label "autonomyExpectation"@en ;
120
+ rdfs:comment "Level of autonomy expected"@en ;
121
+ rdfs:domain fit:LevelExpectations ;
122
+ rdfs:range xsd:string .
123
+
124
+ fit:influenceScope a rdf:Property ;
125
+ rdfs:label "influenceScope"@en ;
126
+ rdfs:comment "Scope of influence"@en ;
127
+ rdfs:domain fit:LevelExpectations ;
128
+ rdfs:range xsd:string .
129
+
130
+ fit:complexityHandled a rdf:Property ;
131
+ rdfs:label "complexityHandled"@en ;
132
+ rdfs:comment "Complexity level the level should handle"@en ;
133
+ rdfs:domain fit:LevelExpectations ;
134
+ rdfs:range xsd:string .
135
+
136
+ # Breadth Criteria Properties
137
+ fit:awarenessCount a rdf:Property ;
138
+ rdfs:label "awarenessCount"@en ;
139
+ rdfs:domain fit:BreadthCriteria ;
140
+ rdfs:range xsd:integer .
141
+
142
+ fit:foundationalCount a rdf:Property ;
143
+ rdfs:label "foundationalCount"@en ;
144
+ rdfs:domain fit:BreadthCriteria ;
145
+ rdfs:range xsd:integer .
146
+
147
+ fit:workingCount a rdf:Property ;
148
+ rdfs:label "workingCount"@en ;
149
+ rdfs:domain fit:BreadthCriteria ;
150
+ rdfs:range xsd:integer .
151
+
152
+ fit:practitionerCount a rdf:Property ;
153
+ rdfs:label "practitionerCount"@en ;
154
+ rdfs:domain fit:BreadthCriteria ;
155
+ rdfs:range xsd:integer .
156
+
157
+ fit:expertCount a rdf:Property ;
158
+ rdfs:label "expertCount"@en ;
159
+ rdfs:domain fit:BreadthCriteria ;
160
+ rdfs:range xsd:integer .
161
+
162
+ # =============================================================================
163
+ # SHACL SHAPES
164
+ # =============================================================================
165
+
166
+ # -----------------------------------------------------------------------------
167
+ # Level Shape
168
+ # -----------------------------------------------------------------------------
169
+
170
+ fit:LevelShape a sh:NodeShape ;
171
+ sh:targetClass fit:Level ;
172
+ sh:property [
173
+ sh:path fit:id ;
174
+ sh:datatype xsd:string ;
175
+ sh:pattern "^[A-Z][A-Z0-9]*$" ;
176
+ sh:minCount 1 ;
177
+ sh:maxCount 1 ;
178
+ sh:name "id" ;
179
+ sh:description "Unique level identifier (e.g., L1, L2, L3)" ;
180
+ ] ;
181
+ sh:property [
182
+ sh:path fit:professionalTitle ;
183
+ sh:datatype xsd:string ;
184
+ sh:minCount 1 ;
185
+ sh:maxCount 1 ;
186
+ sh:name "professionalTitle" ;
187
+ sh:description "Title for professional/IC track" ;
188
+ ] ;
189
+ sh:property [
190
+ sh:path fit:managementTitle ;
191
+ sh:datatype xsd:string ;
192
+ sh:minCount 1 ;
193
+ sh:maxCount 1 ;
194
+ sh:name "managementTitle" ;
195
+ sh:description "Title for management track" ;
196
+ ] ;
197
+ sh:property [
198
+ sh:path fit:typicalExperienceRange ;
199
+ sh:datatype xsd:string ;
200
+ sh:maxCount 1 ;
201
+ sh:name "typicalExperienceRange" ;
202
+ sh:description "Expected years of experience range" ;
203
+ ] ;
204
+ sh:property [
205
+ sh:path fit:ordinalRank ;
206
+ sh:datatype xsd:integer ;
207
+ sh:minInclusive 1 ;
208
+ sh:minCount 1 ;
209
+ sh:maxCount 1 ;
210
+ sh:name "ordinalRank" ;
211
+ sh:description "Numeric rank for ordering levels (1 = lowest)" ;
212
+ ] ;
213
+ sh:property [
214
+ sh:path fit:qualificationSummary ;
215
+ sh:datatype xsd:string ;
216
+ sh:maxCount 1 ;
217
+ sh:name "qualificationSummary" ;
218
+ sh:description "Summary of qualifications expected at this level" ;
219
+ ] ;
220
+ sh:property [
221
+ sh:path fit:baseSkillProficiencies ;
222
+ sh:node fit:BaseSkillProficienciesShape ;
223
+ sh:minCount 1 ;
224
+ sh:maxCount 1 ;
225
+ sh:name "baseSkillProficiencies" ;
226
+ sh:description "Base skill proficiencys by skill tier for this level" ;
227
+ ] ;
228
+ sh:property [
229
+ sh:path fit:baseBehaviourMaturity ;
230
+ sh:in ( fit:emerging fit:developing fit:practicing fit:role_modeling fit:exemplifying ) ;
231
+ sh:minCount 1 ;
232
+ sh:maxCount 1 ;
233
+ sh:name "baseBehaviourMaturity" ;
234
+ sh:description "Base behaviour maturity for this level" ;
235
+ ] ;
236
+ sh:property [
237
+ sh:path fit:breadthCriteria ;
238
+ sh:node fit:BreadthCriteriaShape ;
239
+ sh:maxCount 1 ;
240
+ sh:name "breadthCriteria" ;
241
+ sh:description "Minimum number of skills at each level for breadth" ;
242
+ ] ;
243
+ sh:property [
244
+ sh:path fit:expectations ;
245
+ sh:node fit:LevelExpectationsShape ;
246
+ sh:maxCount 1 ;
247
+ sh:name "expectations" ;
248
+ sh:description "Expectations for impact, autonomy, influence, and complexity" ;
249
+ ] .
250
+
251
+ # -----------------------------------------------------------------------------
252
+ # Base Skill Proficiencies Shape
253
+ # -----------------------------------------------------------------------------
254
+
255
+ fit:BaseSkillProficienciesShape a sh:NodeShape ;
256
+ sh:targetClass fit:BaseSkillProficiencies ;
257
+ sh:property [
258
+ sh:path fit:primary ;
259
+ sh:in ( fit:awareness fit:foundational fit:working fit:practitioner fit:expert ) ;
260
+ sh:minCount 1 ;
261
+ sh:maxCount 1 ;
262
+ sh:name "primary" ;
263
+ sh:description "Level for core/primary skills" ;
264
+ ] ;
265
+ sh:property [
266
+ sh:path fit:secondary ;
267
+ sh:in ( fit:awareness fit:foundational fit:working fit:practitioner fit:expert ) ;
268
+ sh:minCount 1 ;
269
+ sh:maxCount 1 ;
270
+ sh:name "secondary" ;
271
+ sh:description "Level for supporting/secondary skills" ;
272
+ ] ;
273
+ sh:property [
274
+ sh:path fit:broad ;
275
+ sh:in ( fit:awareness fit:foundational fit:working fit:practitioner fit:expert ) ;
276
+ sh:minCount 1 ;
277
+ sh:maxCount 1 ;
278
+ sh:name "broad" ;
279
+ sh:description "Level for broad skills" ;
280
+ ] .
281
+
282
+ # -----------------------------------------------------------------------------
283
+ # Breadth Criteria Shape
284
+ # -----------------------------------------------------------------------------
285
+
286
+ fit:BreadthCriteriaShape a sh:NodeShape ;
287
+ sh:targetClass fit:BreadthCriteria ;
288
+ sh:property [
289
+ sh:path fit:awarenessCount ;
290
+ sh:datatype xsd:integer ;
291
+ sh:minInclusive 1 ;
292
+ sh:maxCount 1 ;
293
+ sh:name "awareness" ;
294
+ ] ;
295
+ sh:property [
296
+ sh:path fit:foundationalCount ;
297
+ sh:datatype xsd:integer ;
298
+ sh:minInclusive 1 ;
299
+ sh:maxCount 1 ;
300
+ sh:name "foundational" ;
301
+ ] ;
302
+ sh:property [
303
+ sh:path fit:workingCount ;
304
+ sh:datatype xsd:integer ;
305
+ sh:minInclusive 1 ;
306
+ sh:maxCount 1 ;
307
+ sh:name "working" ;
308
+ ] ;
309
+ sh:property [
310
+ sh:path fit:practitionerCount ;
311
+ sh:datatype xsd:integer ;
312
+ sh:minInclusive 1 ;
313
+ sh:maxCount 1 ;
314
+ sh:name "practitioner" ;
315
+ ] ;
316
+ sh:property [
317
+ sh:path fit:expertCount ;
318
+ sh:datatype xsd:integer ;
319
+ sh:minInclusive 1 ;
320
+ sh:maxCount 1 ;
321
+ sh:name "expert" ;
322
+ ] .
323
+
324
+ # -----------------------------------------------------------------------------
325
+ # Level Expectations Shape
326
+ # -----------------------------------------------------------------------------
327
+
328
+ fit:LevelExpectationsShape a sh:NodeShape ;
329
+ sh:targetClass fit:LevelExpectations ;
330
+ sh:property [
331
+ sh:path fit:impactScope ;
332
+ sh:datatype xsd:string ;
333
+ sh:maxCount 1 ;
334
+ sh:name "impactScope" ;
335
+ sh:description "Scope of impact expected at this level" ;
336
+ ] ;
337
+ sh:property [
338
+ sh:path fit:autonomyExpectation ;
339
+ sh:datatype xsd:string ;
340
+ sh:maxCount 1 ;
341
+ sh:name "autonomyExpectation" ;
342
+ sh:description "Level of autonomy expected" ;
343
+ ] ;
344
+ sh:property [
345
+ sh:path fit:influenceScope ;
346
+ sh:datatype xsd:string ;
347
+ sh:maxCount 1 ;
348
+ sh:name "influenceScope" ;
349
+ sh:description "Scope of influence" ;
350
+ ] ;
351
+ sh:property [
352
+ sh:path fit:complexityHandled ;
353
+ sh:datatype xsd:string ;
354
+ sh:maxCount 1 ;
355
+ sh:name "complexityHandled" ;
356
+ sh:description "Complexity level the level should handle" ;
357
+ ] .