1 of 18

Open Badges Standard

Extension Proposal, 29 October 2014

Badge Alliance Standard Working Group

2 of 18

Working Group focus April-October 2014

Linked Data with JSON-LD

  • Provide information about the properties included in badges in a way that is compatible with the future of the web

Extensions

  • Allowing issuers to add more metadata to badges
  • Different issuers can add the same sort of data
  • Consumers know each intended to follow same format

3 of 18

Present day: Open Badges 1.0

Each badge is composed of 3 badge objects connected by URLs:

Assertion

Badge Class

badge,

uid,

recipient,

issuedOn,

expires,

evidence,

verify

issuer,

name,

description,

image,

criteria

Issuer

name,

url,

org,

contact

4 of 18

The near future: Open Badges 1.1

We propose issuers add two properties to each new Assertion, Badge Class & Issuer object:

*URL subject to change in final version

“@context”: “http://standard.openbadges.org/1.1/context”*,

“@type”: “assertion”

5 of 18

Linked Data with JSON-LD

New @context and @type properties:

  • Allows all 1.1 Open Badges to be indexed better by search engines and directories
  • Clearer path to future enhancements
  • Issuers, Earners & Consumers benefit from well-understood metadata and ecosystem growth.

6 of 18

Linked Data with JSON-LD

Providing @context for JSON connects terms to their definitions.

Like, “‘criteria’ means ‘the URL of a page that says what’s required to earn the badge.’”

7 of 18

Linked Data with JSON-LD

Many developers may link to the same definitions.

Then, other people know they’re all talking about the same thing.

8 of 18

Linked Data with JSON-LD

Assertion

Badge Class

@context,

@type,

badge,

uid,

recipient,

issuedOn,

expires,

evidence,

verify

@context,

@type,

issuer,

name,

description,

image,

criteria

Issuer

@context,

@type,

name,

url,

org,

contact

Provides context for property declarations. A context file maps terms to definitions of those terms.

{

“@context”: {

“badge”: {

“@id”: “http://standard.openbadges.org/definitions#BadgeClass”,

“@type”: “@id” },

“uid”: {

“@id”: “http://openbadges.org/definitions#uid”,

“@type”: “http://www.w3.org/2001/XMLSchema#string”

...

}

}

OBI Context*

9 of 18

JSON-LD Enabled Badge Extensions

Now that we can share a base @context for badges:

  • Better understanding among search engines and consumers
  • Add new @context for extra information.

…. open & standardized extensions!

10 of 18

JSON-LD Enabled Badge Extensions

Assertion

Badge Class

@context,

@id*,

@type,

badge,

uid,

recipient,

issuedOn,

expires,

evidence,

verify

@context,

@id, @type,

issuer, name,

description,

image,

criteria

Issuer

@context,

@id, @type,

name,

url,

org,

contact

Organizations may define extensions by creating a new context file to link in extended badge objects

{

“@context”: {

“courseLocation”: {

“@id”: “http://extension.org/definitions#courseLocation”,

“@type”: “@id” },

“lat”: {

“@id”: “http://schema.org/latitude”,

“@type”: “@id”

...

}

}

Extension Context

Extension

@context,

@type,

courseLocation,

lat, long

11 of 18

JSON-LD Enabled Badge Extensions

Any badge object (Assertion, Badge Class or Issuer) may be extended.

Each extension:

  • A JSON object with a @context property
  • Definitions available at URLs for terms
  • Using another’s extension is easy! (Just add their @context!)

12 of 18

Overview: JSON-LD & Extensions

Assertion

Badge Class

@context

@id, @type,

badge,

uid,

recipient,

issuedOn,

expires,

evidence,verify

@context,

@id, @type,

issuer,

name,

description,

image,

criteria

Issuer

BadgeList Extension

@context,

@type,

badgeListUrl

@context,

@id, @type,

name,

url,

org,

contact

Open Badges Context:

  • Maps shorthand terms like “uid” to IRIs (like URLs) that define the term.
  • The context is a hosted JSON-LD document

“uid” -> “http://standard.openbadges.org/definitions#uid”,

“badge”: -> “http://standard.openbadges.org/definitions#badge”

Extension Context:

  • Maps the new properties in the extension to their definitions
  • JSON-LD context hosted by extension author

“badgeListURL” -> “http://extension.org/defs/badgeListUrl”

13 of 18

Overview: JSON-LD & Extensions

  • Each Badge Object (Assertion, Badge Class, Issuer, & each Extension) declares context and type.
    • (Note: core OBI objects may share context)
  • Each context (JSON-LD terminology) declares what the purpose, semantics, and structure of objects of that type

14 of 18

An example Issuer extension in code

{

“@context”: [

“http://standard.openbadges.org/1.1/context”

],

“@type”: “issuer”,

“@id”: “http://issuer.org/issuer.json”

“name”: “Example Issuer”,

“description”: “An example issuer organization”,

“contact”: “example@issuer.org”

“extension:badgeListUrl”: {

“@context: “http://extension.org/context/badgeListUrl”,

“@type”: [“extension”, “http://extension.org/defs/badgeListUrl”]

“listUrl”: “http://issuer.org/badgelist.json”

}

}

Extending a Badge Object:

  • Extension container property must map to an IRI defining that it is an extension. Could be done within OBI namespace w/extension prefix, or custom IRI by adding to @context.
  • JSON-LD context (machine readable) hosted by extension author contains mappings for extension module terms e.g. listUrl

15 of 18

Extension validation w/JSON-schema

  • The linked context file’s primary purpose is describing what extension properties mean. This document is shared between all issuers implementing the extension.
  • Extension authors may include a link to validation rules published by the extension creator in the JSON-schema format. If so, you may define a schema by the @type it validates.

{

“@context”: {

“listUrl”: {

“@id”: “http://extension.org/defs/listUrl”,

“@type”: “@id”

},

"obi:validation": [

{ "obi:validatesType": "http://extension.org/defs/badgeListUrl",

"obi:validationSchema": "http://extension.org/schema/badgeListUrl" }

]

}

{

“@context”: “http://standard.openbadges.org/1.1/context”,

“@type”: “issuer”, ...

“extension:badgeListUrl”: {

“@type”:

[“extension”,“http://extension.org/defs/badgelistUrl”]

“@context: “http://extension.org/context/badgeListUrl”,

“listUrl”: “http://issuer.org/badgelist.json”

}

}

Linked Extension Context

Modular extensions

16 of 18

JSON-schema based validation

Schema-based validation help with:

  • Whether a badge object is properly structured
  • Presence of required properties
  • Data types and regular expression matching

17 of 18

The future: Open Badges vision

A badge is a composition of

standardized and verifiable components

that delivers a message about

an earner’s qualifications.

18 of 18

Open Badges 1.1 Contributors

The Badge Alliance Standard Working Group Cabinet

Special thanks to:

Manu Sporny, Eric Korb, Don Presant, Joe Dickinson, Tim Cook, �Wayne Skipper, Kahli Burke, Robert Sanderson, Kyle Rimkus, Dan Wilson, Kurt Mueller, �Charles Augustine, Serge Ravet, Mary Bold, Jason Lewis, Dave Longley

Nate Otto, Developer

Concentric Sky | @ottonomy

Kerri Lemoie, CTO

Achievery | @kayaelle

Chris McAvoy, CTO

Earshot | @chmcavoy

Sunny Lee, Director of Infrastructure

Badge Alliance | @threeqube

Brian Brennan, Developer

Mozilla | @brianloveswords