-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sample xAPI Mapping #17
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @e0d for your proposal!
I have a few remarks of proposal for discussion about your mapping proposal
}, | ||
"_comment1": "The choicehint content feels most natural here in the activity definition rather than the response. It is packed into the user response in the current event format.", | ||
"extensions": { | ||
"https://openedx.org/xapi/choicehint": "<choicehint selected=\"true\">You are correct that an apple is a fruit because it is the fertilized ovary that comes from an apple tree and contains seeds.</choicehint>\n <choicehint selected=\"false\">Remember that an apple is also a fruit.</choicehint>\n" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that it is not a result information. Have you checked that no extensions already exists for this ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not see an extensions that seemed appropriate. I wonder if this data is just too unnatural to include in an xAPI statement.
@ormsbee do you have any specific recollection as to why this data was included in native Open edX events?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have a recollection of it, but my guess would be because it matters for later analysis whether a student got the problem without hints, whether the hints helped them to get the correct answer, and which hint did so.
"https://openedx.org/context/accept_language": "en;q=1.0, en;q=0.8", | ||
"https://openedx.org/context/event_source": "server", | ||
"https://openedx.org/context/asides": {}, | ||
"https://openedx.org/context/course_id": "course-v1:edX+DemoX+Demo_Course", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A best practice on xAPI is to use a parent in the contextActivities to describe from where the event was generated. Here this information is partially already contained in the parent. Some precision there is necessary. The use of extensions should be as minimal as possible
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suppose we must decide what is the appropriate parent for a specific question. Is it the course, sub-section, "assessment," something else?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ormsbee I'd love your thoughts on this. I'd also like to consider how this might change as ALUs are developed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it has to be the assessment/sequence/subsection the problem is contained in. Per the spec:
For example: a Statement about a quiz question would have the quiz as its parent Activity.
In a more ALU-centric world, I think this still works–problems will almost always be invoked as part of some larger thing.
}, | ||
"_comment1": "", | ||
"extensions": { | ||
"https://openedx.org/xapi/activity/attempts": 1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe could we use this existing extensions?
https://profiles.adlnet.gov/profile/9596a646-dd44-45fd-92e5-e8cd1a5c6d66/concepts/51e9646b-87d3-4b75-ad8b-eb3bbb866483
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The attempt-id extension seems appropriate for identifying a specific attempt. This field in the tracking logs represents the count of attempts that a user has made.
"https://openedx.org/context/asides": {}, | ||
"https://openedx.org/context/course_id": "course-v1:edX+DemoX+Demo_Course", | ||
"https://openedx.org/context/path": "/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@29c5cbd840324d94be8ba51db1864277/handler/xmodule_handler/problem_check", | ||
"https://openedx.org/context/org_id": "Open edx", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you suggesting using school or school-center instead of org? The extensions seems a bit of a hodge-podge at times. I'm not sure who AcrossX are and am not sure if there's a special meaning in the navy for "school-center."
I agree that we should use existing extensions where possible.
"cookies-enabled": true | ||
}, | ||
"http://id.tincanapi.com/extension/ip-address": "10.0.0.1", | ||
"https://openedx.org/context/referrer": "https://openedx.org/courses/course-v1:edX+DemoX+Demo_Course/courseware/d8a6192ade314473a78242dfeedfbf5b/330cf4d0c87b4bddbbd2eb4a466ff9f4/1?activate_block_id=block-v1%3AedX%2BDemoX%2BDemo_Course%2Btype%40vertical%2Bblock%40541e3597470c4c0d8ab11f6ac443fd5d", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"description": { | ||
"en-US": "A diagnostic assessment related to fruit literacy." | ||
}, | ||
"type": "http://adlnet.gov/expapi/activities/assessment" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@quitterie-lcs thoughts on whether http://adlnet.gov/expapi/activities/assessment or http://adlnet.gov/expapi/activities/cmi.interaction would be better here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would say that CMI Interaction is more appropriate as it is a more general interaction concept that is, in this situation, applied to an assessment
"object": { | ||
"objectType": "Activity", | ||
"_comment": "This URL is a placeholder utilizing the 'usage_key'. Should be instance specific, but perhaps transferable across domains?", | ||
"id": "https://openedx.org/block-v1:edX+DemoX+Demo_Course+type@problem+block@29c5cbd840324d94be8ba51db1864277", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we're using a URL here, it might be useful to prefix /xblock/
to the path. That has the advantage of namespacing, as well as mapping to a real URL that renders the XBlock in question, e.g. https://demo.openedx.overhang.io/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@303034da25524878a2e66fb57c91cf85
Opening this to facilitate a conversation about xAPI mapping of the problem_check event.