实现LTI-NRPS时JSON-LD定义与API返回内容的差异疑问
LTI-NRPS 两种JSON格式差异及相关疑问
我正在实现LTI Names and Role Provisioning Services(LTI-NRPS),该服务允许我的应用从学习管理系统(LMS)获取参与者列表。根据LTI-NRPS v2.0文档中「context membership」API的说明,调用后会返回一份简单JSON文档,我自行调用API得到的结果也与之一致:
{ "id" : "https://lms.example.com/sections/2923/memberships", "context": { "id": "2923-abc", "label": "CPS 435", "title": "CPS 435 Learning Analytics", }, "members" : [ { "status" : "Active", "name": "Jane Q. Public", "picture" : "https://platform.example.edu/jane.jpg", "given_name" : "Jane", "family_name" : "Doe", "middle_name" : "Marie", "email": "jane@platform.example.edu", "user_id" : "0ae836b9-7fc9-4060-006f-27b2066ac545", "lis_person_sourcedid": "59254-6782-12ab", "roles": [ "http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor" ] } ] }
但这个示例的标注为「Figure 1 Example of application/vnd.ims.lti-nrps.v2.membershipcontainer+json media type.」,我搜索该媒体类型后找到对应的LISMembershipContainer JSON Binding定义,其结构却大不相同:
{ "@context" : [ "http://purl.imsglobal.org/ctx/lis/v2/MembershipContainer", { "liss" : "http://purl.imsglobal.org/vocab/lis/v2/status#", "lism" : "http://purl.imsglobal.org/vocab/lis/v2/membership#" } ], "@type" : "Page", "@id" : "http://lms.example.com/sections/2923/memberships/?rlid=49566-rkk96", "nextPage" : "http://lms.example.com/sections/2923/memberships/?rlid=49566-rkk96&p=2", "differences" : "http://lms.example.com/sections/2923/memberships/?x=1422554502", "pageOf" : { "@type" : "LISMembershipContainer", "membershipSubject" : { "@type" : "Context", "contextId" : "2923-abc", "membership" : [ { "status" : "liss:Active", "member" : { "@type" : "LISPerson", "sourcedId" : "school.edu:user", "userId" : "0ae836b9-7fc9-4060-006f-27b2066ac545", "email" : "user@school.edu", "familyName" : "Public", "name" : "Jane Q. Public", "image" : "http://...", "givenName" : "Jane" }, "message" : [ { "message_type" : "basic-lti-launch-request", "lis_result_sourcedid" : "83873872987329873264783687634", "ext" : { "user_username" : "jpublic" }, "custom" : { "country" : "Canada", "user_mobile" : "123-456-7890" } } ], "role" : [ "lism:Instructor" ] } ] } } }
除分页功能外,该JSON-LD版本与简单JSON的核心差异包括:
- 使用嵌套的
membershipSubject字段(内含@type为Context的对象),而非直接的context字段 - 用
membership数组替代了members数组
我认为这两种格式是同一Schema的不同表现形式,但还有几个问题需要明确:
- 这个JSON-LD版本的定义具体出处是什么?
- 是否存在JSON-LD到「简单JSON」的标准转换规则?
members这类复数形式的命名来源是什么?
内容的提问来源于stack exchange,提问作者jdm
相关产品推荐
相关产品推荐

