While comparing the existing inQuiry question and question set metadata with QuML specs we found a few gaps. Below are the properties having some differences from the QuML specs:
This design only talks about QuML compliance not about the multi-lingual
responseDeclaration
A "responseDeclaration"
contains information about the response to a question: When is it correct, and (optionally) how is it scored?
responseDeclaration.mapping
maxScore
Here are the differences for each question type:
Subjective Question:
Current Format | New format as per QuML Spec |
---|---|
"responseDeclaration": { "response1": { "type": "string" } } | Not applicable for subjective question. |
Multiple Choice Question:
Current Format | New format as per QuML Spec |
---|---|
"responseDeclaration": { "response1": { "maxScore": 1, "cardinality": "single", "type": "integer", "correctResponse": { "value": "0", "outcomes": { "SCORE": 1 } }, "mapping": [ { "response": 0, "outcomes": { "score": 1 } } ] } } | "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:
Current Format | New format as per QuML Spec |
---|---|
"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 } } ] } } | "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 } } |
Open Question:
For MMCQ, What would be the value of type? if correctResponse
has value as an array.
media
No changes are required from the editor and player side.
timeLimits
showWarningTimer
warningTime
(%)
The use of maxTime
is to show the timer on the QuML player and the use of warningTime
is to indicate the time remaining to complete the question set.
Current Format | New format as per QuML Spec |
---|---|
timeLimits: { "maxTime": "240", "warningTime": "60" } | { “timeLimits”: { “questionSet”: { // time limits for the question set and for any member sets “min”: <milli_seconds>, “max”: <milli_seconds> }, “question”: { // time limits for the questions in the question set “min”: <milli_seconds>, “max”: <milli_seconds> } } } |
Warning time will be removed from the editor and moved to the player side.
In order to achieve this, the player will introduce two new properties as part of the player configuration.
Name | Type | Default |
---|---|---|
warningTime (% ) | number | 75(%) |
showWarningTimer | boolean | true |
Warning time will not be present in
timeLimits
and will be calculated based on thewarningTime
config and theMax
timewarningTime
[number (%) ] to be introduced as part of the global config. Default value of Warning timer can be 75(%) of the max timeie, Warning timer will start showing once the user finishes 75% (default) of the max time
For eg, max time is 100 seconds, warning timer will start showing from the 75 seconds
showWarningTimer
[boolean] to be introduced as part of the global config - PlayerThis will decide if the
WarningTimer
has to be displayed or not
Here’s the sample player configuration.
{ 'context': { ... }, 'metadata': { ... }, 'config': { 'sideMenu': { 'enable': true, 'showShare': true, 'showDownload': true, 'showReplay': false, 'showExit': false, }, showWarningTimer: true, // true or false warningTime: 75 // [number (%) ] } }
(Note: Existing behavior of the player will be continuing as it is for the warning indicator)
maxScore
For question:
Currently, maxScore
property is getting stamped in two places at the question metadata level.
Current Format | New format as per QuML Spec |
---|---|
// Question metadata { maxScore: 1, "responseDeclaration": { "response1": { "maxScore": 1, "cardinality": "multiple", "type": "integer", "correctResponse": { "value": [1,0], "outcomes": { "SCORE": 1 } }, ..... } } } | { "outcomeDeclaration": { "maxScore": { "cardinality": "single", "type": "integer", "defaultValue": 1 } } } |
(Notes: Samagra is using this property while printing the question paper).
For Questionset:
Current Format | New format as per QuML Spec |
---|---|
// QuestionSet metadata { ... maxScore: 10, ... } | { "outcomeDeclaration": { "maxScore": { "cardinality": "single", "type": "integer", "defaultValue": 1 } } } |
Open Question:
For QuestionSet, What would be the value of cardinality?
(Need to be checked with Gauraw Kumar and Sajesh Kayyath )
answer
In the current implementation, We are not storing the answer property for MCQ and MMCQ. but as per QuML spec, An answer is mandatory for all types of questions.
SA – HTML
MCQ/MMCQ – “1,2” OR empty string (Need to be checked with Sajesh Kayyath and Gauraw Kumar
Subjective Question:
Current Format | New format as per QuML Spec |
---|---|
"answer": "<p>This is test data</p>" | No change. The editor and player will use the previous format. |
Multiple Choice Question:
Current Format | New format as per QuML Spec |
---|---|
Not Applicable | "answer": "1" // Value assign for data OR "answer": "india" // actual value. |
Multi-select MCQ:
Current Format | New format as per QuML Spec |
---|---|
Not Applicable | "answer": "1,2" // Value assign for data OR "answer": "India, US" // actual value. |
interactions
As part of the new implementation, We will be moving only the validation
field under the response1
property. No other change.
Current Format | New format as per QuML Spec |
---|---|
"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
Solutions are used to provide exemplary answers to questions aid candidates in-depth learning and enhance user’s understanding of the concepts. Multiple solutions can be configured for a question
This property supports the following types:
Image + Text
Current Format | New format as per QuML Spec |
---|---|
"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>" } ] | "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 ID |
2. Video
Current Format | New format as per QuML Spec |
---|---|
"solutions": [ { "id": "70c82bf5-9459-4c43-8897-0e58b7e1da62", "type": "video", "value": "do_2137930190247526401388" } ] | "solutions": { "70c82bf5-9459-4c43-8897-0e58b7e1da62": "<video width="400" #solutionVideoPlayer controls poster="https://dev.inquiry.sunbird.org"><source type="video/mp4" src="https://dev.inquiry.sunbird.org/assets/public/content/assets/do_2137930190247526401388/earth.mp4"><source type="video/webm" src="https://dev.inquiry.sunbird.org/assets/public/content/assets/do_2137930190247526401388/earth.mp4"></video>", } // Key = UUID / Solution ID |
Solutions HTML must contain only structural and media HTML elements. There should be interactions in a solution and hence no input HTML elements. QuML players should allow the users to view the solutions if the context in which the question is being used allows the users to view the solution.
feedback
Feedback is a JSON object in key-value format. The keys in the JSON are the identifiers of different feedbacks for the question and values are HTML snippet to be shown to the student. After the response processing, the QuML player renders the feedback HTML mapped to the value that is set to the FEEDBACK outcome variable.
Feedback:
Current Format | New format as per QuML Spec |
---|---|
// Not applicable | “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>” } |
hints (This has to be modified by an adopter)
Similar to feedback, Hints are shown to the candidates after response processing or when the student requests for hints.
Current Format | New format as per QuML Spec |
---|---|
// 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>” } |
For more information, please refer to this documentation: https://quml.sunbird.org/v1/question#hints
Only Shikshalokam
is used in the following format.
Question -
{ hints: { en : "string"}}
instructions (This has to be modified by an adopter)
Instructions on how to understand, attempt, or how the question will be evaluated.
Currently, instructions are being stored in the following format:
QuestionSet:
Current Format | New format as per QuML Spec |
---|---|
{ instructions: { default : "<html>...</html>" } } | instructions: : "<html>" |
Question:
Current Format | New format as per QuML Spec |
---|---|
{ instructions: { en : "<html>...</html>" } } //Only Shikshalokam is used the above format. // Not used by inQuiry | instructions: : "<html>" |
Instructions HTML also must contain only structural and media HTML elements. There should be interactions in a solution and hence no input HTML elements.
0 Comments