@forwardimpact/schema 0.4.0 → 0.6.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 (42) hide show
  1. package/bin/fit-schema.js +2 -2
  2. package/examples/capabilities/business.yaml +1 -1
  3. package/examples/capabilities/delivery.yaml +9 -7
  4. package/examples/capabilities/people.yaml +1 -1
  5. package/examples/capabilities/reliability.yaml +32 -11
  6. package/examples/capabilities/scale.yaml +1 -1
  7. package/examples/questions/behaviours/outcome_ownership.yaml +226 -49
  8. package/examples/questions/behaviours/polymathic_knowledge.yaml +273 -45
  9. package/examples/questions/behaviours/precise_communication.yaml +246 -52
  10. package/examples/questions/behaviours/relentless_curiosity.yaml +246 -48
  11. package/examples/questions/behaviours/systems_thinking.yaml +236 -50
  12. package/examples/questions/capabilities/business.yaml +107 -0
  13. package/examples/questions/capabilities/delivery.yaml +104 -0
  14. package/examples/questions/capabilities/people.yaml +104 -0
  15. package/examples/questions/capabilities/reliability.yaml +103 -0
  16. package/examples/questions/capabilities/scale.yaml +103 -0
  17. package/examples/questions/skills/architecture_design.yaml +102 -51
  18. package/examples/questions/skills/cloud_platforms.yaml +90 -44
  19. package/examples/questions/skills/code_quality.yaml +86 -45
  20. package/examples/questions/skills/data_modeling.yaml +93 -43
  21. package/examples/questions/skills/devops.yaml +91 -44
  22. package/examples/questions/skills/full_stack_development.yaml +93 -45
  23. package/examples/questions/skills/sre_practices.yaml +92 -41
  24. package/examples/questions/skills/stakeholder_management.yaml +97 -46
  25. package/examples/questions/skills/team_collaboration.yaml +87 -40
  26. package/examples/questions/skills/technical_writing.yaml +89 -40
  27. package/package.json +9 -9
  28. package/schema/json/behaviour-questions.schema.json +53 -26
  29. package/schema/json/capability-questions.schema.json +95 -0
  30. package/schema/json/capability.schema.json +2 -2
  31. package/schema/json/skill-questions.schema.json +34 -19
  32. package/schema/rdf/behaviour-questions.ttl +39 -7
  33. package/schema/rdf/capability.ttl +3 -3
  34. package/schema/rdf/defs.ttl +3 -3
  35. package/schema/rdf/skill-questions.ttl +28 -1
  36. package/{lib → src}/levels.js +37 -80
  37. package/{lib → src}/loader.js +9 -5
  38. package/{lib → src}/modifiers.js +3 -3
  39. package/{lib → src}/validation.js +74 -37
  40. /package/{lib → src}/index-generator.js +0 -0
  41. /package/{lib → src}/index.js +0 -0
  42. /package/{lib → src}/schema-validation.js +0 -0
@@ -1,42 +1,91 @@
1
1
  # yaml-language-server: $schema=https://www.forwardimpact.team/schema/json/skill-questions.schema.json
2
2
 
3
- awareness:
4
- - id: tw_aware_1
5
- text: How do you approach documenting your code and work?
6
- lookingFor:
7
- - Basic documentation habits
8
- - Understanding of documentation importance
9
- expectedDurationMinutes: 5
10
- foundational:
11
- - id: tw_found_1
12
- text: What makes a good README file? Walk me through what you'd include.
13
- lookingFor:
14
- - README best practices
15
- - Reader-centric documentation
16
- expectedDurationMinutes: 5
17
- working:
18
- - id: tw_work_1
19
- text:
20
- How do you write technical specifications that enable others to implement
21
- features?
22
- followUps:
23
- - How detailed do you go?
24
- lookingFor:
25
- - Spec writing skills
26
- - Communication of technical requirements
27
- expectedDurationMinutes: 8
28
- practitioner:
29
- - id: tw_pract_1
30
- text:
31
- How do you establish documentation standards and practices in your team?
32
- lookingFor:
33
- - Documentation leadership
34
- - Spec-driven development advocacy
35
- expectedDurationMinutes: 8
36
- expert:
37
- - id: tw_expert_1
38
- text: How do you create organizational documentation culture and systems?
39
- lookingFor:
40
- - Enterprise documentation strategy
41
- - Knowledge management systems
42
- expectedDurationMinutes: 10
3
+ professionalQuestions:
4
+ awareness:
5
+ - id: tw_pro_aware_1
6
+ text: How do you approach documenting your code and work?
7
+ lookingFor:
8
+ - Basic documentation habits
9
+ - Understanding of documentation importance
10
+ expectedDurationMinutes: 5
11
+ foundational:
12
+ - id: tw_pro_found_1
13
+ text: What makes a good README file? Walk me through what you'd include.
14
+ lookingFor:
15
+ - README best practices
16
+ - Reader-centric documentation
17
+ expectedDurationMinutes: 5
18
+ working:
19
+ - id: tw_pro_work_1
20
+ text:
21
+ How do you write technical specifications that enable others to
22
+ implement features?
23
+ followUps:
24
+ - How detailed do you go?
25
+ lookingFor:
26
+ - Spec writing skills
27
+ - Communication of technical requirements
28
+ expectedDurationMinutes: 8
29
+ practitioner:
30
+ - id: tw_pro_pract_1
31
+ text:
32
+ How do you establish documentation standards and practices in your team?
33
+ lookingFor:
34
+ - Documentation leadership
35
+ - Spec-driven development advocacy
36
+ expectedDurationMinutes: 8
37
+ expert:
38
+ - id: tw_pro_expert_1
39
+ text: How do you create organizational documentation culture and systems?
40
+ lookingFor:
41
+ - Enterprise documentation strategy
42
+ - Knowledge management systems
43
+ expectedDurationMinutes: 10
44
+
45
+ managementQuestions:
46
+ awareness:
47
+ - id: tw_mgmt_aware_1
48
+ text: How do you ensure your team documents their work appropriately?
49
+ lookingFor:
50
+ - Basic documentation expectations
51
+ - Team documentation awareness
52
+ expectedDurationMinutes: 5
53
+ foundational:
54
+ - id: tw_mgmt_found_1
55
+ text:
56
+ How do you set documentation expectations and standards for your team?
57
+ followUps:
58
+ - How do you handle resistance to documentation?
59
+ lookingFor:
60
+ - Documentation standard setting
61
+ - Team buy-in practices
62
+ expectedDurationMinutes: 5
63
+ working:
64
+ - id: tw_mgmt_work_1
65
+ text:
66
+ How do you balance documentation effort with delivery speed in your
67
+ team?
68
+ followUps:
69
+ - What is the minimum documentation you require?
70
+ lookingFor:
71
+ - Documentation vs velocity trade-offs
72
+ - Pragmatic documentation approach
73
+ expectedDurationMinutes: 8
74
+ practitioner:
75
+ - id: tw_mgmt_pract_1
76
+ text: How do you build a documentation culture within your team?
77
+ followUps:
78
+ - How do you keep documentation current?
79
+ lookingFor:
80
+ - Documentation culture development
81
+ - Knowledge management practices
82
+ expectedDurationMinutes: 8
83
+ expert:
84
+ - id: tw_mgmt_expert_1
85
+ text:
86
+ How do you drive documentation practices and knowledge sharing across
87
+ multiple teams?
88
+ lookingFor:
89
+ - Cross-team documentation leadership
90
+ - Organizational knowledge strategy
91
+ expectedDurationMinutes: 10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forwardimpact/schema",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Schema definitions and data loading for skills, behaviours, and role frameworks",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "homepage": "https://www.forwardimpact.team/schema",
12
12
  "type": "module",
13
- "main": "lib/index.js",
13
+ "main": "src/index.js",
14
14
  "bin": {
15
15
  "fit-schema": "./bin/fit-schema.js"
16
16
  },
@@ -21,16 +21,16 @@
21
21
  "files": [
22
22
  "bin/",
23
23
  "examples/",
24
- "lib/",
24
+ "src/",
25
25
  "schema/"
26
26
  ],
27
27
  "exports": {
28
- ".": "./lib/index.js",
29
- "./loader": "./lib/loader.js",
30
- "./validation": "./lib/validation.js",
31
- "./schema-validation": "./lib/schema-validation.js",
32
- "./index-generator": "./lib/index-generator.js",
33
- "./levels": "./lib/levels.js",
28
+ ".": "./src/index.js",
29
+ "./loader": "./src/loader.js",
30
+ "./validation": "./src/validation.js",
31
+ "./schema-validation": "./src/schema-validation.js",
32
+ "./index-generator": "./src/index-generator.js",
33
+ "./levels": "./src/levels.js",
34
34
  "./examples/*": "./examples/*",
35
35
  "./schema/json/*": "./schema/json/*",
36
36
  "./schema/rdf/*": "./schema/rdf/*"
@@ -2,35 +2,50 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://www.forwardimpact.team/schema/json/behaviour-questions.schema.json",
4
4
  "title": "Behaviour Interview Questions",
5
- "description": "Interview questions for a behaviour, organized by maturity level",
5
+ "description": "Stakeholder simulation interview questions for a behaviour, organized by role type (professional/management) and maturity level. Each question presents a realistic stakeholder scenario to assess behavioural maturity.",
6
6
  "type": "object",
7
7
  "properties": {
8
- "emerging": {
9
- "type": "array",
10
- "items": { "$ref": "#/$defs/question" }
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/maturityQuestions"
11
11
  },
12
- "developing": {
13
- "type": "array",
14
- "items": { "$ref": "#/$defs/question" }
15
- },
16
- "practicing": {
17
- "type": "array",
18
- "items": { "$ref": "#/$defs/question" }
19
- },
20
- "role_modeling": {
21
- "type": "array",
22
- "items": { "$ref": "#/$defs/question" }
23
- },
24
- "exemplifying": {
25
- "type": "array",
26
- "items": { "$ref": "#/$defs/question" }
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/maturityQuestions"
27
15
  }
28
16
  },
29
17
  "additionalProperties": false,
30
18
  "$defs": {
19
+ "maturityQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by behaviour maturity level",
22
+ "properties": {
23
+ "emerging": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "developing": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "practicing": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "role_modeling": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "exemplifying": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
31
46
  "question": {
32
47
  "type": "object",
33
- "required": ["id", "text", "lookingFor"],
48
+ "required": ["id", "text", "lookingFor", "simulationPrompts"],
34
49
  "properties": {
35
50
  "id": {
36
51
  "type": "string",
@@ -39,20 +54,32 @@
39
54
  },
40
55
  "text": {
41
56
  "type": "string",
42
- "maxLength": 150,
43
- "description": "The question text (second person, under 150 characters)"
57
+ "maxLength": 300,
58
+ "description": "The stakeholder scenario (second person, sets up a realistic situation)"
59
+ },
60
+ "context": {
61
+ "type": "string",
62
+ "description": "Additional context to set up the simulation scenario"
63
+ },
64
+ "simulationPrompts": {
65
+ "type": "array",
66
+ "description": "3-5 guiding prompts to steer the simulation and probe the candidate's behaviour",
67
+ "minItems": 2,
68
+ "maxItems": 5,
69
+ "items": { "type": "string" }
44
70
  },
45
71
  "lookingFor": {
46
72
  "type": "array",
47
- "description": "2-4 bullet points of good answer indicators",
48
- "minItems": 1,
73
+ "description": "2-4 indicators of strong behavioural response",
74
+ "minItems": 2,
49
75
  "maxItems": 4,
50
76
  "items": { "type": "string" }
51
77
  },
52
78
  "expectedDurationMinutes": {
53
79
  "type": "integer",
54
- "minimum": 1,
55
- "description": "Expected duration in minutes (default: 5 for emerging/developing, 8-10 for higher)"
80
+ "minimum": 10,
81
+ "default": 20,
82
+ "description": "Expected duration in minutes (default: 20 for stakeholder simulation)"
56
83
  },
57
84
  "followUps": {
58
85
  "type": "array",
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://www.forwardimpact.team/schema/json/capability-questions.schema.json",
4
+ "title": "Capability Decomposition Questions",
5
+ "description": "Decomposition interview questions for a capability, organized by role type (professional/management) and level. Inspired by Palantir's decomposition interview technique.",
6
+ "type": "object",
7
+ "properties": {
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/levelQuestions"
11
+ },
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/levelQuestions"
15
+ }
16
+ },
17
+ "additionalProperties": false,
18
+ "$defs": {
19
+ "levelQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by capability level",
22
+ "properties": {
23
+ "awareness": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "foundational": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "working": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "practitioner": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "expert": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
46
+ "question": {
47
+ "type": "object",
48
+ "required": ["id", "text", "lookingFor", "decompositionPrompts"],
49
+ "properties": {
50
+ "id": {
51
+ "type": "string",
52
+ "pattern": "^[a-z][a-z0-9_]*$",
53
+ "description": "Unique question identifier (format: {capability_abbrev}_{level_abbrev}_{number})"
54
+ },
55
+ "text": {
56
+ "type": "string",
57
+ "maxLength": 200,
58
+ "description": "The problem statement or scenario (second person, open-ended)"
59
+ },
60
+ "context": {
61
+ "type": "string",
62
+ "description": "Optional additional context to set up the scenario"
63
+ },
64
+ "decompositionPrompts": {
65
+ "type": "array",
66
+ "description": "3-5 guiding questions to help the candidate structure their thinking",
67
+ "minItems": 2,
68
+ "maxItems": 5,
69
+ "items": { "type": "string" }
70
+ },
71
+ "lookingFor": {
72
+ "type": "array",
73
+ "description": "2-4 indicators of a strong decomposition approach",
74
+ "minItems": 2,
75
+ "maxItems": 4,
76
+ "items": { "type": "string" }
77
+ },
78
+ "expectedDurationMinutes": {
79
+ "type": "integer",
80
+ "minimum": 5,
81
+ "default": 15,
82
+ "description": "Expected duration in minutes (default: 15 for decomposition)"
83
+ },
84
+ "followUps": {
85
+ "type": "array",
86
+ "description": "1-3 probing questions for deeper exploration",
87
+ "minItems": 1,
88
+ "maxItems": 3,
89
+ "items": { "type": "string" }
90
+ }
91
+ },
92
+ "additionalProperties": false
93
+ }
94
+ }
95
+ }
@@ -19,10 +19,10 @@
19
19
  "type": "string",
20
20
  "description": "Emoji for visual representation"
21
21
  },
22
- "displayOrder": {
22
+ "ordinalRank": {
23
23
  "type": "integer",
24
24
  "minimum": 1,
25
- "description": "Order for display in UI"
25
+ "description": "Numeric rank for ordering capabilities (1 = first)"
26
26
  },
27
27
  "description": {
28
28
  "type": "string",
@@ -2,32 +2,47 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://www.forwardimpact.team/schema/json/skill-questions.schema.json",
4
4
  "title": "Skill Interview Questions",
5
- "description": "Interview questions for a skill, organized by level",
5
+ "description": "Interview questions for a skill, organized by role type (professional/management) and level",
6
6
  "type": "object",
7
7
  "properties": {
8
- "awareness": {
9
- "type": "array",
10
- "items": { "$ref": "#/$defs/question" }
8
+ "professionalQuestions": {
9
+ "description": "Questions for professional/IC roles (e.g., engineers)",
10
+ "$ref": "#/$defs/levelQuestions"
11
11
  },
12
- "foundational": {
13
- "type": "array",
14
- "items": { "$ref": "#/$defs/question" }
15
- },
16
- "working": {
17
- "type": "array",
18
- "items": { "$ref": "#/$defs/question" }
19
- },
20
- "practitioner": {
21
- "type": "array",
22
- "items": { "$ref": "#/$defs/question" }
23
- },
24
- "expert": {
25
- "type": "array",
26
- "items": { "$ref": "#/$defs/question" }
12
+ "managementQuestions": {
13
+ "description": "Questions for management roles (e.g., engineering managers, product managers)",
14
+ "$ref": "#/$defs/levelQuestions"
27
15
  }
28
16
  },
29
17
  "additionalProperties": false,
30
18
  "$defs": {
19
+ "levelQuestions": {
20
+ "type": "object",
21
+ "description": "Questions organized by skill level",
22
+ "properties": {
23
+ "awareness": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/question" }
26
+ },
27
+ "foundational": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/question" }
30
+ },
31
+ "working": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/question" }
34
+ },
35
+ "practitioner": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/question" }
38
+ },
39
+ "expert": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/question" }
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
31
46
  "question": {
32
47
  "type": "object",
33
48
  "required": ["id", "text", "lookingFor"],
@@ -7,7 +7,10 @@
7
7
  # =============================================================================
8
8
  # Behaviour Questions Schema
9
9
  # =============================================================================
10
- # Interview questions for assessing behaviours.
10
+ # Stakeholder simulation interview questions for assessing behaviours,
11
+ # organized by role type (professional/management) and maturity level.
12
+ # Each question presents a realistic stakeholder scenario with simulation
13
+ # prompts to guide the interview panel.
11
14
  # =============================================================================
12
15
 
13
16
  # -----------------------------------------------------------------------------
@@ -26,6 +29,12 @@ fit:atMaturity a rdf:Property ;
26
29
  rdfs:domain fit:Question ;
27
30
  rdfs:range fit:BehaviourMaturity .
28
31
 
32
+ fit:simulationPrompts a rdf:Property ;
33
+ rdfs:label "simulationPrompts"@en ;
34
+ rdfs:comment "Guiding prompts to steer the stakeholder simulation and probe the candidate's behaviour"@en ;
35
+ rdfs:domain fit:Question ;
36
+ rdfs:range xsd:string .
37
+
29
38
  # =============================================================================
30
39
  # SHACL SHAPES
31
40
  # =============================================================================
@@ -48,27 +57,42 @@ fit:BehaviourQuestionShape a sh:NodeShape ;
48
57
  sh:property [
49
58
  sh:path fit:text ;
50
59
  sh:datatype xsd:string ;
51
- sh:maxLength 150 ;
60
+ sh:maxLength 300 ;
52
61
  sh:minCount 1 ;
53
62
  sh:maxCount 1 ;
54
63
  sh:name "text" ;
55
- sh:description "The question text (under 150 characters)" ;
64
+ sh:description "The stakeholder scenario (under 300 characters)" ;
65
+ ] ;
66
+ sh:property [
67
+ sh:path fit:context ;
68
+ sh:datatype xsd:string ;
69
+ sh:maxCount 1 ;
70
+ sh:name "context" ;
71
+ sh:description "Additional context to set up the simulation scenario" ;
72
+ ] ;
73
+ sh:property [
74
+ sh:path fit:simulationPrompts ;
75
+ sh:datatype xsd:string ;
76
+ sh:minCount 2 ;
77
+ sh:maxCount 5 ;
78
+ sh:name "simulationPrompts" ;
79
+ sh:description "3-5 guiding prompts to steer the simulation" ;
56
80
  ] ;
57
81
  sh:property [
58
82
  sh:path fit:lookingFor ;
59
83
  sh:datatype xsd:string ;
60
- sh:minCount 1 ;
84
+ sh:minCount 2 ;
61
85
  sh:maxCount 4 ;
62
86
  sh:name "lookingFor" ;
63
- sh:description "2-4 bullet points of good answer indicators" ;
87
+ sh:description "2-4 indicators of strong behavioural response" ;
64
88
  ] ;
65
89
  sh:property [
66
90
  sh:path fit:expectedDurationMinutes ;
67
91
  sh:datatype xsd:integer ;
68
- sh:minInclusive 1 ;
92
+ sh:minInclusive 10 ;
69
93
  sh:maxCount 1 ;
70
94
  sh:name "expectedDurationMinutes" ;
71
- sh:description "Expected duration in minutes" ;
95
+ sh:description "Expected duration in minutes (default: 20)" ;
72
96
  ] ;
73
97
  sh:property [
74
98
  sh:path fit:followUps ;
@@ -93,4 +117,12 @@ fit:BehaviourQuestionShape a sh:NodeShape ;
93
117
  sh:maxCount 1 ;
94
118
  sh:name "atMaturity" ;
95
119
  sh:description "The behaviour maturity this question is for" ;
120
+ ] ;
121
+ sh:property [
122
+ sh:path fit:forRoleType ;
123
+ sh:in ( fit:professional fit:management ) ;
124
+ sh:minCount 1 ;
125
+ sh:maxCount 1 ;
126
+ sh:name "forRoleType" ;
127
+ sh:description "The role type this question is for" ;
96
128
  ] .
@@ -197,12 +197,12 @@ fit:CapabilityShape a sh:NodeShape ;
197
197
  sh:description "Emoji for visual representation" ;
198
198
  ] ;
199
199
  sh:property [
200
- sh:path fit:displayOrder ;
200
+ sh:path fit:ordinalRank ;
201
201
  sh:datatype xsd:integer ;
202
202
  sh:minInclusive 1 ;
203
203
  sh:maxCount 1 ;
204
- sh:name "displayOrder" ;
205
- sh:description "Order for display in UI" ;
204
+ sh:name "ordinalRank" ;
205
+ sh:description "Numeric rank for ordering capabilities (1 = first)" ;
206
206
  ] ;
207
207
  sh:property [
208
208
  sh:path fit:description ;
@@ -134,9 +134,9 @@ fit:emojiIcon a rdf:Property ;
134
134
  rdfs:comment "Emoji for visual representation"@en ;
135
135
  rdfs:range xsd:string .
136
136
 
137
- fit:displayOrder a rdf:Property ;
138
- rdfs:label "displayOrder"@en ;
139
- rdfs:comment "Order for display in UI"@en ;
137
+ fit:ordinalRank a rdf:Property ;
138
+ rdfs:label "ordinalRank"@en ;
139
+ rdfs:comment "Numeric rank for ordering (1 = first)"@en ;
140
140
  rdfs:range xsd:integer .
141
141
 
142
142
  fit:ordinal a rdf:Property ;
@@ -7,7 +7,8 @@
7
7
  # =============================================================================
8
8
  # Skill Questions Schema
9
9
  # =============================================================================
10
- # Interview questions for assessing skills.
10
+ # Interview questions for assessing skills, organized by role type
11
+ # (professional/management) and level.
11
12
  # =============================================================================
12
13
 
13
14
  # -----------------------------------------------------------------------------
@@ -18,6 +19,18 @@ fit:Question a rdfs:Class ;
18
19
  rdfs:label "Question"@en ;
19
20
  rdfs:comment "Interview question for assessing skills or behaviours"@en .
20
21
 
22
+ fit:RoleType a rdfs:Class ;
23
+ rdfs:label "RoleType"@en ;
24
+ rdfs:comment "Type of role: professional (IC) or management"@en .
25
+
26
+ fit:professional a fit:RoleType ;
27
+ rdfs:label "professional"@en ;
28
+ rdfs:comment "Professional/individual contributor roles"@en .
29
+
30
+ fit:management a fit:RoleType ;
31
+ rdfs:label "management"@en ;
32
+ rdfs:comment "Management roles"@en .
33
+
21
34
  # -----------------------------------------------------------------------------
22
35
  # Properties
23
36
  # -----------------------------------------------------------------------------
@@ -58,6 +71,12 @@ fit:atLevel a rdf:Property ;
58
71
  rdfs:domain fit:Question ;
59
72
  rdfs:range fit:SkillLevel .
60
73
 
74
+ fit:forRoleType a rdf:Property ;
75
+ rdfs:label "forRoleType"@en ;
76
+ rdfs:comment "The role type this question is intended for (professional or management)"@en ;
77
+ rdfs:domain fit:Question ;
78
+ rdfs:range fit:RoleType .
79
+
61
80
  # =============================================================================
62
81
  # SHACL SHAPES
63
82
  # =============================================================================
@@ -125,4 +144,12 @@ fit:SkillQuestionShape a sh:NodeShape ;
125
144
  sh:maxCount 1 ;
126
145
  sh:name "atLevel" ;
127
146
  sh:description "The skill level this question is for" ;
147
+ ] ;
148
+ sh:property [
149
+ sh:path fit:forRoleType ;
150
+ sh:in ( fit:professional fit:management ) ;
151
+ sh:minCount 1 ;
152
+ sh:maxCount 1 ;
153
+ sh:name "forRoleType" ;
154
+ sh:description "The role type this question is for" ;
128
155
  ] .