Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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

Currently, the response declaration is stored in the below format but there are two properties that are not allowed in it, which are: maxScore and  outcomes

"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:

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

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

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

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

For multi-select MCQ, responseDecleration and outcomeVariables will be in the below format:

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

We will store the maxScore inside the outcomeVariables property for new question creation using v2 API.

  • Without Data Migration (Recommended)

    • We will do these changes as part of the v2 API and will give the data in the above format.

    • The old quml-player mobile app will not be supported to play questions created using the v2 API.

    • If a user edits the old question using v2 API, We will store maxScore inside the outcomeVariables and remove the maxScore from the responseDeclaration.

  • With Migration (Not Recommended)

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

    • This solution is not recommended because, with the migration of old questions, the old mobile app will break.

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 for the maxScore property in the responseDeclartion.

media

Currently, Question metadata contains media in the below format:

"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:

"media": [{
   "id": "do_2136952965043896321346",
   "mediaType": "image",
   "src": "/assets/public/content/assets/do_2136952965043896321346/mountain.jpeg",
   "baseUrl": "https://dev.inquiry.sunbird.org"
}]

Proposed Solution for media

Editor Changes:
  • With migration

    • 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 are currently being stored in the question set metadata as below:

timeLimits: {
   "maxTime": "240",
   "warningTime": "60"
}

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.

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

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

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

timeLimits:
{
   questionset: {
           min: number,
           max: number,
           warn: number // update the QuML specs
           
   }
}

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

timeLimits:
{
   question: {
           min: number,
           max: number,
           warn: number // update the QuML specs
   }
}

If we want to store max and warn value but don't want to store min value we can store the data in the below format:

timeLimits:
{
   questionset: {
           min: null,
           max: 240,
           warn: 60
           
   }
}
Editor Changes:

Note: The timer field in the question set editor is part of the common form which is taking maxTime and warningTime as input.

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

  • 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 has timeLimits.questionset it will take the min and warn value from there, if timeLimits.questionset is undefined and timeLimits directly contains maxTime and warningTime it will take the value from there.

  • No labels