@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.
- package/LICENSE +201 -0
- package/README.md +58 -0
- package/bin/fit-schema.js +48 -21
- package/examples/behaviours/outcome_ownership.yaml +1 -1
- package/examples/behaviours/polymathic_knowledge.yaml +1 -1
- package/examples/behaviours/precise_communication.yaml +1 -1
- package/examples/behaviours/relentless_curiosity.yaml +1 -1
- package/examples/behaviours/systems_thinking.yaml +1 -1
- package/examples/capabilities/business.yaml +1 -1
- package/examples/capabilities/delivery.yaml +1 -1
- package/examples/capabilities/people.yaml +1 -1
- package/examples/capabilities/reliability.yaml +1 -1
- package/examples/capabilities/scale.yaml +1 -1
- package/examples/disciplines/data_engineering.yaml +1 -1
- package/examples/disciplines/engineering_management.yaml +1 -1
- package/examples/disciplines/software_engineering.yaml +1 -1
- package/examples/drivers.yaml +1 -1
- package/examples/framework.yaml +1 -1
- package/examples/grades.yaml +1 -1
- package/examples/questions/behaviours/outcome_ownership.yaml +1 -1
- package/examples/questions/behaviours/polymathic_knowledge.yaml +1 -1
- package/examples/questions/behaviours/precise_communication.yaml +1 -1
- package/examples/questions/behaviours/relentless_curiosity.yaml +1 -1
- package/examples/questions/behaviours/systems_thinking.yaml +1 -1
- package/examples/questions/skills/architecture_design.yaml +1 -1
- package/examples/questions/skills/cloud_platforms.yaml +1 -1
- package/examples/questions/skills/code_quality.yaml +1 -1
- package/examples/questions/skills/data_modeling.yaml +1 -1
- package/examples/questions/skills/devops.yaml +1 -1
- package/examples/questions/skills/full_stack_development.yaml +1 -1
- package/examples/questions/skills/sre_practices.yaml +1 -1
- package/examples/questions/skills/stakeholder_management.yaml +1 -1
- package/examples/questions/skills/team_collaboration.yaml +1 -1
- package/examples/questions/skills/technical_writing.yaml +1 -1
- package/examples/self-assessments.yaml +1 -1
- package/examples/stages.yaml +1 -1
- package/examples/tracks/platform.yaml +1 -1
- package/examples/tracks/sre.yaml +1 -1
- package/lib/schema-validation.js +1 -1
- package/package.json +5 -5
- package/schema/json/behaviour-questions.schema.json +1 -1
- package/schema/json/behaviour.schema.json +1 -1
- package/schema/json/capability.schema.json +1 -1
- package/schema/json/defs.schema.json +1 -1
- package/schema/json/discipline.schema.json +1 -1
- package/schema/json/drivers.schema.json +1 -1
- package/schema/json/framework.schema.json +1 -1
- package/schema/json/grades.schema.json +1 -1
- package/schema/json/self-assessments.schema.json +1 -1
- package/schema/json/skill-questions.schema.json +1 -1
- package/schema/json/stages.schema.json +1 -1
- package/schema/json/track.schema.json +1 -1
- package/schema/rdf/behaviour-questions.ttl +96 -0
- package/schema/rdf/behaviour.ttl +130 -0
- package/schema/rdf/capability.ttl +440 -0
- package/schema/rdf/defs.ttl +396 -0
- package/schema/rdf/discipline.ttl +336 -0
- package/schema/rdf/drivers.ttl +84 -0
- package/schema/rdf/framework.ttl +128 -0
- package/schema/rdf/grades.ttl +357 -0
- package/schema/rdf/self-assessments.ttl +147 -0
- package/schema/rdf/skill-questions.ttl +128 -0
- package/schema/rdf/stages.ttl +142 -0
- package/schema/rdf/track.ttl +231 -0
- package/schema/json/index.schema.json +0 -18
- package/schema/rdf/pathway.ttl +0 -2362
|
@@ -0,0 +1,336 @@
|
|
|
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
|
+
# Discipline Schema
|
|
9
|
+
# =============================================================================
|
|
10
|
+
# Engineering specialization that defines T-shaped skill profiles.
|
|
11
|
+
# =============================================================================
|
|
12
|
+
|
|
13
|
+
# -----------------------------------------------------------------------------
|
|
14
|
+
# Classes
|
|
15
|
+
# -----------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
fit:Discipline a rdfs:Class ;
|
|
18
|
+
rdfs:label "Discipline"@en ;
|
|
19
|
+
rdfs:comment "Engineering specialization that defines T-shaped skill profiles"@en .
|
|
20
|
+
|
|
21
|
+
fit:DisciplineHumanSection a rdfs:Class ;
|
|
22
|
+
rdfs:label "Discipline Human Section"@en ;
|
|
23
|
+
rdfs:comment "Human-specific content for a discipline"@en .
|
|
24
|
+
|
|
25
|
+
fit:DisciplineAgentSection a rdfs:Class ;
|
|
26
|
+
rdfs:label "Discipline Agent Section"@en ;
|
|
27
|
+
rdfs:comment "Agent-specific content for a discipline"@en .
|
|
28
|
+
|
|
29
|
+
fit:BehaviourModifier a rdfs:Class ;
|
|
30
|
+
rdfs:label "Behaviour Modifier"@en ;
|
|
31
|
+
rdfs:comment "Modifier applied to a behaviour by a discipline or track"@en .
|
|
32
|
+
|
|
33
|
+
# -----------------------------------------------------------------------------
|
|
34
|
+
# Properties
|
|
35
|
+
# -----------------------------------------------------------------------------
|
|
36
|
+
|
|
37
|
+
fit:specialization a rdf:Property ;
|
|
38
|
+
rdfs:label "specialization"@en ;
|
|
39
|
+
rdfs:comment "Name of the specialization (e.g., Software Engineering)"@en ;
|
|
40
|
+
rdfs:domain fit:Discipline ;
|
|
41
|
+
rdfs:range xsd:string .
|
|
42
|
+
|
|
43
|
+
fit:roleTitle a rdf:Property ;
|
|
44
|
+
rdfs:label "roleTitle"@en ;
|
|
45
|
+
rdfs:comment "Base role title (e.g., Software Engineer)"@en ;
|
|
46
|
+
rdfs:domain fit:Discipline ;
|
|
47
|
+
rdfs:range xsd:string .
|
|
48
|
+
|
|
49
|
+
fit:isProfessional a rdf:Property ;
|
|
50
|
+
rdfs:label "isProfessional"@en ;
|
|
51
|
+
rdfs:comment "If true, this is an IC/professional discipline (default true)"@en ;
|
|
52
|
+
rdfs:domain fit:Discipline ;
|
|
53
|
+
rdfs:range xsd:boolean .
|
|
54
|
+
|
|
55
|
+
fit:isManagement a rdf:Property ;
|
|
56
|
+
rdfs:label "isManagement"@en ;
|
|
57
|
+
rdfs:comment "If true, this is a management discipline (default false)"@en ;
|
|
58
|
+
rdfs:domain fit:Discipline ;
|
|
59
|
+
rdfs:range xsd:boolean .
|
|
60
|
+
|
|
61
|
+
fit:validTracks a rdf:Property ;
|
|
62
|
+
rdfs:label "validTracks"@en ;
|
|
63
|
+
rdfs:comment "REQUIRED. Explicit list of valid tracks. Empty array = trackless only."@en ;
|
|
64
|
+
rdfs:domain fit:Discipline ;
|
|
65
|
+
rdfs:range fit:Track .
|
|
66
|
+
|
|
67
|
+
fit:coreSkills a rdf:Property ;
|
|
68
|
+
rdfs:label "coreSkills"@en ;
|
|
69
|
+
rdfs:comment "Primary skills for deep expertise (references skill IDs)"@en ;
|
|
70
|
+
rdfs:domain fit:Discipline ;
|
|
71
|
+
rdfs:range fit:Skill .
|
|
72
|
+
|
|
73
|
+
fit:supportingSkills a rdf:Property ;
|
|
74
|
+
rdfs:label "supportingSkills"@en ;
|
|
75
|
+
rdfs:comment "Secondary skills for supporting capabilities (references skill IDs)"@en ;
|
|
76
|
+
rdfs:domain fit:Discipline ;
|
|
77
|
+
rdfs:range fit:Skill .
|
|
78
|
+
|
|
79
|
+
fit:broadSkills a rdf:Property ;
|
|
80
|
+
rdfs:label "broadSkills"@en ;
|
|
81
|
+
rdfs:comment "Skills for general awareness (references skill IDs)"@en ;
|
|
82
|
+
rdfs:domain fit:Discipline ;
|
|
83
|
+
rdfs:range fit:Skill .
|
|
84
|
+
|
|
85
|
+
fit:behaviourModifiers a rdf:Property ;
|
|
86
|
+
rdfs:label "behaviourModifiers"@en ;
|
|
87
|
+
rdfs:comment "Modifiers to behaviour expectations"@en .
|
|
88
|
+
|
|
89
|
+
fit:professionalRoleSummary a rdf:Property ;
|
|
90
|
+
rdfs:label "professionalRoleSummary"@en ;
|
|
91
|
+
rdfs:comment "Role summary for professional/IC track. May use {roleTitle} placeholder."@en ;
|
|
92
|
+
rdfs:domain fit:DisciplineHumanSection ;
|
|
93
|
+
rdfs:range xsd:string .
|
|
94
|
+
|
|
95
|
+
fit:managementRoleSummary a rdf:Property ;
|
|
96
|
+
rdfs:label "managementRoleSummary"@en ;
|
|
97
|
+
rdfs:comment "Role summary for management track. May use {specialization} placeholder."@en ;
|
|
98
|
+
rdfs:domain fit:DisciplineHumanSection ;
|
|
99
|
+
rdfs:range xsd:string .
|
|
100
|
+
|
|
101
|
+
# Agent Section Properties
|
|
102
|
+
fit:identity a rdf:Property ;
|
|
103
|
+
rdfs:label "identity"@en ;
|
|
104
|
+
rdfs:comment "Core identity statement for the agent"@en ;
|
|
105
|
+
rdfs:range xsd:string .
|
|
106
|
+
|
|
107
|
+
fit:priority a rdf:Property ;
|
|
108
|
+
rdfs:label "priority"@en ;
|
|
109
|
+
rdfs:comment "Priority guidance for the agent"@en ;
|
|
110
|
+
rdfs:range xsd:string .
|
|
111
|
+
|
|
112
|
+
fit:beforeMakingChanges a rdf:Property ;
|
|
113
|
+
rdfs:label "beforeMakingChanges"@en ;
|
|
114
|
+
rdfs:comment "Checklist items to consider before making changes"@en ;
|
|
115
|
+
rdfs:range xsd:string .
|
|
116
|
+
|
|
117
|
+
fit:delegation a rdf:Property ;
|
|
118
|
+
rdfs:label "delegation"@en ;
|
|
119
|
+
rdfs:comment "Guidance on when and how to delegate to subagents"@en ;
|
|
120
|
+
rdfs:range xsd:string .
|
|
121
|
+
|
|
122
|
+
# Modifier Properties
|
|
123
|
+
fit:targetBehaviour a rdf:Property ;
|
|
124
|
+
rdfs:label "targetBehaviour"@en ;
|
|
125
|
+
rdfs:comment "The behaviour this modifier applies to"@en ;
|
|
126
|
+
rdfs:domain fit:BehaviourModifier ;
|
|
127
|
+
rdfs:range fit:Behaviour .
|
|
128
|
+
|
|
129
|
+
fit:modifierValue a rdf:Property ;
|
|
130
|
+
rdfs:label "modifierValue"@en ;
|
|
131
|
+
rdfs:comment "The modifier value (-1, 0, or 1)"@en ;
|
|
132
|
+
rdfs:range xsd:integer .
|
|
133
|
+
|
|
134
|
+
# =============================================================================
|
|
135
|
+
# SHACL SHAPES
|
|
136
|
+
# =============================================================================
|
|
137
|
+
|
|
138
|
+
# -----------------------------------------------------------------------------
|
|
139
|
+
# Discipline Shape
|
|
140
|
+
# -----------------------------------------------------------------------------
|
|
141
|
+
|
|
142
|
+
fit:DisciplineShape a sh:NodeShape ;
|
|
143
|
+
sh:targetClass fit:Discipline ;
|
|
144
|
+
sh:property [
|
|
145
|
+
sh:path fit:id ;
|
|
146
|
+
sh:datatype xsd:string ;
|
|
147
|
+
sh:pattern "^[a-z][a-z0-9_]*$" ;
|
|
148
|
+
sh:maxCount 1 ;
|
|
149
|
+
sh:name "id" ;
|
|
150
|
+
sh:description "Discipline identifier (derived from filename)" ;
|
|
151
|
+
] ;
|
|
152
|
+
sh:property [
|
|
153
|
+
sh:path fit:specialization ;
|
|
154
|
+
sh:datatype xsd:string ;
|
|
155
|
+
sh:minCount 1 ;
|
|
156
|
+
sh:maxCount 1 ;
|
|
157
|
+
sh:name "specialization" ;
|
|
158
|
+
sh:description "Name of the specialization (e.g., Software Engineering)" ;
|
|
159
|
+
] ;
|
|
160
|
+
sh:property [
|
|
161
|
+
sh:path fit:roleTitle ;
|
|
162
|
+
sh:datatype xsd:string ;
|
|
163
|
+
sh:minCount 1 ;
|
|
164
|
+
sh:maxCount 1 ;
|
|
165
|
+
sh:name "roleTitle" ;
|
|
166
|
+
sh:description "Base role title (e.g., Software Engineer)" ;
|
|
167
|
+
] ;
|
|
168
|
+
sh:property [
|
|
169
|
+
sh:path fit:isProfessional ;
|
|
170
|
+
sh:datatype xsd:boolean ;
|
|
171
|
+
sh:maxCount 1 ;
|
|
172
|
+
sh:name "isProfessional" ;
|
|
173
|
+
sh:description "If true, this is an IC/professional discipline (default true)" ;
|
|
174
|
+
] ;
|
|
175
|
+
sh:property [
|
|
176
|
+
sh:path fit:isManagement ;
|
|
177
|
+
sh:datatype xsd:boolean ;
|
|
178
|
+
sh:maxCount 1 ;
|
|
179
|
+
sh:name "isManagement" ;
|
|
180
|
+
sh:description "If true, this is a management discipline (default false)" ;
|
|
181
|
+
] ;
|
|
182
|
+
sh:property [
|
|
183
|
+
sh:path fit:validTracks ;
|
|
184
|
+
sh:minCount 1 ;
|
|
185
|
+
sh:name "validTracks" ;
|
|
186
|
+
sh:description "REQUIRED. Valid track configurations. Use null for trackless (generalist)." ;
|
|
187
|
+
sh:or (
|
|
188
|
+
[ sh:datatype xsd:string ; sh:pattern "^[a-z][a-z0-9_]*$" ]
|
|
189
|
+
[ sh:nodeKind sh:Literal ; sh:hasValue "null" ]
|
|
190
|
+
) ;
|
|
191
|
+
] ;
|
|
192
|
+
sh:property [
|
|
193
|
+
sh:path fit:minGrade ;
|
|
194
|
+
sh:datatype xsd:string ;
|
|
195
|
+
sh:pattern "^[A-Z][A-Z0-9]*$" ;
|
|
196
|
+
sh:maxCount 1 ;
|
|
197
|
+
sh:name "minGrade" ;
|
|
198
|
+
sh:description "Minimum grade required for this discipline (grade ID)" ;
|
|
199
|
+
] ;
|
|
200
|
+
sh:property [
|
|
201
|
+
sh:path fit:description ;
|
|
202
|
+
sh:datatype xsd:string ;
|
|
203
|
+
sh:maxCount 1 ;
|
|
204
|
+
sh:name "description" ;
|
|
205
|
+
sh:description "Description of the discipline's focus" ;
|
|
206
|
+
] ;
|
|
207
|
+
sh:property [
|
|
208
|
+
sh:path fit:coreSkills ;
|
|
209
|
+
sh:datatype xsd:string ;
|
|
210
|
+
sh:pattern "^[a-z][a-z0-9_]*$" ;
|
|
211
|
+
sh:minCount 1 ;
|
|
212
|
+
sh:name "coreSkills" ;
|
|
213
|
+
sh:description "Primary skills for deep expertise (skill IDs)" ;
|
|
214
|
+
] ;
|
|
215
|
+
sh:property [
|
|
216
|
+
sh:path fit:supportingSkills ;
|
|
217
|
+
sh:datatype xsd:string ;
|
|
218
|
+
sh:pattern "^[a-z][a-z0-9_]*$" ;
|
|
219
|
+
sh:name "supportingSkills" ;
|
|
220
|
+
sh:description "Secondary skills for supporting capabilities (skill IDs)" ;
|
|
221
|
+
] ;
|
|
222
|
+
sh:property [
|
|
223
|
+
sh:path fit:broadSkills ;
|
|
224
|
+
sh:datatype xsd:string ;
|
|
225
|
+
sh:pattern "^[a-z][a-z0-9_]*$" ;
|
|
226
|
+
sh:name "broadSkills" ;
|
|
227
|
+
sh:description "Skills for general awareness (skill IDs)" ;
|
|
228
|
+
] ;
|
|
229
|
+
sh:property [
|
|
230
|
+
sh:path fit:behaviourModifiers ;
|
|
231
|
+
sh:node fit:BehaviourModifierShape ;
|
|
232
|
+
sh:name "behaviourModifiers" ;
|
|
233
|
+
sh:description "Modifiers to behaviour expectations" ;
|
|
234
|
+
] ;
|
|
235
|
+
sh:property [
|
|
236
|
+
sh:path fit:human ;
|
|
237
|
+
sh:node fit:DisciplineHumanSectionShape ;
|
|
238
|
+
sh:maxCount 1 ;
|
|
239
|
+
sh:name "human" ;
|
|
240
|
+
sh:description "Human-specific content" ;
|
|
241
|
+
] ;
|
|
242
|
+
sh:property [
|
|
243
|
+
sh:path fit:agent ;
|
|
244
|
+
sh:node fit:DisciplineAgentSectionShape ;
|
|
245
|
+
sh:maxCount 1 ;
|
|
246
|
+
sh:name "agent" ;
|
|
247
|
+
sh:description "Agent-specific content" ;
|
|
248
|
+
] .
|
|
249
|
+
|
|
250
|
+
# -----------------------------------------------------------------------------
|
|
251
|
+
# Discipline Human Section Shape
|
|
252
|
+
# -----------------------------------------------------------------------------
|
|
253
|
+
|
|
254
|
+
fit:DisciplineHumanSectionShape a sh:NodeShape ;
|
|
255
|
+
sh:targetClass fit:DisciplineHumanSection ;
|
|
256
|
+
sh:property [
|
|
257
|
+
sh:path fit:professionalRoleSummary ;
|
|
258
|
+
sh:datatype xsd:string ;
|
|
259
|
+
sh:maxCount 1 ;
|
|
260
|
+
sh:name "professionalRoleSummary" ;
|
|
261
|
+
sh:description "Role summary for professional/IC track" ;
|
|
262
|
+
] ;
|
|
263
|
+
sh:property [
|
|
264
|
+
sh:path fit:managementRoleSummary ;
|
|
265
|
+
sh:datatype xsd:string ;
|
|
266
|
+
sh:maxCount 1 ;
|
|
267
|
+
sh:name "managementRoleSummary" ;
|
|
268
|
+
sh:description "Role summary for management track" ;
|
|
269
|
+
] .
|
|
270
|
+
|
|
271
|
+
# -----------------------------------------------------------------------------
|
|
272
|
+
# Discipline Agent Section Shape
|
|
273
|
+
# -----------------------------------------------------------------------------
|
|
274
|
+
|
|
275
|
+
fit:DisciplineAgentSectionShape a sh:NodeShape ;
|
|
276
|
+
sh:targetClass fit:DisciplineAgentSection ;
|
|
277
|
+
sh:property [
|
|
278
|
+
sh:path fit:identity ;
|
|
279
|
+
sh:datatype xsd:string ;
|
|
280
|
+
sh:minCount 1 ;
|
|
281
|
+
sh:maxCount 1 ;
|
|
282
|
+
sh:name "identity" ;
|
|
283
|
+
sh:description "Core identity statement for the agent" ;
|
|
284
|
+
] ;
|
|
285
|
+
sh:property [
|
|
286
|
+
sh:path fit:priority ;
|
|
287
|
+
sh:datatype xsd:string ;
|
|
288
|
+
sh:maxCount 1 ;
|
|
289
|
+
sh:name "priority" ;
|
|
290
|
+
sh:description "Priority guidance for the agent" ;
|
|
291
|
+
] ;
|
|
292
|
+
sh:property [
|
|
293
|
+
sh:path fit:beforeMakingChanges ;
|
|
294
|
+
sh:datatype xsd:string ;
|
|
295
|
+
sh:name "beforeMakingChanges" ;
|
|
296
|
+
sh:description "Checklist items to consider before making changes" ;
|
|
297
|
+
] ;
|
|
298
|
+
sh:property [
|
|
299
|
+
sh:path fit:delegation ;
|
|
300
|
+
sh:datatype xsd:string ;
|
|
301
|
+
sh:maxCount 1 ;
|
|
302
|
+
sh:name "delegation" ;
|
|
303
|
+
sh:description "Guidance on when and how to delegate to subagents" ;
|
|
304
|
+
] ;
|
|
305
|
+
sh:property [
|
|
306
|
+
sh:path fit:constraints ;
|
|
307
|
+
sh:datatype xsd:string ;
|
|
308
|
+
sh:name "constraints" ;
|
|
309
|
+
sh:description "Things the agent should avoid or never do" ;
|
|
310
|
+
] .
|
|
311
|
+
|
|
312
|
+
# -----------------------------------------------------------------------------
|
|
313
|
+
# Behaviour Modifier Shape
|
|
314
|
+
# -----------------------------------------------------------------------------
|
|
315
|
+
|
|
316
|
+
fit:BehaviourModifierShape a sh:NodeShape ;
|
|
317
|
+
sh:targetClass fit:BehaviourModifier ;
|
|
318
|
+
sh:property [
|
|
319
|
+
sh:path fit:targetBehaviour ;
|
|
320
|
+
sh:datatype xsd:string ;
|
|
321
|
+
sh:pattern "^[a-z][a-z0-9_]*$" ;
|
|
322
|
+
sh:minCount 1 ;
|
|
323
|
+
sh:maxCount 1 ;
|
|
324
|
+
sh:name "targetBehaviour" ;
|
|
325
|
+
sh:description "The behaviour this modifier applies to" ;
|
|
326
|
+
] ;
|
|
327
|
+
sh:property [
|
|
328
|
+
sh:path fit:modifierValue ;
|
|
329
|
+
sh:datatype xsd:integer ;
|
|
330
|
+
sh:minInclusive -1 ;
|
|
331
|
+
sh:maxInclusive 1 ;
|
|
332
|
+
sh:minCount 1 ;
|
|
333
|
+
sh:maxCount 1 ;
|
|
334
|
+
sh:name "modifierValue" ;
|
|
335
|
+
sh:description "Modifier value (-1, 0, or 1)" ;
|
|
336
|
+
] .
|
|
@@ -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,128 @@
|
|
|
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
|
+
# -----------------------------------------------------------------------------
|
|
26
|
+
# Properties
|
|
27
|
+
# -----------------------------------------------------------------------------
|
|
28
|
+
|
|
29
|
+
fit:tag a rdf:Property ;
|
|
30
|
+
rdfs:label "tag"@en ;
|
|
31
|
+
rdfs:comment "Organization tag or identifier"@en ;
|
|
32
|
+
rdfs:domain fit:Framework ;
|
|
33
|
+
rdfs:range xsd:string .
|
|
34
|
+
|
|
35
|
+
fit:entityDefinitions a rdf:Property ;
|
|
36
|
+
rdfs:label "entityDefinitions"@en ;
|
|
37
|
+
rdfs:comment "Definitions for each entity type"@en ;
|
|
38
|
+
rdfs:domain fit:Framework ;
|
|
39
|
+
rdfs:range fit:EntityDefinition .
|
|
40
|
+
|
|
41
|
+
fit:entityType a rdf:Property ;
|
|
42
|
+
rdfs:label "entityType"@en ;
|
|
43
|
+
rdfs:comment "The type of entity this definition describes"@en ;
|
|
44
|
+
rdfs:domain fit:EntityDefinition ;
|
|
45
|
+
rdfs:range xsd:string .
|
|
46
|
+
|
|
47
|
+
# =============================================================================
|
|
48
|
+
# SHACL SHAPES
|
|
49
|
+
# =============================================================================
|
|
50
|
+
|
|
51
|
+
# -----------------------------------------------------------------------------
|
|
52
|
+
# Framework Shape
|
|
53
|
+
# -----------------------------------------------------------------------------
|
|
54
|
+
|
|
55
|
+
fit:FrameworkShape a sh:NodeShape ;
|
|
56
|
+
sh:targetClass fit:Framework ;
|
|
57
|
+
sh:property [
|
|
58
|
+
sh:path fit:title ;
|
|
59
|
+
sh:datatype xsd:string ;
|
|
60
|
+
sh:minCount 1 ;
|
|
61
|
+
sh:maxCount 1 ;
|
|
62
|
+
sh:name "title" ;
|
|
63
|
+
sh:description "Title of the engineering pathway" ;
|
|
64
|
+
] ;
|
|
65
|
+
sh:property [
|
|
66
|
+
sh:path fit:emojiIcon ;
|
|
67
|
+
sh:datatype xsd:string ;
|
|
68
|
+
sh:maxCount 1 ;
|
|
69
|
+
sh:name "emojiIcon" ;
|
|
70
|
+
sh:description "Emoji for visual representation" ;
|
|
71
|
+
] ;
|
|
72
|
+
sh:property [
|
|
73
|
+
sh:path fit:tag ;
|
|
74
|
+
sh:datatype xsd:string ;
|
|
75
|
+
sh:maxCount 1 ;
|
|
76
|
+
sh:name "tag" ;
|
|
77
|
+
sh:description "Organization tag or identifier" ;
|
|
78
|
+
] ;
|
|
79
|
+
sh:property [
|
|
80
|
+
sh:path fit:description ;
|
|
81
|
+
sh:datatype xsd:string ;
|
|
82
|
+
sh:maxCount 1 ;
|
|
83
|
+
sh:name "description" ;
|
|
84
|
+
sh:description "Description of the framework's purpose" ;
|
|
85
|
+
] ;
|
|
86
|
+
sh:property [
|
|
87
|
+
sh:path fit:entityDefinitions ;
|
|
88
|
+
sh:node fit:EntityDefinitionShape ;
|
|
89
|
+
sh:name "entityDefinitions" ;
|
|
90
|
+
sh:description "Definitions for each entity type" ;
|
|
91
|
+
] .
|
|
92
|
+
|
|
93
|
+
# -----------------------------------------------------------------------------
|
|
94
|
+
# Entity Definition Shape
|
|
95
|
+
# -----------------------------------------------------------------------------
|
|
96
|
+
|
|
97
|
+
fit:EntityDefinitionShape a sh:NodeShape ;
|
|
98
|
+
sh:targetClass fit:EntityDefinition ;
|
|
99
|
+
sh:property [
|
|
100
|
+
sh:path fit:entityType ;
|
|
101
|
+
sh:datatype xsd:string ;
|
|
102
|
+
sh:minCount 1 ;
|
|
103
|
+
sh:maxCount 1 ;
|
|
104
|
+
sh:name "entityType" ;
|
|
105
|
+
sh:description "The type of entity this definition describes" ;
|
|
106
|
+
] ;
|
|
107
|
+
sh:property [
|
|
108
|
+
sh:path fit:title ;
|
|
109
|
+
sh:datatype xsd:string ;
|
|
110
|
+
sh:minCount 1 ;
|
|
111
|
+
sh:maxCount 1 ;
|
|
112
|
+
sh:name "title" ;
|
|
113
|
+
sh:description "Display title for the entity" ;
|
|
114
|
+
] ;
|
|
115
|
+
sh:property [
|
|
116
|
+
sh:path fit:emojiIcon ;
|
|
117
|
+
sh:datatype xsd:string ;
|
|
118
|
+
sh:maxCount 1 ;
|
|
119
|
+
sh:name "emojiIcon" ;
|
|
120
|
+
sh:description "Emoji for visual representation" ;
|
|
121
|
+
] ;
|
|
122
|
+
sh:property [
|
|
123
|
+
sh:path fit:description ;
|
|
124
|
+
sh:datatype xsd:string ;
|
|
125
|
+
sh:maxCount 1 ;
|
|
126
|
+
sh:name "description" ;
|
|
127
|
+
sh:description "Description of the entity type" ;
|
|
128
|
+
] .
|