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 Restore this Version View Page History

« Previous Version 11 Next »

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

"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

  1. Warning time will not be present in timeLimits and will be calculated based on the warningTime config and the Max time

  2. warningTime [number (%) ] to be introduced as part of the global config. Default value of Warning timer can be 75(%) of the max time

    1. ie, Warning timer will start showing once the user finishes 75% (default) of the max time

    2. For eg, max time is 100 seconds, warning timer will start showing from the 75 seconds

  3. showWarningTimer [boolean] to be introduced as part of the global config - Player

    1. This 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)

Editor Changes:

  • Warning timer will be removed from editor form and editor will not save the warning time value in timeLimits.

  • min time will be stored inside timeLimits as timeLimits.questionset.min

  • There will not be any field for taking user input for min time, editor will store the min time as 0 by default.

The timeLimts for the questionset will be stored in below format:

timeLimits:
{
  "description": "Time limits for the complete set and/or for each question in the question set.",
   questionset: {
           min: number,
           max: number
        }
}

Example:-

For storing max time( max ) as 5 minutes. It will be stored in below format.

  • 5 minutes is to be converted to milli-seconds to store the value.

  • 5 minutes = 5 * 60 seconds = 5 * 60 * 1000 = 300000 milli seconds

The default value of min time ( min ) will be stored as 0

timeLimits:
{
   questionset: {
           min: 0,
           max: 300000
        }
}

Open Question

Need confirmation if timeLimits is to be stored as seconds or milli-seconds ?

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.

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:

  1. 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

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>”
}

// key = UUID

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>”
}

// key = UUID

For more information, please refer to this documentation: https://quml.sunbird.org/v1/question#hints

Only Shikshalokam is using the following format.

  • Question - { hints: { en : "string"}}

  • Also, they are storing the hints for each option under the interactions property.
    Here is an example from Shikshalokam:

    interactions: {
      response1: {
        type: "choice",
        options: [
          {
            label: "<p>option 1</p>",
            value: 0,
            hints: {
              en: "test hint 1",
            },
          },
          {
            label: "<p>option 2</p>",
            value: 1,
            hints: {
              en: "test hint 2",
            },
          },
          {
            label: "<p>option 3</p>",
            value: 2,
            hints: {
              en: "test hint 3",
            },
          },
        ],
        autoCapture: "Yes",
        validation: {
          limit:{
            maxLength:100
          },
          required: "Yes",
          pattern: "dd/mm/yyyy",
        },
      },
    }

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 using 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.