Data Model

语句 (Statement) 组成

  VisCa 的每一笔学习纪录称之为一笔语句 (Statement),由 JSON 组成,包含数个必要或非必要的属性,数位学习服务可视其需要自由组合,但最少须包含“人”、“动作”与“活动”三个属性。statement 中的字段无论是必要或选填都不允许空值。

语句 (Statement) 属性

  一个 xAPI statement 正好对应、记录一个学习活动事件,其中至少含有主词 (Actor)、动词 (Verb)、对象 (Object), 将其语句 (Statement) 后建立好后会储存至学习记录资料库 (LRS,Learning Record Store)。当使用者进行学习活动时, 活动提供者 (Activity Provider, AP) 负责送出这些语句 (Statement),并遵照设定 (Design Profile) 与处方 (Recipe) 规定,而其设计也将影响学习分析的成果。

属性 型态 简述 必要性
actor Object 主词。此语句 (Statement) 的拥有者。 必要
verb Object 动词。学生或学习小组之动作。 必要
object Object 对象。可以为活动 (Activity)、动作者 (Agent) 或者为另一个语句 (Statement) 物件。预设为活动 (Activity) 物件。 必要
result Object 此语句 (Statement) 之结果。可依照对应的动词 (Verb) 取得对应结果。 选择性
context Object 描绘此语句 (Statement) 之情境。 选择性
timestamp Date/Time 产生时间,请依照 ISO 8601 之格式。 选择性
authority Object 语句 (Statement) 拥有者 (例如:平台、厂商)。 选择性
attachments Array of attachment Objects 欲加之附件资讯。 选择性
version Version xAPI 版本号。 选择性
注意事项
  • 上述每一属性不可重复。
  • 一笔语句 (Statement) 至少要含有主词 (actor)、动词 (verb) 和对象 (object)。
  • 属性顺序可自由排列。
范例
{
    "id": "12345678-1234-5678-1234-567812345678",
    "actor":{
        "mbox":"mailto:xapi@adlnet.gov"
    },
    "verb":{
        "id":"http://adlnet.gov/expapi/verbs/created",
        "display":{
            "zh-CN":"created"
        }
    },
    "object":{
        "id":"http://example.adlnet.gov/xapi/example/activity"
    }
}


主词 (Actor)

  主词 (Actor) 指进行学习行为的人,可以是"个人 (Agent Object)" 或 "群体 (Group Object)",两种都必须有独特的识别代码,称为「Inverse Functional Identifier」。

Agent Object

Agent Object 可是是一个人或者一系统。

结构资讯
属性 型态 简述 必要性
objectType string 请设置为 Agent 选择性
name String 脚色之全名。 选择性
Inverse Functional Identifier,请参与此 必要
注意事项
  • Agent Object 必须要包含 Inverse Functional Identifier 中的 mbox。
  • Agent Object 最多只能含有一组 Inverse Functional Identifier。

Group Object

Group Object 可以视为 Agent Object 的集合,并分为 Anonymous Group 和 Identified Group 两类。

Anonymous Group

Anonymous Group 用于没有被明确定义的群组,例如:专案小组

结构资讯
属性 型态 简述 必要性
objectType String 请设置为 Group 必要
name String 群组名称。 选择性
member Array of Agent Objects 必要
注意事项
  • 组成时至少包括一个 member 物件。
  • Anonymous Group Object 不可被包含于另一 Member 物件中。
  • 不得包含 Inverse Functional Identifier 物件。

Identified Group

Identified Group 用于已被清楚 (唯一) 定义的群组。

结构资讯
属性 型态 简述 必要性
objectType String Group 必要
name String 群组名称。 选择性
member Array of Agent Objects 选择性
Inverse Functional Identifier,请参与此 必要
注意事项
  • 组成时必须要有 Inverse Functional Identifier 物件。
  • Identified Group Object 不可被包含于另一 Member 物件中。
  • 当 Identified Group 已使用 Agent identifiers 时,则不应该使用 Inverse Functional Identifier 物件。
  • Identified Group Object 可拥有 member 物件。

Inverse Functional Identifier

  Inverse Functional Identifier 只能是動作者 (Agent) 或 Identified Group的值。

结构资讯
属性 型态 简述 必要性
mbox mailto IRI 格式为 "mailto: 电子邮件" 必要
mbox_sha1sum String 将 mailto IRI 进行 SHA1 hash 选择性
openid URI 一个唯一的 openid 选择性
account Object 现有的使用者帐号信息。 选择性

Account Object

现有系统或服务中的使用者帐号。

结构资讯
属性 型态 简述 必要性
homePage IRL 此帐户之服务首页 必要
name String 帐户的 ID 必要
范例
{
  "objectType": "Agent",
  "account": {
      "homePage": "http://www.example.com",
      "name": "1625378"
  }
}


动词 (Verb)

  动词 (Verb) 指学习行为的“动作”,例如:“小明回答了一个问题”,其中的“回答”即为一个动词 (Verb)。动作必须选自 Verb vocabularies 注册 表 (registry),若需新增则应 CoP 提出申请。具体的动作定义有助于明确解读发生的学习行为,而过度宽泛的 动作定义会降低学习经历的有效性。

结构资讯
属性 型态 简述 必要性
id IRI 与动词 (Verb) 对应的定义。IRI 需要是可以被一般人所读取的,并包含其动词 (Verb) 之含意 必要
display Language Map 提供多语言之表示。 推荐
注意事项
  • display 属性必须是已先被 Verb IRI 所定义。
  • display 属性不能用来改变动词的意涵。
  • id IRI 需要是可以被一般人所读取,并且含有动词 (Verb) 的含意。
范例
{
    "id":"http://www.adlnet.gov/XAPIprofile/ran(travelled_a_distance)",
    "display":{
        "en-US":"ran",
        "es" : "corrió"
    }
}

对象 (Object)

  主词 (Actor) 与之发生的对象即是对象 (Object),对象 (Object) 可以是一个活动 (Activity)、一个操作者 (Agent)、一群操作者 (Group)、子学习纪录 (Sub-Statement)、参考纪录 (Statement Reference) 等。若没有特别指明,预设的对象则是活动 (Activity), 其识别码 id 将由活动提供者 (Activity Provider) 决定与维护,并且必须是 IRI,设定 (Design Profile) 或处方 (Recipe)。

Activity ObjectType

  活动 (Activity) 是最常发生的对象种类,它的含意相当广泛,可以是一个学习资源、一个网页、一堂课、一段影片、一次模拟飞行。 另外,必须确保每个活动 (Activity) 必须有独特识别码 (id,符合 IRI 规格),该 id 仅对应一个活动 (Activity),连到说明资讯 网页,并必须宣告其活动型态 (ActivityType) ,ActivityType 也是一种 Controlled Vocabulary (限制词),必须使用事先已注册 的语汇或由 VisCa 讨论同意而新增。

结构资讯
属性 型态 简述 必要性
objectType String 请设置为 Activity 必要
id IRI 一个唯一的 Activity Id 必要
definition Object 元数据 (Metadata) 选择性

definition

结构资讯
属性 型态 简述 必要性
name Language Map 该活动 (影片) 之名称 推荐
description Language Map 此活动之叙述 推荐
type IRI 活动类型 推荐
moreInfo IRL 提供更多关于此活动之讯息 选择性
Interaction properties,请参阅 Interaction Activities
extensions Object 根据需要使用其他属物件 选择性
注意事项
  • 每个活动 (Activity) 的 Id 必须要是唯一的。
  • 同样的 Activity Id 必须引用相同的活动 (Activity) 。

Interaction Activities

结构资讯
属性 型态 简述 必要性
interactionType String 例如:"cmi.interactions.n.type" 选择性
correctResponsesPattern An array of strings 例如:"cmi.interactions.n.correct_responses.n.pattern" 选择性
choices | scale | source | target | steps Array of interaction components 选择性
注意事项
  • Interaction Activities 至少要有一个栏位。

Interaction Components

结构资讯
属性 型态 简述 必要性
id String 必要
description Language Map 选择性

interactionType 支援种类如下:

interactionType component
choice, sequencing choices
likert scale
matching source, target
performance steps
true-false, fill-in, long-fill-in, numeric, other [No component lists defined]
注意事项
  • Interaction Components 中的 ID 不可为空。
  • 在 Interaction Components 阵列中,所有的 ID 必须是不同的。

ObjectType - Agent or Group

  规则内容与主词 (Actor) 相同。

ObjectType - Statement

  使用语句 (Statement) 作为对象 (Object) 有两种情况,一种是参考纪录 (Statement References),其引用已存在之语句 (Statement), 例如:评论;另一则是使用新的语句 (Statement),称为 Sub-Statement。

Statement References

  Statement References 是引用一已预先存在之语句 (Statement)。

结构资讯
属性 型态 简述 必要性
objectType String StatementRef 必要
id UUID Statement 的 UUID 必要
注意事项
  • objectType 值必须为 StatementRef。
范例
{
    "actor" : {
        "objectType": "Agent",
        "mbox":"mailto:test@example.com"
    },
    "verb" : {
        "id":"http://example.com/commented",
        "display": {
            "en-US":"commented"
        }
    },
    "object" : {
        "objectType":"StatementRef",
        "id":"8f87ccde-bb56-4c2e-ab83-44982ef22df0"
    },
    "result" : {
        "response" : "Wow, nice work!"
    }
}


Sub-Statements

  存在于另一语句 (Statement) 之下的语句 (Statement) 为 Sub-Statement。

注意事项
  • objectType 值必须为 SubStatement。
  • Sub-Statement 中不可拥有 id、version、authority 等属性。
  • Sub-Statement 中不能包含其他 Sub-Statement。
范例
{
    "actor": {
        "objectType": "Agent",
        "mbox":"mailto:test@example.com"
    },
    "verb" : {
        "id":"http://example.com/planned",
        "display":{
            "en-US":"planned"
        }
    },
    "object": {
        "objectType": "SubStatement",
        "actor" : {
            "objectType": "Agent",
            "mbox":"mailto:test@example.com"
        },
        "verb" : {
            "id":"http://example.com/visited",
            "display":{
                "en-US":"will visit"
            }
        },
        "object": {
            "id":"http://example.com/website",
            "definition": {
                "name" : {
                    "en-US":"Some Awesome Website"
                }
            }
        }
    }
}

Result (结果)

  此语句 (Statement) 的量测结果,包括是否完成、是否通过、原始得分、题目得分范围、所花费时间、学习者的选择与送出内容 ... 等等 ,还可自定义新的资料项目 (向 VisCa 申请)。

结构资讯
属性 型态 简述 必要性
score Object 动作者的分数信息 选择性
success Boolean 动作者此次的活动成功与否 选择性
completion Boolean 动作者此次的活动完成与否 选择性
response String 对于此活动的回应,须采固定格式 选择性
duration Formatted according to ISO 8601 with a precision of 0.01 seconds 表示此活动之持续时间 选择性
extensions Object 对应其他欲表达之元素 选择性

Score

  表示学习者所取得的活动分级结果

结构资讯
属性 型态 简述 必要性
scaled Decimal numbe,-1 到 1 之间 Cf. 'cmi.score.scaled' 于 SCORM 2004 4th Edition 推荐
raw Decimal numbe,最大最小值之间 原始数。Cf. 'cmi.score.raw' 选择性
min Decimal numbe 表示该次对象的最低分。Cf. 'cmi.score.min' 选择性
max Decimal numbe 表示该次对象的最高分。Cf. 'cmi.score.max' 选择性
注意事项
  • 若分数可以转换成百分比 (%) 则应该包括 scaled。
  • 若此 score 无法展示进度或者分数,建议改用 extensions 来展现。

情境 (Context)

  可添加一个情境至学习纪录,例如:使用的平台、小组成员、指导者、版本、语言、地点、... 等。在情境 (Context) 的 Attribute 下 有数个 Properties 可被用来记录许多相关资料,获得相当完整的情境资讯。外围情境资讯,例如:学习者的位置、环境因子 (温度、背景噪 音),可以自定义新的项目 (向 VisCa 申请)

结构资讯
属性 型态 简述 必要性
registration UUID 由学习纪录所定义之 registration 选择性
instructor Agent 如果教学者不是动作者时,请填写教学者 选择性
team Group 如果团队本身不是动作者时,请填写团队资讯 选择性
contextActivities contextActivities Object 学习活动情境之各类型信息。有效的类型:parent、grouping、category、other 选择性
revision String 此笔学习活动之修订纪录。没有特定格式 选择性
platform String 此笔活动纪录之使用平台 选择性
language String (RFC 5646) 此情境中使用之语言 选择性
statement Statement Reference 学习活动情境之参考纪录 选择性
extensions Object 其他的特殊情境元素。举例:飞行模拟器中有关的事物,高度、速度、风、飞行姿 & 态、GPS 选择性
注意事项
  • 当此笔学习纪录之对象 (Object) 为活动 (Activity) 时,才可使用 revision 属性。
  • 当此笔学习纪录之对象 (Object) 为活动 (Activity) 时,才可使用 platform 属性。
  • 若此情境没有指定特定语言则请勿使用 language 属性。
  • revision 属性主要是用来修订一些小错误(如:错字)。
  • 该活动若有重大改变,则请勿使用 revision 属性修订活动资讯。请使用新的 Activity id。

Registration Property

  学习者进行特定学习活动时的一个实例。

ContextActivities Property

  学习活动的类型。共有四种有效的情境类型:

  1. Parent:一个彼此之间有直接关的活动。如:进行小测验,此情境属于 Parent。
  2. Grouping:彼此间有间接关系的活动。如:某证照的一门课程,此 Grouping 情境为此门课程。
  3. Category:类别型活动。如:安娜试图进行考试,并且使用 CMI-5 profile 进行追踪。考试是活动,而 CMI-5 profile 则是 Category。
  4. Other:不属于上述之活动类型时,请使用此情境。例如:安娜阅读教科书为了生物学考试。此范例的活动是阅读教科书,而活动类型属于 Other。

  5. 注意事项
  6. 在 contextActivities 中,每个 Key 值必定是 parent、grouping、category、other。

  7. contextActivities 中的物件需以阵列形式存在,非单一物件。
范例
{
    "parent" : [
        {"id" : "http://example.adlnet.gov/xapi/example/test1"}
    ],
    "grouping" : [
        {"id" : "http://example.adlnet.gov/xapi/example/Algebra1"}
    ]
}

时间戳记 (Timestamp)

  学习经历发生的时间点。

注意事项
  • 必须依照 ISO 8601 格式。
  • 必须包含时区信息。
  • 当时间戳记 (Timestamp) 不是存在于 Sub-Statement 中时,范围必须是当下或过去时间。
  • 时间戳记 (Timestamp) 精度至毫秒 (保留毫秒)。
  • 时间戳记 (Timestamp) 可以为未来的某个时间点,作为表示一个学习计划的期限,并仅限存在于 Sub-Statement。

Authority

  此笔纪录的拥有者;叙述此笔学习纪录是由谁 (人、系统、应用程式) 产生。

范例
"authority": {
    "objectType" : "Group",
    "member": [
        {
            "account": {
                "homePage":"http://example.com/xAPI/OAuth/Token",
                "name":"oauth_consumer_x75db"
            }
        },
        {
            "mbox":"mailto:bob@example.com"
        }
    ]
}

附件 (Attachments)

  若此语句 (Statement) 有额外档案需要夹带时,则使用附件 (Attachments)。

结构资讯
属性 型态 简述 必要性
usageType IRI 定义此附件 必要
display Language Map 此附件的显示名称 必要
description Language Map 关于此附件的叙述 选择性
contentType Internet Media Type 附件内容的类型 必要
length Integer 附件资料的长度资讯 必要
sha2 String 将附件进行 SHA-2 (SHA-256、SHA-384、SHA-512)。不得使用 SHA-224。建议最小的 Key 值长度为 256 bits 必要
fileUrl IRL 一个可以被检视的附件资料 IRL 选择性
范例
{
    "actor": {
        "mbox": "mailto:sample.agent@example.com",
        "name": "Sample Agent",
        "objectType": "Agent"
    },
    "verb": {
        "id": "http://adlnet.gov/expapi/verbs/answered",
        "display": {
            "en-US": "answered"
        }
    },
    "object": {
        "id": "http://www.example.com/tincan/activities/multipart",
        "objectType": "Activity",
        "definition": {
            "name": {
                "en-US": "Multi Part Activity"
            },
            "description": {
                "en-US": "Multi Part Activity Description"
            }
        }
    },
    "attachments": [
        {
            "usageType": "http://example.com/attachment-usage/test",
            "display": {"en-US": "A test attachment"},
            "description": {"en-US": "A test attachment (description)" },
            "contentType": "text/plain; charset=ascii",
            "length": 27,
            "sha2": "495395e777cd98da653df9615d09c0fd6bb2f8d4788394cd53c56a3bfdcd848a"
        }
    ]
}

results matching ""

    No results matching ""