Context
As part of release 6.0.0, inQuiry building block is releasing newer versions of it’s components; QuML Editor, QuML Player and Microservice.
Behaviour of the System post 6.0.0 release is explained below.
There are 2 major changes that is part of this release
Aligning inQuiry to latest QuML 1.1
Additional support for Multi Lingual
API is extended to support multiple languages and no changes to inQuiry editor / player
Component Versions vs QuML compatibility
Component | Component version (V1) | Component version (V2) |
---|---|---|
QuML Editor | QuML 1.0 | QuML 1.1 |
QuML Player | QuML 1.0 | QuML 1.1 |
inQuiry Microservice (API) | QuML 1.0 | QuML 1.1 QuML 1.0 for read only
|
Support for V1 components will be deprecated in 6 months post the release of 6.0.0
Component Versions vs API Version compatibility
Component | API (V1) | API (V2) |
---|---|---|
Editor (V1) | Allowed | Not permitted |
Player (V1) | Allowed | Not permitted |
Editor (V2) | Not permitted | Allowed |
Player (V2) | Not permitted | Allowed |
Behaviour of V2 Consumption APIs when requesting for Old or New Question / QuestionSet identifier
Scenario | QuestionSet Read | Question List |
---|---|---|
Old Question / QuestionSet identifier | Allowed temporarily transformed to QuML 1.1 | Allowed temporarily transformed to QuML 1.1 |
New Question / QuestionSet identifier | Allowed | Allowed |
Behaviour of V2 Create and Update APIs given the specific format of Question / QuestionSet
QuML version | QuestionSet Create | QuestionSet Update | Question Create | Question Update | Review | Publish |
---|---|---|---|---|---|---|
Questions / QuestionSets in QuML 1.0 format | Not permitted | Not permitted | Not permitted | Not permitted | Not permitted | Not permitted |
Questions / QuestionSets in QuML 1.1 format | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
To edit Questions / QuestionSets created in QuML 1.0 using the V2 system, the Question / QuestionSet should be migrated to QuML 1.1
V1 (Editor/Player/Microservice) will be deprecated in 6 months post the release of 6.0.0
Changes for Making V2 QuML compliant
While the below table is a summary of changes, the details can be referenced from the below confluence pages
Attribute Name | Change summary | QuML 1.0 format | QuML 1.1 format |
---|---|---|---|
responseDeclaration | Changes are as follow,
Changes are applicable to Multiple Choice Question and Multi-select MCQ Not applicable for subjective question, hence no changes | Multiple Choice Question "responseDeclaration": {
"response1": {
"maxScore": 1,
"cardinality": "single",
"type": "integer",
"correctResponse": {
"value": "0",
"outcomes": {
"SCORE": 1
}
},
"mapping": [
{
"response": 0,
"outcomes": {
"score": 1
}
}
]
}
}
Multi-select MCQ "responseDeclaration": {
"response1": {
"maxScore": 1,
"cardinality": "multiple",
"type": "integer",
"correctResponse": {
"value": [1,0],
"outcomes": {
"SCORE": 1
}
},
"mapping": [
{
"response": 1,
"outcomes": {
"score": 0.5
}
},
{
"response": 0,
"outcomes": {
"score": 0.5
}
}
]
}
} | Multiple Choice Question "responseDeclaration": {
"response1": {
"cardinality": "single",
"type": "integer",
"correctResponse": {
"value": 0
},
"mapping": [
{
"value": 0,
"score": 1
}
]
}
},
"outcomeDeclaration": {
"maxScore": {
"cardinality": "single",
"type": "integer",
"defaultValue": 1
}
}Multi-select MCQ "responseDeclaration": {
"response1": {
"cardinality": "multiple",
"type": "integer",
"correctResponse": {
"value": [1,0]
},
"mapping": [
{
"value": 1,
"score": 0.5
},
{
"value": 0,
"score": 0.5
}
]
}
},
"outcomeDeclaration": {
"maxScore": {
"cardinality": "multiple",
"type": "integer",
"defaultValue": 1
}
}
|
timeLimits | Changes are as follow,
| timeLimits: {
"maxTime": "240",
"warningTime": "60"
} | {
“timeLimits”: {
“questionSet”: { // time limits for the question set and for any member sets
“min”: <seconds>,
“max”: <seconds>
},
“question”: { // time limits for the questions in the question set
“min”: <seconds>,
“max”: <seconds>
}
}
} |
maxScore | Changes are as follow,
| Question {
maxScore: 1,
"responseDeclaration": {
"response1": {
"maxScore": 1,
.....
}
}
}
QuestionSet {
...
maxScore: 10,
...
}
| Question level {
"outcomeDeclaration": {
"maxScore": {
"cardinality": "single",
"type": "integer",
"defaultValue": 1
}
}
}
QuestionSet {
"outcomeDeclaration": {
"maxScore": {
"cardinality": "single",
"type": "integer",
"defaultValue": 1
}
}
} |
answer
| Changes are as follow,
| "answer": "<p>This is test data</p>"Only used for Subjective | SubjectiveSingle Language: anwser: '<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
</div>'Multi Language: answer: {
en: "<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
</div>",
hi: "<div class="anwser-container">
<div class="anwser-body">
<p>दिल्ली</p>
</div>
</div>"
}MCQSingle Language: anwser: `<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
</div>'Multi Language: answer: {
en: "<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
</div>",
hi: "<div class="anwser-container">
<div class="anwser-body">
<p>दिल्ली</p>
</div>
</div>"
}MMCQSingle Language: anwser: `<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
<div class="anwser-body">
<p>Bangalore</p>
</div>
</div>'Multi Language: answer: {
en: "<div class="anwser-container">
<div class="anwser-body">
<p>Delhi</p>
</div>
<div class="anwser-body">
<p>bangalore</p>
</div>
</div>",
hi: "<div class="anwser-container">
<div class="anwser-body">
<p>दिल्ली</p>
</div>
<div class="anwser-body">
<p>बैंगलोर</p>
</div>
</div>"
} |
interactions | Changes are as follows,
| "interactions": {
"response1": {
"type": "choice",
"options": [
{
"label": "<p>New Delhi</p>",
"value": 0
},
{
"label": "<p>Mumbai</p>",
"value": 1
}
]
},
"validation": {
"required": "Yes"
}
} | "interactions": {
"response1": {
"type": "choice",
"options": [
{
"label": "<p>New Delhi</p>",
"value": 0
},
{
"label": "<p>Mumbai</p>",
"value": 1
}
],
"validation": {
"required": "Yes"
}
}
} |
solutions | Changes are as follows,
| Image + Text "solutions": [
{
"id": "7015c7e4-461a-4032-b29e-fbb7e8155e44",
"type": "html",
"value": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>"
}
]Video "solutions": [
{
"id": "70c82bf5-9459-4c43-8897-0e58b7e1da62",
"type": "video",
"value": "do_2137930190247526401388"
}
] | Image + Text "solutions": {
"7015c7e4-461a-4032-b29e-fbb7e8155e44": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>",
}
// Key = UUID / Solution IDVideo "solutions": {
"70c82bf5-9459-4c43-8897-0e58b7e1da62": "<video data-asset-variable="do_2137930187513200641386" width="400" controls="" poster="/assets/public/content/assets/do_2137930188655902721387/gateway-of-india.jpg"> <source type="video/mp4" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> <source type="video/webm" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> </video>",
}
// Key = UUIDMulti Language {
"solutions": {
"solution_1": {
"en": "<div>...</div>",
"hi": "<div>...</div>"
},
"solution_2": {
"en": "<div>...</div>",
"hi": "<div>...</div>"
}
}
} |
feedback | Changes are as follows,
| Currently not used in inQuiry | “feedback”: {
“70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<h1>Well done!!!</h1>”,
“70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<h1>Better luck next time!!!</h1>”
“70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<h1>You need to work harder!!!</h1>”
}
// key = UUID
// Referenced from outcomeDeclaration
"outcomeDeclaration": {
"feedback": {
"cardinality": "single",
"type": "string",
"defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62"
}
}Multi Language {
"feedback": {
"feedback_1": {
"en": "<div>...</div>",
"hi": "<div>...</div>"
},
"feedback_2": {
"en": "<div>...</div>",
"hi": "<div>...</div>"
}
}
} |
hints | Changes are as follows,
| // Question Metadata
{
hints: {
en : "string"
}
}
| “hints”: {
“70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<HTML>...</HTML>”,
“70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<HTML>...</HTML>”
“70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<HTML>...</HTML>”
}
// key = UUID
// Referenced from outcomeDeclaration
"outcomeDeclaration": {
"hint": {
"cardinality": "single",
"type": "string",
"defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62"
}
}Multi Language {
"hints": {
"hint_1": "<div>...</div>",
"hint_2": {
"en": "<div>...</div>",
"hi": "<div>...</div>"
}
}
} |
instructions | Changes are as follows,
| Question {
instructions: {
en : "<html>...</html>"
}
}QuestionSet {
instructions: {
default : "<html>...</html>"
}
} | Question instructions: : "<html>"
QuestionSet instructions: : "<html>"
Multi Lingual {
instructions: {
en : "<html>...</html>"
}
} |
showSolutions | Changes are as follows,
| {
showSolutions: "Yes"
} | {
showSolutions: true
} |
showTimer | Changes are as follows,
| {
showTimer: "Yes"
} | {
showTimer: true
} |
showFeedback | Changes are as follows,
| {
showFeedback: "Yes"
} | {
showFeedback: true
} |
showHints | Changes are as follows,
| {
showHints: "Yes"
} | {
showHints: true
} |
bloomsLevel | Changes are as follows,
| bloomsLevel: "apply" | complexityLevel: ["apply"] |
media | Changes are as follows,
| No changes to the format | No changes to the format |