Skip to content

Commit

Permalink
Merge pull request #458 from IMSGlobal/feature/simplify-skills-assert…
Browse files Browse the repository at this point in the history
…ions

Simplify how Skill Assertions work by reusing the Achievement class
  • Loading branch information
mgylling authored Jul 18, 2022
2 parents f40214e + 0694e14 commit 920a437
Show file tree
Hide file tree
Showing 8 changed files with 185 additions and 96 deletions.
6 changes: 3 additions & 3 deletions ob_v3p0/common_credentials.lines
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Package SharedCredentialDataModels DataModel
Property activityEndDate DateTime 0..1 "The datetime the activity ended."
Property activityStartDate DateTime 0..1 "The datetime the activity started."
Property creditsEarned Float 0..1 "The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement `creditsAvailable` field."
Property achievement Achievement 0..1 "The achievement being awarded."
Property achievement Achievement 1 "The achievement being awarded."
Property identifier IdentityObject 0..* "Other identifiers for the recipient of the achievement. Either `id` or at least one `identifier` MUST be supplied."
Property image Image 0..1 "An image representing this user's achievement. If present, this must be a PNG or SVG image, and should be prepared via the 'baking' instructions. An 'unbaked' image for the achievement is defined in the Achievement class and should not be duplicated here."
Property licenseNumber String 0..1 "The license number that was issued with this credential."
Expand Down Expand Up @@ -95,7 +95,7 @@ Package SharedCredentialDataModels DataModel

Include GeoCoordinates // From CDM
Property type IRI 1 "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'GeoCoordinates'."

Include IdentifierEntry // From CDM
Property type IRI 1 "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'IdentifierEntry'."

Expand Down Expand Up @@ -279,7 +279,7 @@ Package SharedCredentialDataModels DataModel
Property Withdrew Term 1 "The learner withdrew from the activity described by the achievement before completion."

Package SharedProofDataModels DataModel "Data models shared by all proof formats."

Class Ed25519VerificationKey2020 Unordered false []
Property id URI 1 "The `id` of the verification method MUST be the JWK thumbprint calculated from the `publicKeyMultibase` property value according to [[?MULTIBASE]]."
Property type String 0..1 "The `type` of the verification method MUST be the string `Ed25519VerificationKey2020`."
Expand Down
26 changes: 20 additions & 6 deletions ob_v3p0/examples/basicOpenBadgeCredential.html
Original file line number Diff line number Diff line change
@@ -1,26 +1,40 @@
var basicCredential = `

<div class="note">
The following Credential is a minimal achievement assertion. The Achievement definition here is assumed
</div>
<pre class="json example vc" data-schema="org.1edtech.ob.v3p0.achievementcredential.class"
data-allowadditionalproperties="false" title="Sample OpenBadgeCredential">
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://imsglobal.github.io/openbadges-specification/context.json"
],
"id": "http://example.edu/credentials/3732",
"id": "http://example.com/credentials/3527",
"type": ["VerifiableCredential", "OpenBadgeCredential"],
"issuer": {
"id": "https://example.edu/issuers/565049",
"id": "https://example.com/issuers/876543",
"type": ["Profile"],
"name": "Example University"
"name": "Example Corp"
},
"issuanceDate": "2010-01-01T00:00:00Z",
"name": "Example University Degree",
"name": "Teamwork Badge",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"type": ["AchievementSubject"]
"type": ["AchievementSubject"],
"achievement": {
"id": "https://example.com/achievements/21st-century-skills/teamwork",
"type": [
"Achievement"
],
"criteria": {
"narrative": "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management."
},
"description": "This badge recognizes the development of the capacity to collaborate within a group environment.",
"name": "Teamwork"
}
}
}
</pre>

`;
`;
2 changes: 1 addition & 1 deletion ob_v3p0/examples/fullOpenBadge.html
Original file line number Diff line number Diff line change
Expand Up @@ -704,4 +704,4 @@
}
</pre>

`;
`;
121 changes: 85 additions & 36 deletions ob_v3p0/examples/skillAssertionCase.html
Original file line number Diff line number Diff line change
@@ -1,45 +1,94 @@
var skillAssertionCase = `

<div class="note">
A Skill Assertion credential should only have one <code>Result</code> and one <code>Alignment</code>.
A Skill Assertion credential is just like a <a href=""#basic-openbadgecredential">basic OpenBadgeCredential</a> in how an Achievement is included, except that it makes a claim referencing an Achievement that is generic to allow for use by many possible issuers. The Achievement here is aligned to a CASE CFItem.
</div>
<pre class="json example vc" data-schema="org.1edtech.ob.v3p0.achievementcredential.class"
data-allowadditionalproperties="false" title="Skill Assertion (CASE)">
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://imsglobal.github.io/openbadges-specification/context.json"
],
"type": ["VerifiableCredential", "OpenBadgeCredential"],
"id": "https://issuer-website.com/awards/abc123",
"issuer": {
"id": "did:example:issuer",
"type": ["Profile"],
"name": "An Example Issuer",
"image": {
"id": "https://example.org/logo.png",
"type": "Image"
},
"url": "https://example.org",
"email": "[email protected]"
},
"issuanceDate": "2022-05-01T19:23:24Z",
"name": "Cite strong and thorough textual evidence to support analysis of what the text says explicitly as well as inferences drawn from the text, including determining where the text leaves matters uncertain",
"credentialSubject": {
"id": "did:example:learner",
"type": ["AchievementSubject"],
"result": [{
"type": ["Result"],
"alignment": [{
"type": ["Alignment"],
"targetCode": "74f5bb7d-d7cc-11e8-824f-0242ac160002",
"targetFramework": "Alabama Course of Study: English Language Arts",
"targetName": "Cite strong and thorough textual evidence to support analysis of what the text says explicitly as well as inferences drawn from the text, including determining where the text leaves matters uncertain",
"targetType": "CFItem",
"targetUrl": "https://caseregistry.imsglobal.org/uri/74f5bb7d-d7cc-11e8-824f-0242ac160002"
}]
}]
}
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://imsglobal.github.io/openbadges-specification/context.json"
],
"id": "http://1edtech.edu/credentials/3732",
"type": [
"VerifiableCredential",
"OpenBadgeCredential"
],
"name": "Robot Programming Skill Credential",
"description": "A badge recognizing the development of skills in robot implementation, specifically the software",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"type": [
"AchievementSubject"
],
"achievement": {
"id": "https://example.com/achievements/robotics/robot-programming",
"type": [
"Achievement"
],
"alignment": [{
"type": [
"Alignment"
],
"targetDescription": "Robot software is a set of commands and procedures robots use to respond to input and perform autonomous tasks.",
"targetName": "Robot Programming",
"targetFramework": "Example Robotics Framework",
"targetType": "CFItem",
"targetUrl": "https://robotics-competencies.example.com/competencies/robot-programming"
}],
"achievementType": "Competency",
"creator": {
"id": "https://example.com/issuers/123767",
"type": [
"Profile"
],
"name": "Example Industry Group",
"url": "https://example.com",
"description": "Example Industry Group is a consortium of luminaries who publish skills data for common usage.",
"email": "[email protected]"
},
"criteria": {
"narrative": "Learners must present source code showing the ability for a robot to accept manual or sensor input and perform conditional actions in response."
},
"description": "This achievement represents developing capability to develop software for robotic applications.",
"image": {
"id": "https://example.com/achievements/robotics/robot-programming/image",
"type": "Image",
"caption": "A robot filled with ones and zeroes representing its programming"
},
"name": "Robot Programming"
}
},
"evidence": [{
"id": "https://github.com/somebody/project",
"type": [
"Evidence"
],
"name": "Final Project Code",
"description": "The source code for the 'Beeper 1.0' robot project. It responds by saying 'beep' when the 'beep' button is pressed."
}],
"issuer": {
"id": "https://1edtech.edu/issuers/565049",
"type": [
"Profile"
],
"name": "1EdTech University",
"url": "https://1edtech.edu",
"phone": "1-222-333-4444",
"description": "1EdTech University provides online degree programs.",
"image": {
"id": "https://1edtech.edu/logo.png",
"type": "Image",
"caption": "1EdTech University logo"
},
"email": "[email protected]"
},
"issuanceDate": "2022-07-01T00:00:00Z",
"credentialSchema": [{
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/achievementcredential.json",
"type": "1EdTechJsonSchemaValidator2019"
}]
}
</pre>
`;
`;
98 changes: 68 additions & 30 deletions ob_v3p0/examples/skillAssertionCtdl.html
Original file line number Diff line number Diff line change
@@ -1,45 +1,83 @@
var skillAssertionCtdl = `

<div class="note">
A Skill Assertion credential should only have one <code>Result</code> and one <code>Alignment</code>.
A Skill Assertion credential is just like a <a href=""#basic-openbadgecredential">basic OpenBadgeCredential</a> in how an Achievement is included, except that it makes a claim referencing an Achievement that is generic to allow for use by many possible issuers. The Achievement here is aligned to a Competency registered on the Credential Registry and described in CTDL.
</div>
<pre class="json example vc" data-schema="org.1edtech.ob.v3p0.achievementcredential.class"
data-allowadditionalproperties="false" title="Skill Assertion (Credential Registry)">
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://imsglobal.github.io/openbadges-specification/context.json"
],
"type": ["VerifiableCredential", "OpenBadgeCredential"],
"id": "https://issuer-website.com/awards/abc123",
"issuer": {
"id": "did:example:issuer",
"type": ["Profile"],
"name": "An Example Issuer",
"image": {
"id": "https://example.org/logo.png",
"type": "Image"
},
"url": "https://example.org",
"email": "[email protected]"
},
"issuanceDate": "2022-05-01T19:23:24Z",
"name": "Solve and graph linear equations and inequalities",
"credentialSubject": {
"id": "did:example:learner",
"type": ["AchievementSubject"],
"result": [{
"type": ["Result"],
"alignment": [{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://imsglobal.github.io/openbadges-specification/context.json"
],
"id": "http://1edtech.edu/credentials/3732",
"type": [
"VerifiableCredential",
"OpenBadgeCredential"
],
"name": Solve and graph linear equations and inequalities",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"type": [
"AchievementSubject"
],
"achievement": {
"id": "https://example.com/achievements/math/linear-1",
"type": [
"Achievement"
],
"alignment": [{
"type": ["Alignment"],
"targetCode": "ce-6369c51f-4d86-4592-a761-8b32ae70a045",
"targetFramework": "Ivy Tech Community College of Indiana, MATH 135, FINITE MATH",
"targetName": "Solve and graph linear equations and inequalities",
"targetType": "ceasn:Competency",
"targetUrl": "https://credentialfinder.org/competency/ce-6369c51f-4d86-4592-a761-8b32ae70a045"
}]
}]
}
}],
"achievementType": "Competency",
"creator": {
"id": "https://example.com/issuers/123767",
"type": [
"Profile"
],
"name": "Example Industry Group",
"url": "https://example.com",
"description": "Example Industry Group is a consortium of luminaries who publish skills data for common usage.",
"email": "[email protected]"
},
"criteria": {
"narrative": "Learners must demonstrate understanding of linear algebra and graphic representation of linear equations."
},
"description": "This achievement represents developing capability to solve and graph linear equations and inequalities",
"image": {
"id": "https://example.com/achievements/math/linear-1/image",
"type": "Image",
"caption": "A line, sloping upward optimistically"
},
"name": "Linear equations and inequalities"
}
},
"issuer": {
"id": "https://1edtech.edu/issuers/565049",
"type": [
"Profile"
],
"name": "1EdTech University",
"url": "https://1edtech.edu",
"phone": "1-222-333-4444",
"description": "1EdTech University provides online degree programs.",
"image": {
"id": "https://1edtech.edu/logo.png",
"type": "Image",
"caption": "1EdTech University logo"
},
"email": "[email protected]"
},
"issuanceDate": "2022-07-01T00:00:00Z",
"credentialSchema": [{
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/achievementcredential.json",
"type": "1EdTechJsonSchemaValidator2019"
}]
}
</pre>
`;
`;
Binary file not shown.
Binary file not shown.
Loading

0 comments on commit 920a437

Please sign in to comment.