adlnet / xAPI-Spec

The xAPI Specification describes communication about learner activity and experiences between technologies.
https://adlnet.gov/projects/xapi/
907 stars 404 forks source link

Unable to understand the difference between statement reference and sub statements #1042

Open SeemaSP opened 7 years ago

SeemaSP commented 7 years ago

Statement reference objects have the uuid of an existing statement object and substatements have statement objects. Both seem to referring to a statement object. My question is what is the purpose of each as I am unable to understand it reading from the spec.

fugu13 commented 7 years ago

StatementRef objects are for referring to actual statements—person voided statement(ref), person evaluated statement(ref), and contain only the ID, since that uniquely identifies the statement they're pointing to. SubStatements are for more abstract situations—statements that haven't happened yet, for example—so they don't have IDs (or a few other things), but they have the rest of the statement. Right now they aren't being used as extensively as StatementRefs, but they've been used some to describe goals. Person assigned (student passed test), for example.

SeemaSP commented 7 years ago

In the example Person assigned (student passed test), how can student passed test be an event that is about to happen when in the statement it has already happended(since its in past tense)?

fugu13 commented 7 years ago

Past tense in the natural language form of statements is just a convention; xAPI verbs don't have tense. The "passed" verb (same ID == same verb) could be given a display of "will pass" or "passes" or "needs to pass" in the SubStatement without changing the meaning

SeemaSP commented 7 years ago

So just to confirm whether I have understood or not: If I have a statement called: Rachel wrote a paper(assuming she has already written it) and then I make a statement like: Teacher read the paper written by Rachel. Then I use statement ref. But if I have a case where a teacher can assign a set of possible grades to a student(just like your example), then I make a statement: Teacher can assign(Student has passed) or (Student has failed). Is my understanding of sub statement correct?

garemoko commented 7 years ago

You can't have 'or' statements in sub-statements - it's a single statement.

The use case substatements were designed for is future plans. i.e. learner planned (learner will complete course).

I'm not aware of any actual usage of them in practice.

SeemaSP commented 7 years ago

By 'or' I meant to say two statements i.e. Teacher can assign(Student has passed) Teacher can assign(Student has failed) But after having checked out the spec even more, I have some what understood what it means now. But based on the examples given above, was my understanding correct?

brianjmiller commented 7 years ago

FWIW, http://experienceapi.com/deep-dive-object/