JSON-LD Test suite updated

I updated the test suite mechanics and added the compaction, expansion, framing and normalization tests from the jsonld.js project. The suite does not run itself yet, but the format is fairly straight forward:

In http://json-ld.org/test-suite/manifest.jsonld is the driving manifest, which loads manifests in the tests/ sub-directory for each category. These manifests have a list of the tests with their necessary inputs and outputs.

I run these tests through my Ruby runner, and I've attached the output I get at this point.

I made a couple of changes to the jsonld.js version of the tests: the manifests are now all JSON-LD documents, based on the test-description vocabulary used with RDFa. Context documents for compaction tests are now full JSON-LD documents, not just the content of the @context. The Node.js running used in jsonld.js should work with some minor updates.

The documentation page [1] could use some improvement, and could list the content of the manifests, if not be turned into a complete test runner.

Gregg

[1] http://json-ld.org/test-suite/

Test output for Ruby JSON-LD:

[json-ld] rspec spec/suite_spec.rb --format documentation
No examples matched {:focus=>true}. Running all.
Run filtered excluding {:ruby=>#<Proc:./spec/spec_helper.rb:34>}

JSON::LD
  test suite
    JSON-LD Test Suite
      compact
        compact-0001-in.jsonld: add context
        compact-0002-in.jsonld: reduced context
        compact-0003-in.jsonld: coerced ex:contains
        compact-0004-in.jsonld: with coerce
        compact-0005-in.jsonld: with date coerce
        compact-0006-in.jsonld: native types
        compact-0007-in.jsonld: native types with coerce
        compact-0008-in.jsonld: literal with language
        compact-0009-in.jsonld: disjoint graph as array (FAILED - 1)
        compact-0010-in.jsonld: alias keywords (FAILED - 2)
      expand
        expand-0001-in.jsonld: id
        expand-0002-in.jsonld: complex
        expand-0003-in.jsonld: coerced ex:contains
        expand-0004-in.jsonld: remove type-coercion context
        expand-0005-in.jsonld: native types (FAILED - 3)
        expand-0006-in.jsonld: native expanded type
        expand-0007-in.jsonld: literal with language
        expand-0008-in.jsonld: alias keywords
        expand-0009-in.jsonld: terms
      frame
        frame-0001-in.jsonld: simple (PENDING: Framing)
        frame-0002-in.jsonld: reframe w/extra CURIE value (PENDING: Framing)
        frame-0003-in.jsonld: reframe (null) (PENDING: Framing)
        frame-0004-in.jsonld: reframe (type) (PENDING: Framing)
        frame-0005-in.jsonld: reframe (explicit) (PENDING: Framing)
        frame-0006-in.jsonld: reframe (non-explicit) (PENDING: Framing)
        frame-0007-in.jsonld: input has multiple types (PENDING: Framing)
        frame-0008-in.jsonld: array framing cases (PENDING: Framing)
        frame-0009-in.jsonld: default value (PENDING: Framing)
        frame-0010-in.jsonld: property CURIE conflict (PENDING: Framing)
        frame-0011-in.jsonld: @embed (PENDING: Framing)
        frame-0012-in.jsonld: Array frame (PENDING: Framing)
        frame-0013-in.jsonld: Replace existing embed (PENDING: Framing)
        frame-0014-in.jsonld: Replace existing embed on 2nd pass (PENDING: Framing)
        frame-0015-in.jsonld: Replace deeply-nested embed (PENDING: Framing)
      normalize
        normalize-0001-in.jsonld: simple id (PENDING: Normalization)
        normalize-0002-in.jsonld: duplicate property iri values (PENDING: Normalization)
        normalize-0003-in.jsonld: bnode (PENDING: Normalization)
        normalize-0004-in.jsonld: bnode plus embed w/subject (PENDING: Normalization)
        normalize-0005-in.jsonld: bnode embed (PENDING: Normalization)
        normalize-0006-in.jsonld: multiple rdf types (PENDING: Normalization)
        normalize-0007-in.jsonld: coerce CURIE value (PENDING: Normalization)
        normalize-0008-in.jsonld: single subject complex (PENDING: Normalization)
        normalize-0009-in.jsonld: multiple subjects - complex (PENDING: Normalization)
        normalize-0010-in.jsonld: type (PENDING: Normalization)
        normalize-0011-in.jsonld: type-coerced type (PENDING: Normalization)
        normalize-0012-in.jsonld: type-coerced type, double reference (PENDING: Normalization)
        normalize-0013-in.jsonld: type-coerced type, cycle (PENDING: Normalization)
        normalize-0014-in.jsonld: check types (PENDING: Normalization)
        normalize-0015-in.jsonld: top level context (PENDING: Normalization)
        normalize-0016-in.jsonld: blank node - dual link - embed (PENDING: Normalization)
        normalize-0017-in.jsonld: blank node - dual link - non-embed (PENDING: Normalization)
        normalize-0018-in.jsonld: blank node - self link (PENDING: Normalization)
        normalize-0019-in.jsonld: blank node - disjoint self links (PENDING: Normalization)
        normalize-0020-in.jsonld: blank node - diamond (PENDING: Normalization)
        normalize-0021-in.jsonld: blank node - circle of 2 (PENDING: Normalization)
        normalize-0022-in.jsonld: blank node - double circle of 2 (PENDING: Normalization)
        normalize-0023-in.jsonld: blank node - circle of 3 (PENDING: Normalization)
        normalize-0024-in.jsonld: blank node - double circle of 3 (1-2-3) (PENDING: Normalization)
        normalize-0025-in.jsonld: blank node - double circle of 3 (1-3-2) (PENDING: Normalization)
        normalize-0026-in.jsonld: blank node - double circle of 3 (2-1-3) (PENDING: Normalization)
        normalize-0027-in.jsonld: blank node - double circle of 3 (2-3-1) (PENDING: Normalization)
        normalize-0028-in.jsonld: blank node - double circle of 3 (3-2-1) (PENDING: Normalization)
        normalize-0029-in.jsonld: blank node - double circle of 3 (3-1-2) (PENDING: Normalization)
        normalize-0030-in.jsonld: blank node - point at circle of 3 (PENDING: Normalization)
        normalize-0031-in.jsonld: bnode (1) (PENDING: Normalization)
        normalize-0032-in.jsonld: bnode (2) (PENDING: Normalization)
        normalize-0033-in.jsonld: disjoint identical subgraphs (1) (PENDING: Normalization)
        normalize-0034-in.jsonld: disjoint identical subgraphs (2) (PENDING: Normalization)
        normalize-0035-in.jsonld: reordered w/strings (1) (PENDING: Normalization)
        normalize-0036-in.jsonld: reordered w/strings (2) (PENDING: Normalization)
        normalize-0037-in.jsonld: reordered w/strings (3) (PENDING: Normalization)
        normalize-0038-in.jsonld: reordered 4 bnodes, reordered 2 properties (1) (PENDING: Normalization)
        normalize-0039-in.jsonld: reordered 4 bnodes, reordered 2 properties (2) (PENDING: Normalization)
        normalize-0040-in.jsonld: reordered 6 bnodes (1) (PENDING: Normalization)
        normalize-0041-in.jsonld: reordered 6 bnodes (2) (PENDING: Normalization)
        normalize-0042-in.jsonld: reordered 6 bnodes (3) (PENDING: Normalization)
        normalize-0043-in.jsonld: literal with language (PENDING: Normalization)
        normalize-0044-in.jsonld: evil (1) (PENDING: Normalization)
        normalize-0045-in.jsonld: evil (2) (PENDING: Normalization)
        normalize-0046-in.jsonld: evil (3) (PENDING: Normalization)
        normalize-0047-in.jsonld: deep diff (1) (PENDING: Normalization)
        normalize-0048-in.jsonld: deep diff (2) (PENDING: Normalization)
        normalize-0049-in.jsonld: remove null (PENDING: Normalization)
        normalize-0050-in.jsonld: nulls (PENDING: Normalization)
        normalize-0051-in.jsonld: merging subjects (PENDING: Normalization)
        normalize-0052-in.jsonld: alias keywords (PENDING: Normalization)
      rdf
        rdf-0001.jsonld: Plain literal with URIs
        rdf-0002.jsonld: Plain literal with CURIE from default context
        rdf-0003.jsonld: Default subject is BNode
        rdf-0004.jsonld: Literal with language tag
        rdf-0005.jsonld: Extended character set literal
        rdf-0006.jsonld: Typed literal
        rdf-0007.jsonld: Tests 'a' generates rdf:type and object is implicit IRI
        rdf-0008.jsonld: Test prefix defined in @context
        rdf-0009.jsonld: Test using default prefix
        rdf-0010.jsonld: Test object processing defines object
        rdf-0011.jsonld: Test object processing defines object with implicit BNode
        rdf-0012.jsonld: Multiple Objects for a Single Property
        rdf-0013.jsonld: Creation of an empty list
        rdf-0014.jsonld: Creation of a list with single element
        rdf-0015.jsonld: Creation of a list with multiple elements
        rdf-0016.jsonld: Empty IRI expands to resource location
        rdf-0017.jsonld: Relative IRI expands relative resource location
        rdf-0018.jsonld: Frag ID expands relative resource location
        rdf-0019.jsonld: Test type coercion to anyURI
        rdf-0020.jsonld: Test type coercion to typed literal
        rdf-0021.jsonld: Test coercion of decimal value to double
        rdf-0022.jsonld: Test coercion of double value
        rdf-0023.jsonld: Test coercion of integer value
        rdf-0024.jsonld: Test coercion of boolean value
        rdf-0025.jsonld: Test list coercion with single element
        rdf-0026.jsonld: Test creation of multiple types

Pending:
  JSON::LD test suite JSON-LD Test Suite frame frame-0001-in.jsonld: simple
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0002-in.jsonld: reframe w/extra CURIE value
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0003-in.jsonld: reframe (null)
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0004-in.jsonld: reframe (type)
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0005-in.jsonld: reframe (explicit)
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0006-in.jsonld: reframe (non-explicit)
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0007-in.jsonld: input has multiple types
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0008-in.jsonld: array framing cases
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0009-in.jsonld: default value
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0010-in.jsonld: property CURIE conflict
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0011-in.jsonld: @embed
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0012-in.jsonld: Array frame
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0013-in.jsonld: Replace existing embed
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0014-in.jsonld: Replace existing embed on 2nd pass
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite frame frame-0015-in.jsonld: Replace deeply-nested embed
    # Framing
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0001-in.jsonld: simple id
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0002-in.jsonld: duplicate property iri values
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0003-in.jsonld: bnode
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0004-in.jsonld: bnode plus embed w/subject
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0005-in.jsonld: bnode embed
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0006-in.jsonld: multiple rdf types
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0007-in.jsonld: coerce CURIE value
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0008-in.jsonld: single subject complex
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0009-in.jsonld: multiple subjects - complex
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0010-in.jsonld: type
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0011-in.jsonld: type-coerced type
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0012-in.jsonld: type-coerced type, double reference
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0013-in.jsonld: type-coerced type, cycle
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0014-in.jsonld: check types
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0015-in.jsonld: top level context
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0016-in.jsonld: blank node - dual link - embed
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0017-in.jsonld: blank node - dual link - non-embed
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0018-in.jsonld: blank node - self link
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0019-in.jsonld: blank node - disjoint self links
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0020-in.jsonld: blank node - diamond
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0021-in.jsonld: blank node - circle of 2
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0022-in.jsonld: blank node - double circle of 2
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0023-in.jsonld: blank node - circle of 3
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0024-in.jsonld: blank node - double circle of 3 (1-2-3)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0025-in.jsonld: blank node - double circle of 3 (1-3-2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0026-in.jsonld: blank node - double circle of 3 (2-1-3)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0027-in.jsonld: blank node - double circle of 3 (2-3-1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0028-in.jsonld: blank node - double circle of 3 (3-2-1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0029-in.jsonld: blank node - double circle of 3 (3-1-2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0030-in.jsonld: blank node - point at circle of 3
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0031-in.jsonld: bnode (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0032-in.jsonld: bnode (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0033-in.jsonld: disjoint identical subgraphs (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0034-in.jsonld: disjoint identical subgraphs (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0035-in.jsonld: reordered w/strings (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0036-in.jsonld: reordered w/strings (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0037-in.jsonld: reordered w/strings (3)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0038-in.jsonld: reordered 4 bnodes, reordered 2 properties (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0039-in.jsonld: reordered 4 bnodes, reordered 2 properties (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0040-in.jsonld: reordered 6 bnodes (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0041-in.jsonld: reordered 6 bnodes (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0042-in.jsonld: reordered 6 bnodes (3)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0043-in.jsonld: literal with language
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0044-in.jsonld: evil (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0045-in.jsonld: evil (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0046-in.jsonld: evil (3)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0047-in.jsonld: deep diff (1)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0048-in.jsonld: deep diff (2)
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0049-in.jsonld: remove null
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0050-in.jsonld: nulls
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0051-in.jsonld: merging subjects
    # Normalization
    # ./spec/suite_spec.rb:14
  JSON::LD test suite JSON-LD Test Suite normalize normalize-0052-in.jsonld: alias keywords
    # Normalization
    # ./spec/suite_spec.rb:14

Failures:

  1) JSON::LD test suite JSON-LD Test Suite compact compact-0009-in.jsonld: disjoint graph as array
     Failure/Error: result = JSON::LD::API.compact(t.input, t.context,
     TypeError:
       can't convert Array into Hash
     # ./lib/json/ld/api.rb:155:in `merge'
     # ./lib/json/ld/api.rb:155:in `block in compact'
     # ./lib/json/ld/api.rb:31:in `initialize'
     # ./lib/json/ld/api.rb:148:in `new'
     # ./lib/json/ld/api.rb:148:in `compact'
     # ./spec/suite_spec.rb:18:in `block (8 levels) in <top (required)>'

  2) JSON::LD test suite JSON-LD Test Suite compact compact-0010-in.jsonld: alias keywords
     Failure/Error: JSON.parse(result).should produce(expected, t.debug)
       Expected: {
         "@context": {
           "http://example.org/test#property2": {
             "@type": "uri"
           },
           "http://example.org/test#property3": {
             "@type": "uri"
           },
           "uri": "@id"
         },
         "http://example.org/test#property1": {
           "http://example.org/test#property4": "foo",
           "uri": "http://example.org/test#example2"
         },
         "http://example.org/test#property2": "http://example.org/test#example3",
         "http://example.org/test#property3": "http://example.org/test#example4",
         "uri": "http://example.org/test#example1"
       }
       Actual  : {
         "@context": {
           "http://example.org/test#property1": {
             "@type": "uri"
           },
           "http://example.org/test#property2": {
             "@type": "uri"
           },
           "http://example.org/test#property3": {
             "@type": "uri"
           },
           "uri": "@id"
         },
         "@id": "http://example.org/test#example1",
         "http://example.org/test#property1": {
           "@id": "http://example.org/test#example2",
           "http://example.org/test#property4": "foo"
         },
         "http://example.org/test#property2": "http://example.org/test#example3",
         "http://example.org/test#property3": "http://example.org/test#example4"
       }
       Processing results:
       init: iri_to_term: {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd"}
       expand: input: Hash, predicate: nil, context: [EvaluationContext, mappings[0]={}, coercions[0]={}, lists[0]={}]
       expand: @id: "http://example.org/test#example1"
       expand_iri: prefix: "http", suffix: "//example.org/test#example1"
       expand:  => #<RDF::URI:0x8159960c(http://example.org/test#example1)>
       expand: http://example.org/test#property1: {"@id"=>"http://example.org/test#example2", "http://example.org/test#property4"=>"foo"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property1"
         expand: input: Hash, predicate: #<RDF::URI:0x81594044(http://example.org/test#property1)>, context: [EvaluationContext, mappings[0]={}, coercions[0]={}, lists[0]={}]
         expand: @id: "http://example.org/test#example2"
       expand_iri: prefix: "http", suffix: "//example.org/test#example2"
         expand:  => #<RDF::URI:0x8159339c(http://example.org/test#example2)>
         expand: http://example.org/test#property4: "foo"
       expand_iri: prefix: "http", suffix: "//example.org/test#property4"
           expand_value: predicate: http://example.org/test#property4, value: "foo", coerce: nil
           => "foo"
         expand:  => "foo"
       expand:  => {"@id"=>#<RDF::URI:0x8159339c(http://example.org/test#example2)>, "http://example.org/test#property4"=>"foo"}
       expand: http://example.org/test#property2: {"@id"=>"http://example.org/test#example3"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property2"
         expand: input: Hash, predicate: #<RDF::URI:0x81591a10(http://example.org/test#property2)>, context: [EvaluationContext, mappings[0]={}, coercions[0]={}, lists[0]={}]
         expand: @id: "http://example.org/test#example3"
       expand_iri: prefix: "http", suffix: "//example.org/test#example3"
         expand:  => #<RDF::URI:0x81590da4(http://example.org/test#example3)>
       expand:  => {"@id"=>#<RDF::URI:0x81590da4(http://example.org/test#example3)>}
       expand: http://example.org/test#property3: {"@id"=>"http://example.org/test#example4"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property3"
         expand: input: Hash, predicate: #<RDF::URI:0x8157bf80(http://example.org/test#property3)>, context: [EvaluationContext, mappings[0]={}, coercions[0]={}, lists[0]={}]
         expand: @id: "http://example.org/test#example4"
       expand_iri: prefix: "http", suffix: "//example.org/test#example4"
         expand:  => #<RDF::URI:0x81578484(http://example.org/test#example4)>
       expand:  => {"@id"=>#<RDF::URI:0x81578484(http://example.org/test#example4)>}
       init: iri_to_term: {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd"}
       parse: io: #<File:0x00000102b35080>
       parse: => provided_context: {"http://example.org/test#property1"=>{"@type"=>"uri"}, "http://example.org/test#property2"=>{"@type"=>"uri"}, "http://example.org/test#property3"=>{"@type"=>"uri"}, "uri"=>"@id"}
       parse: Hash[http://example.org/test#property1] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property1"
       parse: Hash[http://example.org/test#property2] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property2"
       parse: Hash[http://example.org/test#property3] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property3"
       parse: Hash[uri] = "@id"
       expand_iri: prefix: "@id", suffix: nil
       map "uri" to @id
       parse: Hash[http://example.org/test#property1] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property1"
       parse: Hash[http://example.org/test#property2] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property2"
       parse: Hash[http://example.org/test#property3] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property3"
       parse: Hash[uri] = "@id"
       expand_iri: prefix: "@id", suffix: nil
       parse: coercion/list: Hash[http://example.org/test#property1] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property1"
       expand_iri: prefix: "uri", suffix: nil
       parse: coerce "http://example.org/test#property1" to #<RDF::URI:0x81571c88(@id)>
       coerce "http://example.org/test#property1" to @id
       parse: coercion/list: Hash[http://example.org/test#property2] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property2"
       expand_iri: prefix: "uri", suffix: nil
       parse: coerce "http://example.org/test#property2" to #<RDF::URI:0x81555268(@id)>
       coerce "http://example.org/test#property2" to @id
       parse: coercion/list: Hash[http://example.org/test#property3] = {"@type"=>"uri"}
       expand_iri: prefix: "http", suffix: "//example.org/test#property3"
       expand_iri: prefix: "uri", suffix: nil
       parse: coerce "http://example.org/test#property3" to #<RDF::URI:0x81554070(@id)>
       coerce "http://example.org/test#property3" to @id
       parse: coercion/list: Hash[uri] = "@id"
       expand_iri: prefix: "uri", suffix: nil
       compact: input: Hash, predicate: nil
       compact: @id: #<RDF::URI:0x8159960c(http://example.org/test#example1)>
         compact_iri({:position=>:subject, :depth=>nil}, #<RDF::URI:0x8159960c(http://example.org/test#example1)>)
         get_curie(#<RDF::URI:0x8159960c(http://example.org/test#example1)>)
         no mapping found for http://example.org/test#example1 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
         => "http://example.org/test#example1"
       compact:  => "http://example.org/test#example1"
       compact: http://example.org/test#property1: {"@id"=>#<RDF::URI:0x8159339c(http://example.org/test#example2)>, "http://example.org/test#property4"=>"foo"}
         compact_iri({:position=>:predicate, :depth=>nil}, "http://example.org/test#property1")
         get_curie("http://example.org/test#property1")
         no mapping found for http://example.org/test#property1 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
         => "http://example.org/test#property1"
       compact:  => compacted key: "http://example.org/test#property1"
       compact: object
         compact: input: Hash, predicate: #<RDF::URI:0x8153d410(http://example.org/test#property1)>
         compact: @id: #<RDF::URI:0x8159339c(http://example.org/test#example2)>
           compact_iri({:position=>:subject, :depth=>1}, #<RDF::URI:0x8159339c(http://example.org/test#example2)>)
           get_curie(#<RDF::URI:0x8159339c(http://example.org/test#example2)>)
           no mapping found for http://example.org/test#example2 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
           => "http://example.org/test#example2"
         compact:  => "http://example.org/test#example2"
         compact: http://example.org/test#property4: "foo"
           compact_iri({:position=>:predicate, :depth=>1}, "http://example.org/test#property4")
           get_curie("http://example.org/test#property4")
           no mapping found for http://example.org/test#property4 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
           => "http://example.org/test#property4"
         compact:  => compacted key: "http://example.org/test#property4"
         compact: value
         compact:  => compacted value: "foo"
       compact:  => compacted value: {"@id"=>"http://example.org/test#example2", "http://example.org/test#property4"=>"foo"}
       compact: http://example.org/test#property2: {"@id"=>#<RDF::URI:0x81590da4(http://example.org/test#example3)>}
         compact_iri({:position=>:predicate, :depth=>0}, "http://example.org/test#property2")
         get_curie("http://example.org/test#property2")
         no mapping found for http://example.org/test#property2 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
         => "http://example.org/test#property2"
       compact:  => compacted key: "http://example.org/test#property2"
       compact: keys: ["@id"]
         compact_value: predicate: #<RDF::URI:0x815264f4(http://example.org/test#property2)>, value: {"@id"=>#<RDF::URI:0x81590da4(http://example.org/test#example3)>}, coerce: #<RDF::URI:0x81555268(@id)>
          (@id & coerce)
           compact_iri({:position=>:object}, #<RDF::URI:0x81590da4(http://example.org/test#example3)>)
           get_curie(#<RDF::URI:0x81590da4(http://example.org/test#example3)>)
           no mapping found for http://example.org/test#example3 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
           => "http://example.org/test#example3"
         => "http://example.org/test#example3"
       compact:  => compacted value: "http://example.org/test#example3"
       compact: http://example.org/test#property3: {"@id"=>#<RDF::URI:0x81578484(http://example.org/test#example4)>}
         compact_iri({:position=>:predicate, :depth=>0}, "http://example.org/test#property3")
         get_curie("http://example.org/test#property3")
         no mapping found for http://example.org/test#property3 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
         => "http://example.org/test#property3"
       compact:  => compacted key: "http://example.org/test#property3"
       compact: keys: ["@id"]
         compact_value: predicate: #<RDF::URI:0x81524690(http://example.org/test#property3)>, value: {"@id"=>#<RDF::URI:0x81578484(http://example.org/test#example4)>}, coerce: #<RDF::URI:0x81554070(@id)>
          (@id & coerce)
           compact_iri({:position=>:object}, #<RDF::URI:0x81578484(http://example.org/test#example4)>)
           get_curie(#<RDF::URI:0x81578484(http://example.org/test#example4)>)
           no mapping found for http://example.org/test#example4 in {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd", "@id"=>"uri"}
           => "http://example.org/test#example4"
         => "http://example.org/test#example4"
       compact:  => compacted value: "http://example.org/test#example4"
         serlialize: reuse context: {"http://example.org/test#property1"=>{"@type"=>"uri"}, "http://example.org/test#property2"=>{"@type"=>"uri"}, "http://example.org/test#property3"=>{"@type"=>"uri"}, "uri"=>"@id"}
     # ./spec/suite_spec.rb:22:in `block (8 levels) in <top (required)>'

  3) JSON::LD test suite JSON-LD Test Suite expand expand-0005-in.jsonld: native types
     Failure/Error: JSON.parse(result).should produce(expected, t.debug)
       Expected: {
         "@id": "http://example.org/test",
         "http://example.org/vocab#bool": {
           "@literal": "true",
           "@type": "http://www.w3.org/2001/XMLSchema#boolean"
         },
         "http://example.org/vocab#double": {
           "@literal": "1.230000e+00",
           "@type": "http://www.w3.org/2001/XMLSchema#double"
         },
         "http://example.org/vocab#double-zero": {
           "@literal": "0.000000e+00",
           "@type": "http://www.w3.org/2001/XMLSchema#double"
         },
         "http://example.org/vocab#int": {
           "@literal": "123",
           "@type": "http://www.w3.org/2001/XMLSchema#integer"
         }
       }
       Actual  : {
         "@id": "http://example.org/test",
         "http://example.org/vocab#bool": {
           "@literal": "true",
           "@type": "http://www.w3.org/2001/XMLSchema#boolean"
         },
         "http://example.org/vocab#double": {
           "@literal": "1.23",
           "@type": "http://www.w3.org/2001/XMLSchema#double"
         },
         "http://example.org/vocab#double-zero": {
           "@literal": "0",
           "@type": "http://www.w3.org/2001/XMLSchema#integer"
         },
         "http://example.org/vocab#int": {
           "@literal": "123",
           "@type": "http://www.w3.org/2001/XMLSchema#integer"
         }
       }
       Processing results:
       init: iri_to_term: {"http://www.w3.org/1999/02/22-rdf-syntax-ns#"=>"rdf", "http://www.w3.org/2001/XMLSchema#"=>"xsd"}
       expand: input: Hash, predicate: nil, context: [EvaluationContext, mappings[0]={}, coercions[0]={}, lists[0]={}]
       parse: => provided_context: {"d"=>"http://purl.org/dc/elements/1.1/", "e"=>"http://example.org/vocab#", "e:double-zero"=>{"@type"=>"xsd:double"}, "f"=>"http://xmlns.com/foaf/0.1/", "xsd"=>"http://www.w3.org/2001/XMLSchema#"}
       parse: Hash[d] = "http://purl.org/dc/elements/1.1/"
       expand_iri: prefix: "http", suffix: "//purl.org/dc/elements/1.1/"
       map "d" to http://purl.org/dc/elements/1.1/
       parse: Hash[e] = "http://example.org/vocab#"
       expand_iri: prefix: "http", suffix: "//example.org/vocab#"
       map "e" to http://example.org/vocab#
       parse: Hash[e:double-zero] = {"@type"=>"xsd:double"}
       expand_iri: prefix: "e", suffix: "double-zero"
       parse: Hash[f] = "http://xmlns.com/foaf/0.1/"
       expand_iri: prefix: "http", suffix: "//xmlns.com/foaf/0.1/"
       map "f" to http://xmlns.com/foaf/0.1/
       parse: Hash[xsd] = "http://www.w3.org/2001/XMLSchema#"
       expand_iri: prefix: "http", suffix: "//www.w3.org/2001/XMLSchema#"
       map "xsd" to http://www.w3.org/2001/XMLSchema#
       parse: Hash[d] = "http://purl.org/dc/elements/1.1/"
       expand_iri: prefix: "http", suffix: "//purl.org/dc/elements/1.1/"
       parse: Hash[e] = "http://example.org/vocab#"
       expand_iri: prefix: "http", suffix: "//example.org/vocab#"
       parse: Hash[e:double-zero] = {"@type"=>"xsd:double"}
       expand_iri: prefix: "e", suffix: "double-zero"
       parse: Hash[f] = "http://xmlns.com/foaf/0.1/"
       expand_iri: prefix: "http", suffix: "//xmlns.com/foaf/0.1/"
       parse: Hash[xsd] = "http://www.w3.org/2001/XMLSchema#"
       expand_iri: prefix: "http", suffix: "//www.w3.org/2001/XMLSchema#"
       parse: coercion/list: Hash[d] = "http://purl.org/dc/elements/1.1/"
       expand_iri: prefix: "d", suffix: nil
       parse: coercion/list: Hash[e] = "http://example.org/vocab#"
       expand_iri: prefix: "e", suffix: nil
       parse: coercion/list: Hash[e:double-zero] = {"@type"=>"xsd:double"}
       expand_iri: prefix: "e", suffix: "double-zero"
       expand_iri: prefix: "xsd", suffix: "double"
       parse: coerce "http://example.org/vocab#double-zero" to #<RDF::URI:0x8147d0fc(http://www.w3.org/2001/XMLSchema#double)>
       coerce "http://example.org/vocab#double-zero" to http://www.w3.org/2001/XMLSchema#double
       parse: coercion/list: Hash[f] = "http://xmlns.com/foaf/0.1/"
       expand_iri: prefix: "f", suffix: nil
       parse: coercion/list: Hash[xsd] = "http://www.w3.org/2001/XMLSchema#"
       expand_iri: prefix: "xsd", suffix: nil
       expand: @context: {"d"=>"http://purl.org/dc/elements/1.1/", "e"=>"http://example.org/vocab#", "e:double-zero"=>{"@type"=>"xsd:double"}, "f"=>"http://xmlns.com/foaf/0.1/", "xsd"=>"http://www.w3.org/2001/XMLSchema#"}
       expand: @id: "http://example.org/test"
       expand_iri: prefix: "http", suffix: "//example.org/test"
       expand:  => #<RDF::URI:0x8147a208(http://example.org/test)>
       expand: e:bool: true
       expand_iri: prefix: "e", suffix: "bool"
         expand_value: predicate: http://example.org/vocab#bool, value: true, coerce: nil
         => {"@literal"=>"true", "@type"=>"http://www.w3.org/2001/XMLSchema#boolean"}
       expand:  => {"@literal"=>"true", "@type"=>"http://www.w3.org/2001/XMLSchema#boolean"}
       expand: e:double: 1.23
       expand_iri: prefix: "e", suffix: "double"
         expand_value: predicate: http://example.org/vocab#double, value: 1.23, coerce: nil
         => {"@literal"=>"1.23", "@type"=>"http://www.w3.org/2001/XMLSchema#double"}
       expand:  => {"@literal"=>"1.23", "@type"=>"http://www.w3.org/2001/XMLSchema#double"}
       expand: e:double-zero: 0
       expand_iri: prefix: "e", suffix: "double-zero"
         expand_value: predicate: http://example.org/vocab#double-zero, value: 0, coerce: #<RDF::URI:0x8147d0fc(http://www.w3.org/2001/XMLSchema#double)>
         => {"@literal"=>"0", "@type"=>"http://www.w3.org/2001/XMLSchema#integer"}
       expand:  => {"@literal"=>"0", "@type"=>"http://www.w3.org/2001/XMLSchema#integer"}
       expand: e:int: 123
       expand_iri: prefix: "e", suffix: "int"
         expand_value: predicate: http://example.org/vocab#int, value: 123, coerce: nil
         => {"@literal"=>"123", "@type"=>"http://www.w3.org/2001/XMLSchema#integer"}
       expand:  => {"@literal"=>"123", "@type"=>"http://www.w3.org/2001/XMLSchema#integer"}
     # ./spec/suite_spec.rb:28:in `block (8 levels) in <top (required)>'

Finished in 2.21 seconds
112 examples, 3 failures, 67 pending

Failed examples:

rspec ./spec/suite_spec.rb:14 # JSON::LD test suite JSON-LD Test Suite compact compact-0009-in.jsonld: disjoint graph as array
rspec ./spec/suite_spec.rb:14 # JSON::LD test suite JSON-LD Test Suite compact compact-0010-in.jsonld: alias keywords
rspec ./spec/suite_spec.rb:14 # JSON::LD test suite JSON-LD Test Suite expand expand-0005-in.jsonld: native types
[json-ld]

Received on Thursday, 5 January 2012 21:22:32 UTC