Background
While comparing the existing inQuiry question and question set metadata and schema with QuML schema we found few difference which is mentioned in the below sheet:
...
Question set properties which should have language code are:-
instructions, feedback, hints
Question properties which should have language code are:-
body, answer, hints, solutions, interactions , instructions ,feedback
Problem Statements
How to make existing metadata properties QuML complaints :-
Multi-lingual Language code support
Some of the properties are supposed to be stored in i18nData form i.e language code and it’s value
example :
en: ‘What is the capital of India?’
But currently with the editor we are able to store this data in string format
Simply storing it as: ‘What is the capital of India?’Currently we are storing some of the metadata of question and question set in a string format.
Example: Inside the question metadata we are storing body as:
Code Block |
---|
{
body: ‘What is the capital of India?’
} |
For making it’s storage in multi-lingual format it should be stored as:
Code Block |
---|
{
body: {
"en": "What is the capital of India?"
}
} |
The properties of question set which is to be stored in i18n form should have a language code format are:
instructions (text)
feedback (currently not in use)
hints (currently not in use)
The properties of question which is to be stored in i18n form should have a language code format are:
body (text or text+ image)
answer (text or text + image)
hints (text)
solutions (text or text+ image/video)
interactions (text or text+ image)
instructions (currently not in use)
feedback (currently not in use)
Solution For multi-Lingual Proposed Solution for language code support:
For adding instructions in question set with language code, we will can add a language drop down field in the question set form.
The default value of the drop down should be ‘English’ this default value and range of options will can be set from form configuration where we will can give default value as ‘English’ and other languages can be added to it in the configuration:
Code Block | ||
---|---|---|
| ||
{ "code": "languageCode", "name": "Language Code", "label": "Select Language for instruction", "placeholder": "Select Language", "description": "It's the Language of instruction", "dataType": "text", "inputType": "select", "output": "identifier", "default": "en", "range": [{ "identifier": "en", "label": "English" }, { "identifier": "hi", "label": "Hindi" } ], "editable": true, "required": false, "visible": true, "renderingHints": { "class": "sb-g-col-lg-1" } } |
Same config we will can have in question creation page to have a language drop down field and based on selection we can transform the data while question creation/ updateform the required format out of the text filled by the user.
timeLimits
Time limits is currently being stored in the question set metadata in below format:
Code Block | ||
---|---|---|
| ||
timeLimits: {
"maxTime": "360",
"warningTime": "120"
}
|
The use of maxTime is show the timer on questionset player and warningTime is used to show the timer in red color indicating your are left with only these few minutes to complete the questionset.
But as per the QuML schema it should be stored in this the below format:
Code Block | ||
---|---|---|
| ||
timeLimits: { "description": "Time limits for the complete set and/or for each question in the question set.", questionset: { min: number, max: number }, question: { min: number, max: number } } |
Proposed Solution for timeLimits
Timer feature is developed for We can set the limit for the complete question set and not for the individual question.We can store the time limits as:
Code Block | ||
---|---|---|
| ||
timeLimits: { questionset: { min: number, max: number } } |
If the timer feature is developed for question in future we have the time limit for each of the question we can store the timer data time limit to the question set metadata as:
Code Block | ||
---|---|---|
| ||
timeLimits: { question: { min: number, max: number } } |
Note: The above timer field in the question set editor is part of the common form so which is taking maxTime
and warningTime
as input.
We can keep on using the same configuration for the field in the form config we will be using configuration keeping maxTime
and warningTime
and in editor code we will can handle maxTime
with max
and warningTime
with min
.
responseDeclaration responseDeclaration
Response Declaration is currently stored as in below format but two properties are not allowed in it, which are: maxScore
and outcomes
Code Block |
---|
"responseDeclaration": { "response1": { "maxScore": 1, // maxScore is not allowed here "cardinality": "single", "type": "integer", "correctResponse": { "value": "0", "outcomes": { "SCORE": 1 } // outcome is not allowed here, only property ‘value’ is allowed }, "mapping": [] } } |
Proposed Solution for responseDeclaration
Instead of keeping maxScore
and outcomes
in responseDeclaration
we should can store it in responseProcessing
as below:
...
and responseProcessing
will have above format.For old question we do either
How to take care of old questions created by question set editor and getting consumed in QuML-Player?
With Migration
we can do the data migration for the old questions and update the question with above mentioned format, or making .
Without Data Migration
Make editor intelligent to check if the question have responseProcessing
. If responseProcessing
does not exists, update the question’s responseDeclartion
and responseProcessing
format on question update.
Open Questions for no data migration:-
Is updating the question format to be done on question set update( having n number of questions in question set) or to be updated on each question edit and update in Practise Question set?
How the editor and player should handle the old questions which are in review/live status?
Editor opened by reviewer in review mode: In this format is the editor/player is supposed to take care to pick the data from
responseDeclaration
and not fromresponseProcessing
What happens if reviewer tries to publish the question which is not having
responseProcessing
?
media
In Currently question metadata question contains media in this format:
Code Block |
---|
"media": [{ "id": "do_2136952965043896321346", "type": "image", //instead of ‘type’ it should be ‘mediaType’ "src": "/assets/public/content/assets/do_2136952965043896321346/mountain.jpeg", "baseUrl": "https://dev.inquiry.sunbird.org" }] |
New format to be used isAs per QuML specs it should be stored in the below format:
Code Block |
---|
"media": [{ "id": "do_2136952965043896321346", "mediaType": "image", "src": "/assets/public/content/assets/do_2136952965043896321346/mountain.jpeg", "baseUrl": "https://dev.inquiry.sunbird.org" }] |
Without migration
Open Question:
Can we do migration for old questions for this change of type
to mediaType
For the old questions we can check if type
is present in the media object, convert it to mediaType
while editing the question.
Open Questions
How can we change type
to mediaType
for live questions ?