Added Rdf Type validation test

This commit is contained in:
Xavi Aracil 2022-12-12 13:54:29 +01:00
parent de610f7f3e
commit 747a93e670
17 changed files with 2126 additions and 6 deletions

View File

@ -1,5 +1,7 @@
package org.oneedtech.inspect.vc; package org.oneedtech.inspect.vc;
import static org.oneedtech.inspect.vc.util.PrimitiveValueValidator.validateIri;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -84,14 +86,21 @@ public class Assertion extends Credential {
VerificationObject(List.of("VerificationObject")), VerificationObject(List.of("VerificationObject")),
VerificationObjectAssertion(List.of("VerificationObjectAssertion")), VerificationObjectAssertion(List.of("VerificationObjectAssertion")),
VerificationObjectIssuer(List.of("VerificationObjectIssuer")), VerificationObjectIssuer(List.of("VerificationObjectIssuer")),
External(Collections.emptyList(), false),
Unknown(Collections.emptyList()); Unknown(Collections.emptyList());
public static List<Type> primaryObjects = List.of(Assertion, BadgeClass, Issuer, Profile, Endorsement); public static List<Type> primaryObjects = List.of(Assertion, BadgeClass, Issuer, Profile, Endorsement);
private final List<String> allowedTypeValues; private final List<String> allowedTypeValues;
private final boolean allowedTypeValuesRequired;
Type(List<String> typeValues) { Type(List<String> typeValues) {
this(typeValues, true);
}
Type(List<String> typeValues, boolean allowedTypeValuesRequired) {
this.allowedTypeValues = typeValues; this.allowedTypeValues = typeValues;
this.allowedTypeValuesRequired = allowedTypeValuesRequired;
} }
public static Assertion.Type valueOf (JsonNode typeNode) { public static Assertion.Type valueOf (JsonNode typeNode) {
@ -107,6 +116,12 @@ public class Assertion extends Credential {
} }
} }
} }
// check external type
if (validateIri(typeNode)) {
return External;
}
return Unknown; return Unknown;
} }
@ -125,6 +140,11 @@ public class Assertion extends Credential {
return List.of("https://w3id.org/openbadges/v2") ; return List.of("https://w3id.org/openbadges/v2") ;
} }
@Override
public boolean isAllowedTypeValuesRequired() {
return allowedTypeValuesRequired;
}
public List<Validation> getValidations() { public List<Validation> getValidations() {
return validationMap.get(this); return validationMap.get(this);
} }
@ -318,6 +338,8 @@ public class Assertion extends Credential {
new Validation.Builder().name("startsWith").type(ValueType.URL).build(), new Validation.Builder().name("startsWith").type(ValueType.URL).build(),
new Validation.Builder().name("allowedOrigins").type(ValueType.URL_AUTHORITY).many(true).build() new Validation.Builder().name("allowedOrigins").type(ValueType.URL_AUTHORITY).many(true).build()
)) ))
.put(Type.External, Collections.emptyList())
.put(Type.Unknown, Collections.emptyList())
.build(); .build();
public static final String ID = Assertion.class.getCanonicalName(); public static final String ID = Assertion.class.getCanonicalName();

View File

@ -90,6 +90,7 @@ public abstract class Credential extends GeneratedObject {
public interface CredentialEnum { public interface CredentialEnum {
List<String> getRequiredTypeValues(); List<String> getRequiredTypeValues();
List<String> getAllowedTypeValues(); List<String> getAllowedTypeValues();
boolean isAllowedTypeValuesRequired();
List<String> getContextUris(); List<String> getContextUris();
} }

View File

@ -107,6 +107,10 @@ public class VerifiableCredential extends Credential {
return allowedTypeValues; return allowedTypeValues;
} }
@Override
public boolean isAllowedTypeValuesRequired() {
return true;
}
@Override @Override
public List<String> getContextUris() { public List<String> getContextUris() {
return contextMap.get(contextMap.keySet() return contextMap.get(contextMap.keySet()

View File

@ -31,12 +31,14 @@ public class TypePropertyProbe extends StringValuePropertyProbe {
} }
} }
List<String> allowedValues = expected.getAllowedTypeValues(); if (expected.isAllowedTypeValuesRequired()) {
if (allowedValues.isEmpty()) { List<String> allowedValues = expected.getAllowedTypeValues();
return fatal("The type property is invalid", ctx); if (allowedValues.isEmpty()) {
} return fatal("The type property is invalid", ctx);
if (!values.stream().anyMatch(v -> allowedValues.contains(v))) { }
return fatal(formatMessage(values), ctx); if (!values.stream().anyMatch(v -> allowedValues.contains(v))) {
return fatal(formatMessage(values), ctx);
}
} }
return success(ctx); return success(ctx);

View File

@ -126,6 +126,29 @@ public class OB20Tests {
}); });
} }
@Test
void testRdfValidation() {
List.of(Samples.OB20.JSON.RDF_VALIDATION_VALID_BADGE_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_VALID_ISSUER_EXTENSION_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_VALID_ALIGNMENT_OBJECT,
Samples.OB20.JSON.RDF_VALIDATION_VALID_EXTERNAL_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_INVALID_EMPTY_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_INVALID_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_INVALID_ELEM_CLASS,
Samples.OB20.JSON.RDF_VALIDATION_INVALID_ISSUER_TYPE,
Samples.OB20.JSON.RDF_VALIDATION_VALID_EMPTY_CRITERIA_TYPE).forEach(resource -> {
assertDoesNotThrow(()->{
Report report = validator.run(resource.asFileResource());
if(verbose) PrintHelper.print(report, true);
if(resource.isValid()) {
assertValid(report);
} else {
assertInvalid(report);
}
});
});
}
@Nested @Nested
static class WarningTests { static class WarningTests {
@BeforeAll @BeforeAll

View File

@ -59,6 +59,16 @@ public class Samples {
public final static Sample ISSUER_COMPACTIRI_VALIDATION = new Sample("ob20/issuer-compact-iri-validation.json", true); public final static Sample ISSUER_COMPACTIRI_VALIDATION = new Sample("ob20/issuer-compact-iri-validation.json", true);
// original: validate_language: validate_language_prop_basic // original: validate_language: validate_language_prop_basic
public final static Sample SIMPLE_LANGUAGE_BADGECLASS = new Sample("ob20/badge-class-with-language.json", true); public final static Sample SIMPLE_LANGUAGE_BADGECLASS = new Sample("ob20/badge-class-with-language.json", true);
// original: test_validation: test_validate_in_context_string_type
public final static Sample RDF_VALIDATION_VALID_BADGE_CLASS = new Sample("ob20/rdf-validation/valid-badge-class.json", true);
public final static Sample RDF_VALIDATION_VALID_ISSUER_EXTENSION_CLASS = new Sample("ob20/rdf-validation/valid-issuer-extension.json", true);
public final static Sample RDF_VALIDATION_VALID_ALIGNMENT_OBJECT = new Sample("ob20/rdf-validation/valid-alignment-object.json", true);
public final static Sample RDF_VALIDATION_VALID_EXTERNAL_CLASS = new Sample("ob20/rdf-validation/valid-cool-class.json", true);
public final static Sample RDF_VALIDATION_INVALID_CLASS = new Sample("ob20/rdf-validation/invalid-class.json", false);
public final static Sample RDF_VALIDATION_INVALID_EMPTY_CLASS = new Sample("ob20/rdf-validation/invalid-empty-type.json", false);
public final static Sample RDF_VALIDATION_INVALID_ELEM_CLASS = new Sample("ob20/rdf-validation/invalid-one-invalid-class.json", false);
public final static Sample RDF_VALIDATION_INVALID_ISSUER_TYPE = new Sample("ob20/rdf-validation/badge-class-invalid-issuer-type.json", false);
public final static Sample RDF_VALIDATION_VALID_EMPTY_CRITERIA_TYPE = new Sample("ob20/rdf-validation/valid-badge-class-empty-criteria-type.json", true);
} }
public static final class PNG { public static final class PNG {

View File

@ -0,0 +1,203 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "_:b0",
"narrative": "Do the important things."
}

View File

@ -0,0 +1,203 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.org/issuer-invalid-type",
"type": "Criteria"
}

View File

@ -0,0 +1,10 @@
{
"@context": "https://w3id.org/openbadges/v2",
"id": "http://example.org/badgeclass",
"@language": "en-US",
"name": "Example Badge",
"description": "An example",
"criteria": "http://example.com/badgecriteria.json",
"issuer": "http://example.org/issuer-invalid-type.json",
"type": "BadgeClass"
}

View File

@ -0,0 +1,204 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": "NotAKnownClass",
"name": "Chumley"
}

View File

@ -0,0 +1,204 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": [],
"name": "Chumley"
}

View File

@ -0,0 +1,204 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": ["Issuer", "UNKNOWN"],
"name": "Chumley"
}

View File

@ -0,0 +1,206 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": "AlignmentObject",
"name": "Chumley",
"targetName": "target name",
"targetUrl": "http://example.com"
}

View File

@ -0,0 +1,207 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": "BadgeClass",
"name": "Chumley",
"description": "An example",
"criteria": "http://example.com/criteria-no-type.json",
"issuer": "http://example.org/issuer1.json"
}

View File

@ -0,0 +1,207 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": "BadgeClass",
"name": "Chumley",
"description": "An example",
"criteria": "http://example.com/badgecriteria.json",
"issuer": "http://example.org/issuer1.json"
}

View File

@ -0,0 +1,204 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": "http://example.com/CoolClass",
"name": "Chumley"
}

View File

@ -0,0 +1,206 @@
{
"@context": {
"id": "@id",
"type": "@type",
"extensions": "https://w3id.org/openbadges/extensions#",
"obi": "https://w3id.org/openbadges#",
"validation": "obi:validation",
"cred": "https://w3id.org/credentials#",
"dc": "http://purl.org/dc/terms/",
"schema": "http://schema.org/",
"sec": "https://w3id.org/security#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"AlignmentObject": "schema:AlignmentObject",
"CryptographicKey": "sec:Key",
"Endorsement": "cred:Credential",
"Assertion": "obi:Assertion",
"BadgeClass": "obi:BadgeClass",
"Criteria": "obi:Criteria",
"Evidence": "obi:Evidence",
"Extension": "obi:Extension",
"FrameValidation": "obi:FrameValidation",
"IdentityObject": "obi:IdentityObject",
"Image": "obi:Image",
"HostedBadge": "obi:HostedBadge",
"hosted": "obi:HostedBadge",
"Issuer": "obi:Issuer",
"Profile": "obi:Profile",
"RevocationList": "obi:RevocationList",
"SignedBadge": "obi:SignedBadge",
"signed": "obi:SignedBadge",
"TypeValidation": "obi:TypeValidation",
"VerificationObject": "obi:VerificationObject",
"author": {
"@id": "schema:author",
"@type": "@id"
},
"caption": {
"@id": "schema:caption"
},
"claim": {
"@id": "cred:claim",
"@type": "@id"
},
"created": {
"@id": "dc:created",
"@type": "xsd:dateTime"
},
"creator": {
"@id": "dc:creator",
"@type": "@id"
},
"description": {
"@id": "schema:description"
},
"email": {
"@id": "schema:email"
},
"endorsement": {
"@id": "cred:credential",
"@type": "@id"
},
"expires": {
"@id": "sec:expiration",
"@type": "xsd:dateTime"
},
"genre": {
"@id": "schema:genre"
},
"image": {
"@id": "schema:image",
"@type": "@id"
},
"name": {
"@id": "schema:name"
},
"owner": {
"@id": "sec:owner",
"@type": "@id"
},
"publicKey": {
"@id": "sec:publicKey",
"@type": "@id"
},
"publicKeyPem": {
"@id": "sec:publicKeyPem"
},
"related": {
"@id": "dc:relation",
"@type": "@id"
},
"startsWith": {
"@id": "http://purl.org/dqm-vocabulary/v1/dqm#startsWith"
},
"tags": {
"@id": "schema:keywords"
},
"targetDescription": {
"@id": "schema:targetDescription"
},
"targetFramework": {
"@id": "schema:targetFramework"
},
"targetName": {
"@id": "schema:targetName"
},
"targetUrl": {
"@id": "schema:targetUrl"
},
"telephone": {
"@id": "schema:telephone"
},
"url": {
"@id": "schema:url",
"@type": "@id"
},
"version": {
"@id": "schema:version"
},
"alignment": {
"@id": "obi:alignment",
"@type": "@id"
},
"allowedOrigins": {
"@id": "obi:allowedOrigins"
},
"audience": {
"@id": "obi:audience"
},
"badge": {
"@id": "obi:badge",
"@type": "@id"
},
"criteria": {
"@id": "obi:criteria",
"@type": "@id"
},
"endorsementComment": {
"@id": "obi:endorsementComment"
},
"evidence": {
"@id": "obi:evidence",
"@type": "@id"
},
"hashed": {
"@id": "obi:hashed",
"@type": "xsd:boolean"
},
"identity": {
"@id": "obi:identityHash"
},
"issuedOn": {
"@id": "obi:issueDate",
"@type": "xsd:dateTime"
},
"issuer": {
"@id": "obi:issuer",
"@type": "@id"
},
"narrative": {
"@id": "obi:narrative"
},
"recipient": {
"@id": "obi:recipient",
"@type": "@id"
},
"revocationList": {
"@id": "obi:revocationList",
"@type": "@id"
},
"revocationReason": {
"@id": "obi:revocationReason"
},
"revoked": {
"@id": "obi:revoked",
"@type": "xsd:boolean"
},
"revokedAssertions": {
"@id": "obi:revoked"
},
"salt": {
"@id": "obi:salt"
},
"targetCode": {
"@id": "obi:targetCode"
},
"uid": {
"@id": "obi:uid"
},
"validatesType": "obi:validatesType",
"validationFrame": "obi:validationFrame",
"validationSchema": "obi:validationSchema",
"verification": {
"@id": "obi:verify",
"@type": "@id"
},
"verificationProperty": {
"@id": "obi:verificationProperty"
},
"verify": "verification"
},
"id": "http://example.com/badge1",
"type": ["Issuer", "Extension"],
"name": "Chumley",
"url": "https://example.org",
"email": "contact@example.org"
}