This document report test subject conformance for and related specifications for JSON-LD [[JSON-LD-API]] according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [[EARL10-SCHEMA]].

This report is also available in alternate formats: Turtle and JSON-LD

Instructions for submitting implementation reports

Tests should be run using the test manifests defined in the Test Manifests Section.

Each test manifest MAY contain a baseIri property, indicating the base IRI to be used for running each test.

Reports should be submitted in Turtle format to public-rdf-comments@w3.org and include an earl:Assertion for each test, referencing the test resource from the associated manifest and the test subject being reported upon. An example test entry is be the following:

  [ a earl:Assertion;
    earl:assertedBy <http://greggkellogg.net/foaf#me>;
    earl:subject <http://rubygems.org/gems/json-ld>;
    earl:test <http://json-ld.org/test-suite/tests/flatten-manifest.jsonld#t0001>;
    earl:result [
      a earl:TestResult;
      earl:outcome earl:passed;
      dc:date "2013-02-22T15:12:30-08:00"^^xsd:dateTime];
    earl:mode earl:automatic ] .

The Test Subject should be defined as a doap:Project, including the name, homepage and developer(s) of the software (see [[DOAP]]). Optionally, including the project description and programming language. An example test subject description is the following:

  <http://rubygems.org/gems/json-ld> a doap:Project, earl:TestSubject, earl:Software ;
    doap:name          "JSON::LD" ;
    doap:homepage      <http://gkellogg.github.com/json-ld> ;
    doap:license       <http://creativecommons.org/licenses/publicdomain/> ;
    doap:description   "JSON::LD parses and serializes JSON-LD into RDF and implements expansion, compaction and framing API interfaces."@en ;
    doap:programming-language "Ruby" ;
    doap:developer     <http://greggkellogg.net/foaf#me> ;
    dc:title           "JSON::LD" ;
    dc:date            "2011-08-29"^^xsd:date ;
    dc:creator         <http://greggkellogg.net/foaf#me> ;

The software developer, either an organization or one or more individuals SHOULD be referenced from doap:developer using [[FOAF]]. For example:

  <http://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor;
    foaf:name "Gregg Kellogg";
    foaf:title "Implementor";
    foaf:homepage <http://greggkellogg.net/> .

See JSON-LD Test Description for more information.

Test Manifests

Compaction

JSON-LD compaction tests use object comparison.

Test JSON::LD jsonld.js browser jsonld.js node.js php-json-ld PyLD JSONLD-Java JsonLD
Test 0001: drop free-floating nodes PASS PASS PASS PASS PASS PASS PASS
Test 0002: basic PASS PASS PASS PASS PASS PASS PASS
Test 0003: drop null and unmapped properties PASS PASS PASS PASS PASS PASS PASS
Test 0004: optimize @set, keep empty arrays PASS PASS PASS PASS PASS PASS PASS
Test 0005: @type and prefix compaction PASS PASS PASS PASS PASS PASS PASS
Test 0006: keep expanded object format if @type doesn't match PASS PASS PASS PASS PASS PASS PASS
Test 0007: add context PASS PASS PASS PASS PASS PASS PASS
Test 0008: alias keywords PASS PASS PASS PASS PASS PASS PASS
Test 0009: compact @id PASS PASS PASS PASS PASS PASS PASS
Test 0010: array to @graph PASS PASS PASS PASS PASS PASS PASS
Test 0011: compact date PASS PASS PASS PASS PASS PASS PASS
Test 0012: native types PASS PASS PASS PASS PASS PASS PASS
Test 0013: @value with @language PASS PASS PASS PASS PASS PASS PASS
Test 0014: array to aliased @graph PASS PASS PASS PASS PASS PASS PASS
Test 0015: best match compaction PASS PASS PASS PASS PASS PASS PASS
Test 0016: recursive named graphs PASS PASS PASS PASS PASS PASS PASS
Test 0017: A term mapping to null removes the mapping PASS PASS PASS PASS PASS PASS PASS
Test 0018: best matching term for lists PASS PASS PASS PASS PASS PASS PASS
Test 0019: Keep duplicate values in @list and @set PASS PASS PASS PASS PASS PASS PASS
Test 0020: Compact @id that is a property IRI when @container is @list PASS PASS PASS PASS PASS PASS PASS
Test 0021: Compact properties and types using @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0022: @list compaction of nested properties PASS PASS PASS PASS PASS PASS PASS
Test 0023: prefer @vocab over compacted IRIs PASS PASS PASS PASS PASS PASS PASS
Test 0024: most specific term matching in @list. PASS PASS PASS PASS PASS PASS PASS
Test 0025: Language maps PASS PASS PASS PASS PASS PASS PASS
Test 0026: Language map term selection with complications PASS PASS PASS PASS PASS PASS PASS
Test 0027: @container: @set with multiple values PASS PASS PASS PASS PASS PASS PASS
Test 0028: Alias keywords and use @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0029: Simple @index map PASS PASS PASS PASS PASS PASS PASS
Test 0030: non-matching @container: @index PASS PASS PASS PASS PASS PASS PASS
Test 0031: Compact @reverse PASS PASS PASS PASS PASS PASS PASS
Test 0032: Compact keys in reverse-maps PASS PASS PASS PASS PASS PASS PASS
Test 0033: Compact reverse-map to reverse property PASS PASS PASS PASS PASS PASS PASS
Test 0034: Skip property with @reverse if no match PASS PASS PASS PASS PASS PASS PASS
Test 0035: Compact @reverse node references using strings PASS PASS PASS PASS PASS PASS PASS
Test 0036: Compact reverse properties using index containers PASS PASS PASS PASS PASS PASS PASS
Test 0037: Compact keys in @reverse using @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0038: Index map round-tripping PASS PASS PASS PASS PASS PASS PASS
Test 0039: @graph is array PASS PASS PASS PASS PASS PASS PASS
Test 0040: @list is array PASS PASS PASS PASS PASS PASS PASS
Test 0041: index rejects term having @list PASS PASS PASS PASS PASS PASS PASS
Test 0042: @list keyword aliasing PASS PASS PASS PASS PASS PASS PASS
Test 0043: select term over @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0044: @type: @vocab in reverse-map PASS PASS PASS PASS PASS PASS PASS
Test 0045: @id value uses relative IRI, not term PASS PASS PASS PASS PASS PASS PASS
Test 0046: multiple objects without @context use @graph PASS PASS PASS PASS PASS PASS PASS
Test 0047: Round-trip relative URLs PASS PASS PASS PASS PASS PASS PASS
Test 0048: term with @language: null PASS PASS PASS PASS PASS PASS PASS
Test 0049: Round tripping of lists that contain just IRIs PASS PASS PASS PASS PASS PASS PASS
Test 0050: Reverse properties require @type: @id to use string values PASS PASS PASS PASS PASS PASS PASS
Test 0051: Round tripping @list with scalar PASS PASS PASS PASS PASS PASS PASS
Test 0052: Round tripping @list with scalar and @graph alias PASS PASS PASS PASS PASS PASS PASS
Test 0053: Use @type: @vocab if no @type: @id PASS PASS PASS PASS PASS PASS PASS
Test 0054: Compact to @type: @vocab and compact @id to term PASS PASS PASS PASS PASS PASS PASS
Test 0055: Round tripping @type: @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0056: Prefer @type: @vocab over @type: @id for terms PASS PASS PASS PASS PASS PASS PASS
Test 0057: Complex round tripping @type: @vocab and @type: @id PASS PASS PASS PASS PASS PASS PASS
Test 0058: Prefer @type: @id over @type: @vocab for non-terms PASS PASS PASS PASS PASS PASS PASS
Test 0059: Term with @type: @vocab if no @type: @id PASS PASS PASS PASS PASS PASS PASS
Test 0060: Term with @type: @id if no @type: @vocab and term value PASS PASS PASS PASS PASS PASS PASS
Test 0061: @type: @vocab/@id with values matching either PASS PASS PASS PASS PASS PASS PASS
Test 0062: @type: @vocab and relative IRIs PASS PASS PASS PASS PASS PASS PASS
Test 0063: Compact IRI round-tripping with @type: @vocab PASS PASS PASS PASS PASS PASS PASS
Test 0064: Compact language-tagged and indexed strings to index-map PASS PASS PASS PASS PASS PASS PASS
Test 0065: Language-tagged and indexed strings with language-map PASS PASS PASS PASS PASS PASS PASS
Test 0066: Relative IRIs PASS PASS PASS PASS PASS PASS PASS
Test 0067: Reverse properties with blank nodes PASS PASS PASS PASS PASS PASS PASS
Test 0068: Single value reverse properties PASS PASS PASS PASS PASS PASS PASS
Test 0069: Single value reverse properties with @set PASS PASS PASS PASS PASS PASS PASS
Test 0070: compactArrays option PASS PASS PASS PASS PASS PASS PASS
Test 0071: input has multiple @contexts, output has one PASS PASS PASS PASS PASS PASS PASS
Percentage passed out of 71 Tests 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0%

Error handling

JSON-LD to Expansion tests use object compare

Test JSON::LD jsonld.js browser jsonld.js node.js php-json-ld PyLD JSONLD-Java JsonLD
Test 0001: Keywords cannot be aliased to other keywords PASS PASS PASS PASS PASS PASS PASS
Test 0002: A context may not include itself recursively (direct) PASS PASS PASS PASS PASS PASS PASS
Test 0003: A context may not include itself recursively (indirect) PASS PASS PASS PASS PASS PASS PASS
Test 0004: Error dereferencing a remote context PASS PASS PASS PASS PASS PASS PASS
Test 0005: Invalid remote context PASS PASS PASS PASS PASS PASS PASS
Test 0006: Invalid local context PASS PASS PASS PASS PASS PASS PASS
Test 0007: Invalid base IRI PASS PASS PASS PASS PASS PASS PASS
Test 0008: Invalid vocab mapping PASS PASS PASS PASS PASS PASS PASS
Test 0009: Invalid default language PASS PASS PASS PASS PASS PASS PASS
Test 0010: Cyclic IRI mapping PASS PASS PASS PASS PASS PASS PASS
Test 0011: Invalid term definition PASS PASS PASS PASS PASS PASS PASS
Test 0012: Invalid type mapping (not a string) PASS PASS PASS PASS PASS PASS PASS
Test 0013: Invalid type mapping (not absolute IRI) PASS PASS PASS PASS PASS PASS PASS
Test 0014: Invalid reverse property (contains @id) PASS PASS PASS PASS PASS PASS PASS
Test 0015: Invalid IRI mapping (@reverse not a string) PASS PASS PASS PASS PASS PASS PASS
Test 0016: Invalid IRI mapping (not an absolute IRI) PASS PASS PASS PASS PASS PASS PASS
Test 0017: Invalid reverse property (invalid @container) PASS PASS PASS PASS PASS PASS PASS
Test 0018: Invalid IRI mapping (@id not a string) PASS PASS PASS PASS PASS PASS PASS
Test 0019: Invalid keyword alias PASS PASS PASS PASS PASS PASS PASS
Test 0020: Invalid IRI mapping (no vocab mapping) PASS PASS PASS PASS PASS PASS PASS
Test 0021: Invalid container mapping PASS PASS PASS PASS PASS PASS PASS
Test 0022: Invalid language mapping PASS PASS PASS PASS PASS PASS PASS
Test 0023: Invalid IRI mapping (relative IRI in @type) PASS PASS PASS PASS PASS PASS PASS
Test 0024: List of lists (from array) PASS PASS PASS PASS PASS PASS PASS
Test 0025: Invalid reverse property map PASS PASS PASS PASS PASS PASS PASS
Test 0026: Colliding keywords PASS PASS PASS PASS PASS PASS PASS
Test 0027: Invalid @id value PASS PASS PASS PASS PASS PASS PASS
Test 0028: Invalid type value PASS PASS PASS PASS PASS PASS PASS
Test 0029: Invalid value object value PASS PASS PASS PASS PASS PASS PASS
Test 0030: Invalid language-tagged string PASS PASS PASS PASS PASS PASS PASS
Test 0031: Invalid @index value PASS PASS PASS PASS PASS PASS PASS
Test 0032: List of lists (from array) PASS PASS PASS PASS PASS PASS PASS
Test 0033: Invalid @reverse value PASS PASS PASS PASS PASS PASS PASS
Test 0034: Invalid reverse property value (in @reverse) PASS PASS PASS PASS PASS PASS PASS
Test 0035: Invalid language map value PASS PASS PASS PASS PASS PASS PASS
Test 0036: Invalid reverse property value (through coercion) PASS PASS PASS PASS PASS PASS PASS
Test 0037: Invalid value object (unexpected keyword) PASS PASS PASS PASS PASS PASS PASS
Test 0038: Invalid value object (@type and @language) PASS PASS PASS PASS PASS PASS PASS
Test 0039: Invalid language-tagged value PASS PASS PASS PASS PASS PASS PASS
Test 0040: Invalid typed value PASS PASS PASS PASS PASS PASS PASS
Test 0041: Invalid set or list object PASS PASS PASS PASS PASS PASS PASS
Test 0042: Compaction to list of lists PASS PASS PASS PASS PASS PASS PASS
Test 0043: Conflicting indexes PASS PASS PASS PASS PASS PASS PASS
Percentage passed out of 43 Tests 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0%

Expansion

JSON-LD to Expansion tests use object compare

Test Argo.Core.JsonLd JSON::LD jsonld.js browser jsonld.js node.js php-json-ld PyLD JSONLD-Java JsonLD
Test 0001: drop free-floating nodes PASS PASS PASS PASS PASS PASS PASS PASS
Test 0002: basic PASS PASS PASS PASS PASS PASS PASS PASS
Test 0003: drop null and unmapped properties PASS PASS PASS PASS PASS PASS PASS PASS
Test 0004: optimize @set, keep empty arrays PASS PASS PASS PASS PASS PASS PASS PASS
Test 0005: do not expand aliased @id/@type PASS PASS PASS PASS PASS PASS PASS PASS
Test 0006: alias keywords PASS PASS PASS PASS PASS PASS PASS PASS
Test 0007: date type-coercion PASS PASS PASS PASS PASS PASS PASS PASS
Test 0008: @value with @language PASS PASS PASS PASS PASS PASS PASS PASS
Test 0009: @graph with terms PASS PASS PASS PASS PASS PASS PASS PASS
Test 0010: native types PASS PASS PASS PASS PASS PASS PASS PASS
Test 0011: coerced @id PASS PASS PASS PASS PASS PASS PASS PASS
Test 0012: @graph with embed PASS PASS PASS PASS PASS PASS PASS PASS
Test 0013: expand already expanded PASS PASS PASS PASS PASS PASS PASS PASS
Test 0014: @set of @value objects with keyword aliases PASS PASS PASS PASS PASS PASS PASS PASS
Test 0015: collapse set of sets, keep empty lists PASS PASS PASS PASS PASS PASS PASS PASS
Test 0016: context reset PASS PASS PASS PASS PASS PASS PASS PASS
Test 0017: @graph and @id aliased PASS PASS PASS PASS PASS PASS PASS PASS
Test 0018: override default @language PASS PASS PASS PASS PASS PASS PASS PASS
Test 0019: remove @value = null PASS PASS PASS PASS PASS PASS PASS PASS
Test 0020: do not remove @graph if not at top-level PASS PASS PASS PASS PASS PASS PASS PASS
Test 0021: do not remove @graph at top-level if not only property PASS PASS PASS PASS PASS PASS PASS PASS
Test 0022: expand value with default language PASS PASS PASS PASS PASS PASS PASS PASS
Test 0023: Expanding list/set with coercion PASS PASS PASS PASS PASS PASS PASS PASS
Test 0024: Multiple contexts PASS PASS PASS PASS PASS PASS PASS PASS
Test 0025: Problematic IRI expansion tests PASS PASS PASS PASS PASS PASS PASS PASS
Test 0026: Term definition with @id: @type PASS PASS PASS PASS PASS PASS PASS PASS
Test 0027: Duplicate values in @list and @set PASS PASS PASS PASS PASS PASS PASS PASS
Test 0028: Use @vocab in properties and @type but not in @id PASS PASS PASS PASS PASS PASS PASS PASS
Test 0029: Relative IRIs PASS PASS PASS PASS PASS PASS PASS PASS
Test 0030: Language maps PASS PASS PASS PASS PASS PASS PASS PASS
Test 0031: type-coercion of native types PASS PASS PASS PASS PASS PASS PASS PASS
Test 0032: Null term and @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0033: Using @vocab with with type-coercion PASS PASS PASS PASS PASS PASS PASS PASS
Test 0034: Multiple properties expanding to the same IRI PASS PASS PASS PASS PASS PASS PASS PASS
Test 0035: Language maps with @vocab, default language, and colliding property PASS PASS PASS PASS PASS PASS PASS PASS
Test 0036: Expanding @index PASS PASS PASS PASS PASS PASS PASS PASS
Test 0037: Expanding @reverse PASS PASS PASS PASS PASS PASS PASS PASS
Test 0038: Expanding blank node labels PASS PASS PASS PASS PASS PASS PASS PASS
Test 0039: Using terms in a reverse-maps PASS PASS PASS PASS PASS PASS PASS PASS
Test 0040: language and index expansion on non-objects PASS PASS PASS PASS PASS PASS PASS PASS
Test 0041: @language: null resets the default language PASS PASS PASS PASS PASS PASS PASS PASS
Test 0042: Reverse properties PASS PASS PASS PASS PASS PASS PASS PASS
Test 0043: Using reverse properties inside a @reverse-container PASS PASS PASS PASS PASS PASS PASS PASS
Test 0044: Index maps with language mappings PASS PASS PASS PASS PASS PASS PASS PASS
Test 0045: Top-level value objects PASS PASS PASS PASS PASS PASS PASS PASS
Test 0046: Free-floating nodes PASS PASS PASS PASS PASS PASS PASS PASS
Test 0047: Free-floating values in sets and free-floating lists PASS PASS PASS PASS PASS PASS PASS PASS
Test 0048: Terms are ignored in @id PASS PASS PASS PASS PASS PASS PASS PASS
Test 0049: String values of reverse properties PASS PASS PASS PASS PASS PASS PASS PASS
Test 0050: Term definitions with prefix separate from prefix definitions PASS PASS PASS PASS PASS PASS PASS PASS
Test 0051: Expansion of keyword aliases in term definitions PASS PASS PASS PASS PASS PASS PASS PASS
Test 0052: @vocab-relative IRIs in term definitions PASS PASS PASS PASS PASS PASS PASS PASS
Test 0053: Expand absolute IRI with @type: @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0054: Expand term with @type: @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0055: Expand @vocab-relative term with @type: @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0056: Use terms with @type: @vocab but not with @type: @id PASS PASS PASS PASS PASS PASS PASS PASS
Test 0057: Expand relative IRI with @type: @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0058: Expand compact IRI with @type: @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0059: Reset @vocab by setting it to null PASS PASS PASS PASS PASS PASS PASS PASS
Test 0060: Overwrite document base with @base and reset it again PASS PASS PASS PASS PASS PASS PASS PASS
Test 0061: Coercing native types to arbitrary datatypes PASS PASS PASS PASS PASS PASS PASS PASS
Test 0062: Various relative IRIs with with @base PASS PASS PASS PASS PASS PASS PASS PASS
Test 0063: Reverse property and index container PASS PASS PASS PASS PASS PASS PASS PASS
Test 0064: bnode values of reverse properties PASS PASS PASS PASS PASS PASS PASS PASS
Test 0065: Drop unmapped keys in reverse map PASS PASS PASS PASS PASS PASS PASS PASS
Test 0066: Reverse-map keys with @vocab PASS PASS PASS PASS PASS PASS PASS PASS
Test 0067: prefix://suffix not a compact IRI PASS PASS PASS PASS PASS PASS PASS PASS
Test 0068: _:suffix values are not a compact IRI PASS PASS PASS PASS PASS PASS PASS PASS
Test 0069: Compact IRI as term with type mapping PASS PASS PASS PASS PASS PASS PASS PASS
Test 0070: Compact IRI as term defined using equivalent compact IRI PASS PASS PASS PASS PASS PASS PASS PASS
Test 0071: Redefine terms looking like compact IRIs PASS PASS PASS PASS PASS PASS PASS PASS
Test 0072: Redefine term using @vocab, not itself PASS PASS PASS PASS PASS PASS PASS PASS
Test 0073: @context not first property PASS PASS PASS PASS PASS PASS PASS PASS
Test 0074: @id not first property PASS PASS PASS PASS PASS PASS PASS PASS
Test 0075: @vocab as blank node identifier PASS PASS PASS PASS PASS PASS PASS PASS
Test 0076: base option overrides document location