Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

Table of Contents
minLevel1
maxLevel7

Background

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:

Question metadata which has some differences from the QuML specs are:-

  • responseDeclaration

  • media

responseDeclaration

Editor Changes

Currently, the Response response declaration is stored in the below format but there are two properties that 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

Editor Changes:

Instead of keeping maxScore and outcomes in responseDeclaration we can store it in outcomeVariables as below:

Code Block
"outcomeVariables": {
       "maxScore": 1,
   }

we We will not store outcomes.score because maxScore and outcomes.score hold holds the same value.

For newly created question responseDecleration and outcomeVariables will be like this in the below format for single select MCQ:

Code Block
"responseDeclaration": {
    
  "response1": {
   
       "cardinality": "single",
    
      "type": "integer",
    
      "correctResponse": {
   
           "value": "0",
 
         },
    
      "mapping": []
   
   }
   },
 
 "outcomeVariables": {
       "maxScore": 1,
 
 }

and responseProcessing will have above format.

...

For multi-select MCQ, responseDecleration and outcomeVariables will be like this for multi select MCQin the below format:

Code Block
"responseDeclaration": {
  
    "response1": {
  
        "cardinality": "multiple",
           "type": "integer",
  
        "correctResponse": {
               "value": [0, 1],
           },
 
         "mapping": [{
   
              "response": 0,
   
              "outcomes": {
  
                 "score": 1
   
              }
   
            },
                {
   
              "response": 1,
   
              "outcomes": {
                    "score": 1
 
                }
                }
           ]
 
     }
 
 },
 
 "outcomeVariables": {
    
  "maxScore": 2,
  
}

...

  • With Migration

...

    • We can do the data migration for the old questions and update the question with the above-mentioned format.

  • Without Data Migration

    • For the new question creation

...

    • , We will store the maxScore inside the outcomeVariables property.

    • If the user edits the old question,

...

    • We will store the maxScore inside the outcomeVariables and remove the maxScore from the

...

    • responseDeclaration.

...

Player Changes:
  • The player will

...

  • check if the question

...

  • is having the outcomeVariables in the metadata of the question and what’s the maxScore value present in it

...

  • .

  • if the outcomeVariables property is

...

  • found then the player will

...

  • use it as is it.

  • If the question does not have the outcomeVariables property in the metadata then the player will look property in the responseDeclartion.

media

Currently question , Question metadata question contains media in this the below 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"
}]

As 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"
}]
Editor Changes:
  • With Migrationmigration

...

    • We can do the data migration for the old questions and update the question with the above-mentioned format.

  • Without migration

    • For the new question creation, we will store the media in a new format.

    • If the user edits the old question, we

...

    • will check if the type is present in the media object, convert it to mediaType while editing the question.

...

Player Changes:
  • The player will first check if the question media have mediaType property if not it will check in type property.

...

QuestionSet metadata which

...

has some differences from the QuML specs is:-

  • timeLimits

timeLimits

Time limits is are currently being stored in the question set metadata in as below format:

Code Block
languagejson
timeLimits: {
   "maxTime": "240",
   "warningTime": "60"
}

The use of maxTime is show showing the timer on questionset the QuML player and warningTime is used to show the timer in red color indicating your you are left with only these few minutes to complete the questionset.

...

But as per the QuML schema, it should be stored in the below format:

Code Block
languagejson
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

Editor Changes:

We can set the limit for the complete question set as:

Code Block
languagejson
timeLimits:
{
   questionset: {
           min: number,
           max: number,
           
   }
}

If we have the a time limit for each of the question questions we can store the time limit to the question set metadata

...

We can keep on using the same configuration for the field in the form configuration keeping maxTime and warningTimeand in the editor code we can handle maxTime with max and warningTime with min.

  • With Migration

    • we can do the data migration for the old questions and update the question with above mentioned format.

  • Without Data Migration

    • For the new question creation, we will store the timeLimits in a new format.

    • If the user edits the old question, we will check for the timeLimits if

...

    • it's present in an old format we will convert it to the new format on save.

...

Player Changes:

The player will first check if the question have has timeLimits.questionset it will take the min and max value for there, if timeLimits.questionset is undefined and timeLimits directly maxTime and warningTime it will take the value for there.

...