json-ld 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,13 +10,15 @@ module JSON::LD
10
10
  # @param [Hash{String => Hash}] nodes
11
11
  # Map of flattened nodes
12
12
  # @param [Hash{String => Object}] frame
13
- # @param [Hash{String => Object}] parent
13
+ # @param [Hash{Symbol => Object}] options ({})
14
+ # @option options [Hash{String => Object}] :parent
14
15
  # Parent node or top-level array
15
- # @param [String] property
16
+ # @option options [String] :property
16
17
  # Property referencing this frame, or null for array.
17
18
  # @raise [JSON::LD::InvalidFrame]
18
- def frame(state, nodes, frame, parent, property)
19
+ def frame(state, nodes, frame, options = {})
19
20
  depth do
21
+ parent, property = options[:parent], options[:property]
20
22
  debug("frame") {"state: #{state.inspect}"}
21
23
  debug("frame") {"nodes: #{nodes.keys.inspect}"}
22
24
  debug("frame") {"frame: #{frame.to_json(JSON_STATE)}"}
@@ -48,9 +50,7 @@ module JSON::LD
48
50
 
49
51
  # If embedOn is true, and id is in map of embeds from state
50
52
  if embed && (existing = state[:embeds].fetch(id, nil))
51
- # only overwrite an existing embed if it has already been added to its
52
- # parent -- otherwise its parent is somewhere up the tree from this
53
- # embed and the embed would occur twice once the tree is added
53
+ # only overwrite an existing embed if it has already been added to its parent -- otherwise its parent is somewhere up the tree from this embed and the embed would occur twice once the tree is added
54
54
  embed = false
55
55
 
56
56
  embed = if existing[:parent].is_a?(Array)
@@ -114,7 +114,7 @@ module JSON::LD
114
114
  debug("frame") {"list item of #{prop} recurse for #{itemid.inspect}"}
115
115
 
116
116
  # If listitem is a node reference process listitem recursively using this algorithm passing a new map of nodes that contains the @id of listitem as the key and the node reference as the value. Pass the first value from frame for property as frame, list as parent, and @list as active property.
117
- frame(state, {itemid => @node_map[itemid]}, frame[prop].first, list, '@list')
117
+ frame(state, {itemid => @node_map[itemid]}, frame[prop].first, parent: list, property: '@list')
118
118
  else
119
119
  # Otherwise, append a copy of listitem to @list in list.
120
120
  debug("frame") {"list item of #{prop} non-node ref #{listitem.inspect}"}
@@ -128,7 +128,7 @@ module JSON::LD
128
128
  debug("frame") {"value property #{prop} recurse for #{itemid.inspect}"}
129
129
 
130
130
  # passing a new map as nodes that contains the @id of item as the key and the node reference as the value. Pass the first value from frame for property as frame, output as parent, and property as active property
131
- frame(state, {itemid => @node_map[itemid]}, frame[prop].first, output, prop)
131
+ frame(state, {itemid => @node_map[itemid]}, frame[prop].first, parent: output, property: prop)
132
132
  else
133
133
  # Otherwise, append a copy of item to active property in output.
134
134
  debug("frame") {"value property #{prop} non-node ref #{item.inspect}"}
@@ -13,6 +13,7 @@ module JSON::LD
13
13
  def from_statements(input)
14
14
  default_graph = {}
15
15
  graph_map = {'@default' => default_graph}
16
+ node_usages_map = {}
16
17
 
17
18
  value = nil
18
19
  ec = Context.new
@@ -51,9 +52,12 @@ module JSON::LD
51
52
  if statement.object.resource?
52
53
  # Append a new JSON object consisting of three members, node, property, and value to the usages array. The node member is set to a reference to node, property to predicate, and value to a reference to value.
53
54
  merge_value(node_map[statement.object.to_s], :usages, {
54
- :node => node,
55
- :property => statement.predicate.to_s,
56
- :value => value})
55
+ node: node,
56
+ property: statement.predicate.to_s,
57
+ value: value
58
+ })
59
+
60
+ (node_usages_map[statement.object.to_s] ||= []) << node['@id']
57
61
  end
58
62
  end
59
63
 
@@ -69,6 +73,7 @@ module JSON::LD
69
73
  # If property equals rdf:rest, the value associated to the usages member of node has exactly 1 entry, node has a rdf:first and rdf:rest property, both of which have as value an array consisting of a single element, and node has no other members apart from an optional @type member whose value is an array with a single item equal to rdf:List, node represents a well-formed list node. Continue with the following steps:
70
74
  debug("list element?") {node.to_json(JSON_STATE)}
71
75
  while property == RDF.rest.to_s &&
76
+ node_usages_map[node['@id']].uniq.length == 1 &&
72
77
  blank_node?(node) &&
73
78
  node.keys.none? {|k| !["@id", '@type', :usages, RDF.first.to_s, RDF.rest.to_s].include?(k)} &&
74
79
  Array(node[:usages]).length == 1 &&
@@ -85,6 +85,8 @@ module JSON::LD
85
85
  # Add standard prefixes to @prefixes, if necessary.
86
86
  # @option options [IO, Array, Hash, String, Context] :context ({})
87
87
  # context to use when serializing. Constructed context for native serialization.
88
+ # @option options [IO, Array, Hash, String, Context] :frame ({})
89
+ # frame to use when serializing.
88
90
  # @option options [Boolean] :unique_bnodes (false)
89
91
  # Use unique bnode identifiers, defaults to using the identifier which the node was originall initialized with (if any).
90
92
  # @yield [writer] `self`
@@ -168,8 +170,13 @@ module JSON::LD
168
170
  result = API.flatten(result, context, @options)
169
171
  end
170
172
 
171
- # Perform compaction, if we have a context
172
- if context
173
+ frame = RDF::Util::File.open_file(@options[:frame]) if @options[:frame].is_a?(String)
174
+ if frame ||= @options[:frame]
175
+ # Perform framing, if given a frame
176
+ debug("writer") { "frame result"}
177
+ result = API.frame(result, frame, @options)
178
+ elsif context
179
+ # Perform compaction, if we have a context
173
180
  debug("writer") { "compact result"}
174
181
  result = API.compact(result, context, @options)
175
182
  end
@@ -21,21 +21,21 @@ describe JSON::LD::API do
21
21
  options = {:debug => @debug}
22
22
  options[:expandContext] = File.open(context) if context
23
23
  jld = JSON::LD::API.expand(File.open(filename), options)
24
- jld.should produce(JSON.load(File.open(expanded)), @debug)
24
+ expect(jld).to produce(JSON.load(File.open(expanded)), @debug)
25
25
  end if File.exist?(expanded)
26
26
 
27
27
  it "compacts" do
28
28
  jld = JSON::LD::API.compact(File.open(filename), File.open(context), :debug => @debug)
29
- jld.should produce(JSON.load(File.open(compacted)), @debug)
29
+ expect(jld).to produce(JSON.load(File.open(compacted)), @debug)
30
30
  end if File.exist?(compacted) && File.exist?(context)
31
31
 
32
32
  it "frame" do
33
33
  jld = JSON::LD::API.frame(File.open(filename), File.open(frame), :debug => @debug)
34
- jld.should produce(JSON.load(File.open(framed)), @debug)
34
+ expect(jld).to produce(JSON.load(File.open(framed)), @debug)
35
35
  end if File.exist?(framed) && File.exist?(frame)
36
36
 
37
37
  it "toRdf" do
38
- RDF::Repository.load(filename, :debug => @debug).should be_equivalent_graph(RDF::Repository.load(ttl), :trace => @debug)
38
+ expect(RDF::Repository.load(filename, :debug => @debug)).to be_equivalent_graph(RDF::Repository.load(ttl), :trace => @debug)
39
39
  end if File.exist?(ttl)
40
40
  end
41
41
  end
@@ -180,7 +180,7 @@ describe JSON::LD::API do
180
180
  }.each_pair do |title, params|
181
181
  it title do
182
182
  jld = JSON::LD::API.compact(params[:input], params[:context], :debug => @debug)
183
- jld.should produce(params[:output], @debug)
183
+ expect(jld).to produce(params[:output], @debug)
184
184
  end
185
185
  end
186
186
 
@@ -243,7 +243,7 @@ describe JSON::LD::API do
243
243
  }.each do |title, params|
244
244
  it title do
245
245
  jld = JSON::LD::API.compact(params[:input], params[:context], :debug => @debug)
246
- jld.should produce(params[:output], @debug)
246
+ expect(jld).to produce(params[:output], @debug)
247
247
  end
248
248
  end
249
249
  end
@@ -306,7 +306,7 @@ describe JSON::LD::API do
306
306
  ctx = params[:context].is_a?(String) ? JSON.parse(params[:context]) : params[:context]
307
307
  output = params[:output].is_a?(String) ? JSON.parse(params[:output]) : params[:output]
308
308
  jld = JSON::LD::API.compact(input, ctx, :debug => @debug)
309
- jld.should produce(output, @debug)
309
+ expect(jld).to produce(output, @debug)
310
310
  end
311
311
  end
312
312
  end
@@ -353,7 +353,7 @@ describe JSON::LD::API do
353
353
  ctx = params[:context].is_a?(String) ? JSON.parse(params[:context]) : params[:context]
354
354
  output = params[:output].is_a?(String) ? JSON.parse(params[:output]) : params[:output]
355
355
  jld = JSON::LD::API.compact(input, ctx, :debug => @debug)
356
- jld.should produce(output, @debug)
356
+ expect(jld).to produce(output, @debug)
357
357
  end
358
358
  end
359
359
  end
@@ -373,7 +373,7 @@ describe JSON::LD::API do
373
373
  "foo" => "bar"
374
374
  }
375
375
  jld = JSON::LD::API.compact(input, ctx, :debug => @debug, :validate => true)
376
- jld.should produce(expected, @debug)
376
+ expect(jld).to produce(expected, @debug)
377
377
  end
378
378
  end
379
379
 
@@ -389,9 +389,9 @@ describe JSON::LD::API do
389
389
  "@context" => "http://example.com/context",
390
390
  "b" => "c"
391
391
  }
392
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
392
+ allow(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
393
393
  jld = JSON::LD::API.compact(input, "http://example.com/context", :debug => @debug, :validate => true)
394
- jld.should produce(expected, @debug)
394
+ expect(jld).to produce(expected, @debug)
395
395
  end
396
396
  end
397
397
 
@@ -420,7 +420,7 @@ describe JSON::LD::API do
420
420
  }.each_pair do |title, params|
421
421
  it title do
422
422
  jld = JSON::LD::API.compact(params[:input], params[:context], :debug => @debug)
423
- jld.should produce(params[:output], @debug)
423
+ expect(jld).to produce(params[:output], @debug)
424
424
  end
425
425
  end
426
426
  end
@@ -457,7 +457,7 @@ describe JSON::LD::API do
457
457
  }.each_pair do |title, params|
458
458
  it title do
459
459
  jld = JSON::LD::API.compact(params[:input], params[:context], :debug => @debug)
460
- jld.should produce(params[:output], @debug)
460
+ expect(jld).to produce(params[:output], @debug)
461
461
  end
462
462
  end
463
463
  end
@@ -481,7 +481,7 @@ describe JSON::LD::API do
481
481
  }.each_pair do |title, params|
482
482
  it title do
483
483
  jld = JSON::LD::API.compact(params[:input], params[:context], :debug => @debug)
484
- jld.should produce(params[:output], @debug)
484
+ expect(jld).to produce(params[:output], @debug)
485
485
  end
486
486
  end
487
487
  end
@@ -503,7 +503,7 @@ describe JSON::LD::API do
503
503
  },
504
504
  }.each do |title, params|
505
505
  it title do
506
- lambda {JSON::LD::API.compact(params[:input], {})}.should raise_error(params[:exception])
506
+ expect {JSON::LD::API.compact(params[:input], {})}.to raise_error(params[:exception])
507
507
  end
508
508
  end
509
509
  end
@@ -43,20 +43,20 @@ describe JSON::LD::Context do
43
43
  context "remote" do
44
44
 
45
45
  it "retrieves and parses a remote context document" do
46
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
46
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
47
47
  ec = subject.parse("http://example.com/context")
48
- ec.provided_context.should produce("http://example.com/context", @debug)
48
+ expect(ec.provided_context).to produce("http://example.com/context", @debug)
49
49
  end
50
50
 
51
51
  it "fails given a missing remote @context" do
52
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_raise(IOError)
53
- lambda {subject.parse("http://example.com/context")}.should raise_error(JSON::LD::JsonLdError::LoadingRemoteContextFailed, %r{http://example.com/context})
52
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_raise(IOError)
53
+ expect {subject.parse("http://example.com/context")}.to raise_error(JSON::LD::JsonLdError::LoadingRemoteContextFailed, %r{http://example.com/context})
54
54
  end
55
55
 
56
56
  it "creates mappings" do
57
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
57
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
58
58
  ec = subject.parse("http://example.com/context")
59
- ec.mappings.should produce({
59
+ expect(ec.send(:mappings)).to produce({
60
60
  "xsd" => "http://www.w3.org/2001/XMLSchema#",
61
61
  "name" => "http://xmlns.com/foaf/0.1/name",
62
62
  "homepage" => "http://xmlns.com/foaf/0.1/homepage",
@@ -65,15 +65,15 @@ describe JSON::LD::Context do
65
65
  end
66
66
 
67
67
  it "notes non-existing @context" do
68
- lambda {subject.parse(StringIO.new("{}"))}.should raise_error
68
+ expect {subject.parse(StringIO.new("{}"))}.to raise_error
69
69
  end
70
70
 
71
71
  it "parses a referenced context at a relative URI" do
72
72
  rd1 = JSON::LD::API::RemoteDocument.new("http://example.com/c1", %({"@context": "context"}))
73
- JSON::LD::API.stub(:documentLoader).with("http://example.com/c1").and_yield(rd1)
74
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
73
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/c1").and_yield(rd1)
74
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
75
75
  ec = subject.parse("http://example.com/c1")
76
- ec.mappings.should produce({
76
+ expect(ec.send(:mappings)).to produce({
77
77
  "xsd" => "http://www.w3.org/2001/XMLSchema#",
78
78
  "name" => "http://xmlns.com/foaf/0.1/name",
79
79
  "homepage" => "http://xmlns.com/foaf/0.1/homepage",
@@ -92,7 +92,7 @@ describe JSON::LD::Context do
92
92
 
93
93
  it "merges definitions from each context" do
94
94
  ec = subject.parse(@ctx)
95
- ec.mappings.should produce({
95
+ expect(ec.send(:mappings)).to produce({
96
96
  "foo" => "http://example.com/foo",
97
97
  "bar" => "http://example.com/foo"
98
98
  }, @debug)
@@ -101,79 +101,79 @@ describe JSON::LD::Context do
101
101
 
102
102
  context "Hash" do
103
103
  it "extracts @language" do
104
- subject.parse({
104
+ expect(subject.parse({
105
105
  "@language" => "en"
106
- }).default_language.should produce("en", @debug)
106
+ }).default_language).to produce("en", @debug)
107
107
  end
108
108
 
109
109
  it "extracts @vocab" do
110
- subject.parse({
110
+ expect(subject.parse({
111
111
  "@vocab" => "http://schema.org/"
112
- }).vocab.should produce("http://schema.org/", @debug)
112
+ }).vocab).to produce("http://schema.org/", @debug)
113
113
  end
114
114
 
115
115
  it "maps term with IRI value" do
116
- subject.parse({
116
+ expect(subject.parse({
117
117
  "foo" => "http://example.com/"
118
- }).mappings.should produce({
118
+ }).send(:mappings)).to produce({
119
119
  "foo" => "http://example.com/"
120
120
  }, @debug)
121
121
  end
122
122
 
123
123
  it "maps term with @id" do
124
- subject.parse({
124
+ expect(subject.parse({
125
125
  "foo" => {"@id" => "http://example.com/"}
126
- }).mappings.should produce({
126
+ }).send(:mappings)).to produce({
127
127
  "foo" => "http://example.com/"
128
128
  }, @debug)
129
129
  end
130
130
 
131
131
  it "associates @list container mapping with predicate" do
132
- subject.parse({
132
+ expect(subject.parse({
133
133
  "foo" => {"@id" => "http://example.com/", "@container" => "@list"}
134
- }).containers.should produce({
134
+ }).containers).to produce({
135
135
  "foo" => '@list'
136
136
  }, @debug)
137
137
  end
138
138
 
139
139
  it "associates @set container mapping with predicate" do
140
- subject.parse({
140
+ expect(subject.parse({
141
141
  "foo" => {"@id" => "http://example.com/", "@container" => "@set"}
142
- }).containers.should produce({
142
+ }).containers).to produce({
143
143
  "foo" => '@set'
144
144
  }, @debug)
145
145
  end
146
146
 
147
147
  it "associates @id container mapping with predicate" do
148
- subject.parse({
148
+ expect(subject.parse({
149
149
  "foo" => {"@id" => "http://example.com/", "@type" => "@id"}
150
- }).coercions.should produce({
150
+ }).coercions).to produce({
151
151
  "foo" => "@id"
152
152
  }, @debug)
153
153
  end
154
154
 
155
155
  it "associates type mapping with predicate" do
156
- subject.parse({
156
+ expect(subject.parse({
157
157
  "foo" => {"@id" => "http://example.com/", "@type" => RDF::XSD.string.to_s}
158
- }).coercions.should produce({
159
- "foo" => RDF::XSD.string.to_s
158
+ }).coercions).to produce({
159
+ "foo" => RDF::XSD.string
160
160
  }, @debug)
161
161
  end
162
162
 
163
163
  it "associates language mapping with predicate" do
164
- subject.parse({
164
+ expect(subject.parse({
165
165
  "foo" => {"@id" => "http://example.com/", "@language" => "en"}
166
- }).languages.should produce({
166
+ }).send(:languages)).to produce({
167
167
  "foo" => "en"
168
168
  }, @debug)
169
169
  end
170
170
 
171
171
  it "expands chains of term definition/use with string values" do
172
- subject.parse({
172
+ expect(subject.parse({
173
173
  "foo" => "bar",
174
174
  "bar" => "baz",
175
175
  "baz" => "http://example.com/"
176
- }).mappings.should produce({
176
+ }).send(:mappings)).to produce({
177
177
  "foo" => "http://example.com/",
178
178
  "bar" => "http://example.com/",
179
179
  "baz" => "http://example.com/"
@@ -181,58 +181,58 @@ describe JSON::LD::Context do
181
181
  end
182
182
 
183
183
  it "expands terms using @vocab" do
184
- subject.parse({
184
+ expect(subject.parse({
185
185
  "foo" => "bar",
186
186
  "@vocab" => "http://example.com/"
187
- }).mappings.should produce({
187
+ }).send(:mappings)).to produce({
188
188
  "foo" => "http://example.com/bar"
189
189
  }, @debug)
190
190
  end
191
191
 
192
192
  context "with null" do
193
193
  it "removes @language if set to null" do
194
- subject.parse([
194
+ expect(subject.parse([
195
195
  {
196
196
  "@language" => "en"
197
197
  },
198
198
  {
199
199
  "@language" => nil
200
200
  }
201
- ]).default_language.should produce(nil, @debug)
201
+ ]).default_language).to produce(nil, @debug)
202
202
  end
203
203
 
204
204
  it "removes @vocab if set to null" do
205
- subject.parse([
205
+ expect(subject.parse([
206
206
  {
207
207
  "@vocab" => "http://schema.org/"
208
208
  },
209
209
  {
210
210
  "@vocab" => nil
211
211
  }
212
- ]).vocab.should produce(nil, @debug)
212
+ ]).vocab).to produce(nil, @debug)
213
213
  end
214
214
 
215
215
  it "removes term if set to null with @vocab" do
216
- subject.parse([
216
+ expect(subject.parse([
217
217
  {
218
218
  "@vocab" => "http://schema.org/",
219
219
  "term" => nil
220
220
  }
221
- ]).mappings.should produce({"term" => nil}, @debug)
221
+ ]).send(:mappings)).to produce({"term" => nil}, @debug)
222
222
  end
223
223
 
224
224
  it "loads initial context" do
225
225
  init_ec = JSON::LD::Context.new
226
226
  nil_ec = subject.parse(nil)
227
- nil_ec.default_language.should == init_ec.default_language
228
- nil_ec.languages.should == init_ec.languages
229
- nil_ec.mappings.should == init_ec.mappings
230
- nil_ec.coercions.should == init_ec.coercions
231
- nil_ec.containers.should == init_ec.containers
227
+ expect(nil_ec.default_language).to eq init_ec.default_language
228
+ expect(nil_ec.send(:languages)).to eq init_ec.send(:languages)
229
+ expect(nil_ec.send(:mappings)).to eq init_ec.send(:mappings)
230
+ expect(nil_ec.coercions).to eq init_ec.coercions
231
+ expect(nil_ec.containers).to eq init_ec.containers
232
232
  end
233
233
 
234
234
  it "removes a term definition" do
235
- subject.parse({"name" => nil}).mapping("name").should be_nil
235
+ expect(subject.parse({"name" => nil}).send(:mapping, "name")).to be_nil
236
236
  end
237
237
  end
238
238
  end
@@ -256,26 +256,26 @@ describe JSON::LD::Context do
256
256
  "@vocab as @id" => {"@vocab" => {"@id" => "http://example.com/"}},
257
257
  }.each do |title, context|
258
258
  it title do
259
- lambda {
259
+ expect {
260
260
  ec = subject.parse(context)
261
- ec.serialize.should produce({}, @debug)
262
- }.should raise_error(JSON::LD::JsonLdError)
261
+ expect(ec.serialize).to produce({}, @debug)
262
+ }.to raise_error(JSON::LD::JsonLdError)
263
263
  end
264
264
  end
265
265
 
266
266
  (JSON::LD::KEYWORDS - %w(@base @language @vocab)).each do |kw|
267
267
  it "does not redefine #{kw} as a string" do
268
- lambda {
268
+ expect {
269
269
  ec = subject.parse({kw => "http://example.com/"})
270
- ec.serialize.should produce({}, @debug)
271
- }.should raise_error(JSON::LD::JsonLdError)
270
+ expect(ec.serialize).to produce({}, @debug)
271
+ }.to raise_error(JSON::LD::JsonLdError)
272
272
  end
273
273
 
274
274
  it "does not redefine #{kw} with an @id" do
275
- lambda {
275
+ expect {
276
276
  ec = subject.parse({kw => {"@id" => "http://example.com/"}})
277
- ec.serialize.should produce({}, @debug)
278
- }.should raise_error(JSON::LD::JsonLdError)
277
+ expect(ec.serialize).to produce({}, @debug)
278
+ }.to raise_error(JSON::LD::JsonLdError)
279
279
  end
280
280
  end
281
281
  end
@@ -283,9 +283,9 @@ describe JSON::LD::Context do
283
283
 
284
284
  describe "#serialize" do
285
285
  it "context document" do
286
- JSON::LD::API.stub(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
286
+ expect(JSON::LD::API).to receive(:documentLoader).with("http://example.com/context").and_yield(remote_doc)
287
287
  ec = subject.parse("http://example.com/context")
288
- ec.serialize.should produce({
288
+ expect(ec.serialize).to produce({
289
289
  "@context" => "http://example.com/context"
290
290
  }, @debug)
291
291
  end
@@ -294,14 +294,14 @@ describe JSON::LD::Context do
294
294
  ctx = {"foo" => "http://example.com/"}
295
295
 
296
296
  ec = subject.parse(ctx)
297
- ec.serialize.should produce({
297
+ expect(ec.serialize).to produce({
298
298
  "@context" => ctx
299
299
  }, @debug)
300
300
  end
301
301
 
302
302
  it "@language" do
303
303
  subject.default_language = "en"
304
- subject.serialize.should produce({
304
+ expect(subject.serialize).to produce({
305
305
  "@context" => {
306
306
  "@language" => "en"
307
307
  }
@@ -310,7 +310,7 @@ describe JSON::LD::Context do
310
310
 
311
311
  it "@vocab" do
312
312
  subject.vocab = "http://example.com/"
313
- subject.serialize.should produce({
313
+ expect(subject.serialize).to produce({
314
314
  "@context" => {
315
315
  "@vocab" => "http://example.com/"
316
316
  }
@@ -318,9 +318,9 @@ describe JSON::LD::Context do
318
318
  end
319
319
 
320
320
  it "term mappings" do
321
- subject.
321
+ expect(subject.
322
322
  parse({'foo' => "http://example.com/"}).send(:clear_provided_context).
323
- serialize.should produce({
323
+ serialize).to produce({
324
324
  "@context" => {
325
325
  "foo" => "http://example.com/"
326
326
  }
@@ -328,25 +328,25 @@ describe JSON::LD::Context do
328
328
  end
329
329
 
330
330
  it "@type with dependent prefixes in a single context" do
331
- subject.parse({
331
+ expect(subject.parse({
332
332
  'xsd' => "http://www.w3.org/2001/XMLSchema#",
333
333
  'homepage' => {'@id' => RDF::FOAF.homepage.to_s, '@type' => '@id'}
334
334
  }).
335
335
  send(:clear_provided_context).
336
- serialize.should produce({
336
+ serialize).to produce({
337
337
  "@context" => {
338
- "xsd" => RDF::XSD.to_uri,
338
+ "xsd" => RDF::XSD.to_uri.to_s,
339
339
  "homepage" => {"@id" => RDF::FOAF.homepage.to_s, "@type" => "@id"}
340
340
  }
341
341
  }, @debug)
342
342
  end
343
343
 
344
344
  it "@list with @id definition in a single context" do
345
- subject.parse({
345
+ expect(subject.parse({
346
346
  'knows' => {'@id' => RDF::FOAF.knows.to_s, '@container' => '@list'}
347
347
  }).
348
348
  send(:clear_provided_context).
349
- serialize.should produce({
349
+ serialize).to produce({
350
350
  "@context" => {
351
351
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@list"}
352
352
  }
@@ -354,11 +354,11 @@ describe JSON::LD::Context do
354
354
  end
355
355
 
356
356
  it "@set with @id definition in a single context" do
357
- subject.parse({
357
+ expect(subject.parse({
358
358
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@set"}
359
359
  }).
360
360
  send(:clear_provided_context).
361
- serialize.should produce({
361
+ serialize).to produce({
362
362
  "@context" => {
363
363
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@set"}
364
364
  }
@@ -366,11 +366,11 @@ describe JSON::LD::Context do
366
366
  end
367
367
 
368
368
  it "@language with @id definition in a single context" do
369
- subject.parse({
369
+ expect(subject.parse({
370
370
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => "en"}
371
371
  }).
372
372
  send(:clear_provided_context).
373
- serialize.should produce({
373
+ serialize).to produce({
374
374
  "@context" => {
375
375
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => "en"}
376
376
  }
@@ -378,12 +378,12 @@ describe JSON::LD::Context do
378
378
  end
379
379
 
380
380
  it "@language with @id definition in a single context and equivalent default" do
381
- subject.parse({
381
+ expect(subject.parse({
382
382
  "@language" => 'en',
383
383
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => 'en'}
384
384
  }).
385
385
  send(:clear_provided_context).
386
- serialize.should produce({
386
+ serialize).to produce({
387
387
  "@context" => {
388
388
  "@language" => 'en',
389
389
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => 'en'}
@@ -392,12 +392,12 @@ describe JSON::LD::Context do
392
392
  end
393
393
 
394
394
  it "@language with @id definition in a single context and different default" do
395
- subject.parse({
395
+ expect(subject.parse({
396
396
  "@language" => 'en',
397
397
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => "de"}
398
398
  }).
399
399
  send(:clear_provided_context).
400
- serialize.should produce({
400
+ serialize).to produce({
401
401
  "@context" => {
402
402
  "@language" => 'en',
403
403
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => "de"}
@@ -406,12 +406,12 @@ describe JSON::LD::Context do
406
406
  end
407
407
 
408
408
  it "null @language with @id definition in a single context and default" do
409
- subject.parse({
409
+ expect(subject.parse({
410
410
  "@language" => 'en',
411
411
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => nil}
412
412
  }).
413
413
  send(:clear_provided_context).
414
- serialize.should produce({
414
+ serialize).to produce({
415
415
  "@context" => {
416
416
  "@language" => 'en',
417
417
  "name" => {"@id" => RDF::FOAF.name.to_s, "@language" => nil}
@@ -420,11 +420,11 @@ describe JSON::LD::Context do
420
420
  end
421
421
 
422
422
  it "prefix with @type and @list" do
423
- subject.parse({
423
+ expect(subject.parse({
424
424
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@type" => "@id", "@container" => "@list"}
425
425
  }).
426
426
  send(:clear_provided_context).
427
- serialize.should produce({
427
+ serialize).to produce({
428
428
  "@context" => {
429
429
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@type" => "@id", "@container" => "@list"}
430
430
  }
@@ -432,11 +432,11 @@ describe JSON::LD::Context do
432
432
  end
433
433
 
434
434
  it "prefix with @type and @set" do
435
- subject.parse({
435
+ expect(subject.parse({
436
436
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@type" => "@id", "@container" => "@set"}
437
437
  }).
438
438
  send(:clear_provided_context).
439
- serialize.should produce({
439
+ serialize).to produce({
440
440
  "@context" => {
441
441
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@type" => "@id", "@container" => "@set"}
442
442
  }
@@ -444,15 +444,14 @@ describe JSON::LD::Context do
444
444
  end
445
445
 
446
446
  it "CURIE with @type" do
447
- subject.parse({
447
+ expect(subject.parse({
448
448
  "foaf" => RDF::FOAF.to_uri.to_s,
449
449
  "foaf:knows" => {
450
- "@id" => RDF::FOAF.knows.to_s,
451
450
  "@container" => "@list"
452
451
  }
453
452
  }).
454
453
  send(:clear_provided_context).
455
- serialize.should produce({
454
+ serialize).to produce({
456
455
  "@context" => {
457
456
  "foaf" => RDF::FOAF.to_uri.to_s,
458
457
  "foaf:knows" => {
@@ -463,12 +462,12 @@ describe JSON::LD::Context do
463
462
  end
464
463
 
465
464
  it "does not use aliased @id in key position" do
466
- subject.parse({
465
+ expect(subject.parse({
467
466
  "id" => "@id",
468
467
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@list"}
469
468
  }).
470
469
  send(:clear_provided_context).
471
- serialize.should produce({
470
+ serialize).to produce({
472
471
  "@context" => {
473
472
  "id" => "@id",
474
473
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@list"}
@@ -477,16 +476,15 @@ describe JSON::LD::Context do
477
476
  end
478
477
 
479
478
  it "does not use aliased @id in value position" do
480
- subject.parse({
479
+ expect(subject.parse({
481
480
  "foaf" => RDF::FOAF.to_uri.to_s,
482
481
  "id" => "@id",
483
482
  "foaf:homepage" => {
484
- "@id" => RDF::FOAF.homepage.to_s,
485
483
  "@type" => "@id"
486
484
  }
487
485
  }).
488
486
  send(:clear_provided_context).
489
- serialize.should produce({
487
+ serialize).to produce({
490
488
  "@context" => {
491
489
  "foaf" => RDF::FOAF.to_uri.to_s,
492
490
  "id" => "@id",
@@ -498,13 +496,13 @@ describe JSON::LD::Context do
498
496
  end
499
497
 
500
498
  it "does not use aliased @type" do
501
- subject.parse({
499
+ expect(subject.parse({
502
500
  "foaf" => RDF::FOAF.to_uri.to_s,
503
501
  "type" => "@type",
504
502
  "foaf:homepage" => {"@type" => "@id"}
505
503
  }).
506
504
  send(:clear_provided_context).
507
- serialize.should produce({
505
+ serialize).to produce({
508
506
  "@context" => {
509
507
  "foaf" => RDF::FOAF.to_uri.to_s,
510
508
  "type" => "@type",
@@ -514,12 +512,12 @@ describe JSON::LD::Context do
514
512
  end
515
513
 
516
514
  it "does not use aliased @container" do
517
- subject.parse({
515
+ expect(subject.parse({
518
516
  "container" => "@container",
519
517
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@list"}
520
518
  }).
521
519
  send(:clear_provided_context).
522
- serialize.should produce({
520
+ serialize).to produce({
523
521
  "@context" => {
524
522
  "container" => "@container",
525
523
  "knows" => {"@id" => RDF::FOAF.knows.to_s, "@container" => "@list"}
@@ -528,12 +526,12 @@ describe JSON::LD::Context do
528
526
  end
529
527
 
530
528
  it "compacts IRIs to CURIEs" do
531
- subject.parse({
529
+ expect(subject.parse({
532
530
  "ex" => 'http://example.org/',
533
531
  "term" => {"@id" => "ex:term", "@type" => "ex:datatype"}
534
532
  }).
535
533
  send(:clear_provided_context).
536
- serialize.should produce({
534
+ serialize).to produce({
537
535
  "@context" => {
538
536
  "ex" => 'http://example.org/',
539
537
  "term" => {"@id" => "ex:term", "@type" => "ex:datatype"}
@@ -542,15 +540,15 @@ describe JSON::LD::Context do
542
540
  end
543
541
 
544
542
  it "compacts IRIs using @vocab" do
545
- subject.parse({
543
+ expect(subject.parse({
546
544
  "@vocab" => 'http://example.org/',
547
545
  "term" => {"@id" => "http://example.org/term", "@type" => "datatype"}
548
546
  }).
549
547
  send(:clear_provided_context).
550
- serialize.should produce({
548
+ serialize).to produce({
551
549
  "@context" => {
552
550
  "@vocab" => 'http://example.org/',
553
- "term" => {"@id" => "http://example.org/term", "@type" => "datatype"}
551
+ "term" => {"@type" => "datatype"}
554
552
  }
555
553
  }, @debug)
556
554
  end
@@ -564,7 +562,7 @@ describe JSON::LD::Context do
564
562
  }.each do |title, params|
565
563
  it title do
566
564
  ec = subject.parse(params[:input])
567
- ec.serialize.should produce(params[:result], @debug)
565
+ expect(ec.serialize).to produce(params[:result], @debug)
568
566
  end
569
567
  end
570
568
  end
@@ -583,14 +581,14 @@ describe JSON::LD::Context do
583
581
  }
584
582
 
585
583
  it "bnode" do
586
- subject.expand_iri("_:a").should be_a(RDF::Node)
584
+ expect(subject.expand_iri("_:a")).to be_a(RDF::Node)
587
585
  end
588
586
 
589
587
  context "keywords" do
590
588
  %w(id type).each do |kw|
591
589
  it "expands #{kw} to @#{kw}" do
592
590
  subject.set_mapping(kw, "@#{kw}")
593
- subject.expand_iri(kw, :vocab => true).should produce("@#{kw}", @debug)
591
+ expect(subject.expand_iri(kw, :vocab => true)).to produce("@#{kw}", @debug)
594
592
  end
595
593
  end
596
594
  end
@@ -612,7 +610,7 @@ describe JSON::LD::Context do
612
610
  "_" => ["_", RDF::URI("_")],
613
611
  }.each do |title, (input, result)|
614
612
  it title do
615
- subject.expand_iri(input).should produce(result, @debug)
613
+ expect(subject.expand_iri(input)).to produce(result, @debug)
616
614
  end
617
615
  end
618
616
  end
@@ -633,7 +631,7 @@ describe JSON::LD::Context do
633
631
  "_" => ["_", RDF::URI("http://base/_")],
634
632
  }.each do |title, (input, result)|
635
633
  it title do
636
- subject.expand_iri(input, :documentRelative => true).should produce(result, @debug)
634
+ expect(subject.expand_iri(input, :documentRelative => true)).to produce(result, @debug)
637
635
  end
638
636
  end
639
637
  end
@@ -654,7 +652,7 @@ describe JSON::LD::Context do
654
652
  "_" => ["_", RDF::URI("http://underscore/")],
655
653
  }.each do |title, (input, result)|
656
654
  it title do
657
- subject.expand_iri(input, :vocab => true).should produce(result, @debug)
655
+ expect(subject.expand_iri(input, :vocab => true)).to produce(result, @debug)
658
656
  end
659
657
  end
660
658
  end
@@ -664,14 +662,16 @@ describe JSON::LD::Context do
664
662
  describe "#compact_iri" do
665
663
  subject {
666
664
  c = context.parse({
667
- '@base' => 'http://base/',
668
- "xsd" => "http://www.w3.org/2001/XMLSchema#",
669
- 'ex' => 'http://example.org/',
670
- '' => 'http://empty/',
671
- '_' => 'http://underscore/',
672
- 'rex' => {'@reverse' => "ex"},
673
- 'lex' => {'@id' => 'ex', '@language' => 'en'},
674
- 'tex' => {'@id' => 'ex', '@type' => 'xsd:string'}
665
+ '@base' => 'http://base/',
666
+ "xsd" => "http://www.w3.org/2001/XMLSchema#",
667
+ 'ex' => 'http://example.org/',
668
+ '' => 'http://empty/',
669
+ '_' => 'http://underscore/',
670
+ 'rex' => {'@reverse' => "ex"},
671
+ 'lex' => {'@id' => 'ex', '@language' => 'en'},
672
+ 'tex' => {'@id' => 'ex', '@type' => 'xsd:string'},
673
+ 'exp' => {'@id' => 'ex:pert'},
674
+ 'experts' => {'@id' => 'ex:perts'}
675
675
  })
676
676
  @debug.clear
677
677
  c
@@ -685,10 +685,11 @@ describe JSON::LD::Context do
685
685
  "empty" => [":suffix", "http://empty/suffix"],
686
686
  "unmapped" => ["foo", "foo"],
687
687
  "bnode" => ["_:a", RDF::Node("a")],
688
- "relative" => ["foo/bar", "http://base/foo/bar"]
688
+ "relative" => ["foo/bar", "http://base/foo/bar"],
689
+ "odd CURIE" => ["exp:s", "http://example.org/perts"]
689
690
  }.each do |title, (result, input)|
690
691
  it title do
691
- subject.compact_iri(input).should produce(result, @debug)
692
+ expect(subject.compact_iri(input)).to produce(result, @debug)
692
693
  end
693
694
  end
694
695
 
@@ -700,10 +701,11 @@ describe JSON::LD::Context do
700
701
  "empty" => [":suffix", "http://empty/suffix"],
701
702
  "unmapped" => ["foo", "foo"],
702
703
  "bnode" => ["_:a", RDF::Node("a")],
703
- "relative" => ["http://base/foo/bar", "http://base/foo/bar"]
704
+ "relative" => ["http://base/foo/bar", "http://base/foo/bar"],
705
+ "odd CURIE" => ["experts", "http://example.org/perts"]
704
706
  }.each do |title, (result, input)|
705
707
  it title do
706
- subject.compact_iri(input, :vocab => true).should produce(result, @debug)
708
+ expect(subject.compact_iri(input, :vocab => true)).to produce(result, @debug)
707
709
  end
708
710
  end
709
711
  end
@@ -718,18 +720,19 @@ describe JSON::LD::Context do
718
720
  "empty" => [":suffix", "http://empty/suffix"],
719
721
  "unmapped" => ["foo", "foo"],
720
722
  "bnode" => ["_:a", RDF::Node("a")],
721
- "relative" => ["http://base/foo/bar", "http://base/foo/bar"]
723
+ "relative" => ["http://base/foo/bar", "http://base/foo/bar"],
724
+ "odd CURIE" => ["experts", "http://example.org/perts"]
722
725
  }.each do |title, (result, input)|
723
726
  it title do
724
- subject.compact_iri(input, :vocab => true).should produce(result, @debug)
727
+ expect(subject.compact_iri(input, :vocab => true)).to produce(result, @debug)
725
728
  end
726
729
  end
727
730
 
728
731
  it "does not use @vocab if it would collide with a term" do
729
732
  subject.set_mapping("name", "http://xmlns.com/foaf/0.1/name")
730
733
  subject.set_mapping("ex", nil)
731
- subject.compact_iri("http://example.org/name", :position => :predicate).
732
- should produce("lex:name", @debug)
734
+ expect(subject.compact_iri("http://example.org/name", :position => :predicate)).
735
+ to produce("lex:name", @debug)
733
736
  end
734
737
  end
735
738
 
@@ -772,7 +775,8 @@ describe JSON::LD::Context do
772
775
  context "uses #{prop}" do
773
776
  values.each do |value|
774
777
  it "for #{value.inspect}" do
775
- ctx.compact_iri("http://example.com/#{prop.sub('set', '')}", :value => value, :vocab => true).should produce(prop, @debug)
778
+ expect(ctx.compact_iri("http://example.com/#{prop.sub('set', '')}", :value => value, :vocab => true)).
779
+ to produce(prop, @debug)
776
780
  end
777
781
  end
778
782
  end
@@ -800,7 +804,8 @@ describe JSON::LD::Context do
800
804
  context "uses #{prop}" do
801
805
  values.each do |value|
802
806
  it "for #{{"@list" => value}.inspect}" do
803
- ctx.compact_iri("http://example.com/#{prop.sub('list', '')}", :value => {"@list" => value}, :vocab => true).should produce(prop, @debug)
807
+ expect(ctx.compact_iri("http://example.com/#{prop.sub('list', '')}", :value => {"@list" => value}, :vocab => true)).
808
+ to produce(prop, @debug)
804
809
  end
805
810
  end
806
811
  end
@@ -808,6 +813,46 @@ describe JSON::LD::Context do
808
813
  end
809
814
  end
810
815
 
816
+ context "with :simple_compact_iris" do
817
+ before(:each) { subject.instance_variable_get(:@options)[:simple_compact_iris] = true}
818
+
819
+ {
820
+ "nil" => [nil, nil],
821
+ "absolute IRI" => ["http://example.com/", "http://example.com/"],
822
+ "prefix:suffix" => ["ex:suffix", "http://example.org/suffix"],
823
+ "keyword" => ["@type", "@type"],
824
+ "empty" => [":suffix", "http://empty/suffix"],
825
+ "unmapped" => ["foo", "foo"],
826
+ "bnode" => ["_:a", RDF::Node("a")],
827
+ "relative" => ["foo/bar", "http://base/foo/bar"],
828
+ "odd CURIE" => ["exp:s", "http://example.org/perts"],
829
+ "odd CURIE" => ["ex:perts", "http://example.org/perts"]
830
+ }.each do |title, (result, input)|
831
+ it title do
832
+ expect(subject.compact_iri(input)).to produce(result, @debug)
833
+ end
834
+ end
835
+
836
+ context "and @vocab" do
837
+ before(:each) { subject.vocab = "http://example.org/"}
838
+
839
+ {
840
+ "absolute IRI" => ["http://example.com/", "http://example.com/"],
841
+ "prefix:suffix" => ["suffix", "http://example.org/suffix"],
842
+ "keyword" => ["@type", "@type"],
843
+ "empty" => [":suffix", "http://empty/suffix"],
844
+ "unmapped" => ["foo", "foo"],
845
+ "bnode" => ["_:a", RDF::Node("a")],
846
+ "relative" => ["http://base/foo/bar", "http://base/foo/bar"],
847
+ "odd CURIE" => ["experts", "http://example.org/perts"]
848
+ }.each do |title, (result, input)|
849
+ it title do
850
+ expect(subject.compact_iri(input, :vocab => true)).to produce(result, @debug)
851
+ end
852
+ end
853
+ end
854
+ end
855
+
811
856
  context "compact-0018" do
812
857
  let(:ctx) do
813
858
  subject.parse(JSON.parse %({
@@ -907,8 +952,8 @@ describe JSON::LD::Context do
907
952
  }.each do |term, value|
908
953
  [value].flatten.each do |v|
909
954
  it "Uses #{term} for #{v}" do
910
- ctx.compact_iri("http://example.com/term", :value => JSON.parse(v), :vocab => true).
911
- should produce(term, @debug)
955
+ expect(ctx.compact_iri("http://example.com/term", :value => JSON.parse(v), :vocab => true)).
956
+ to produce(term, @debug)
912
957
  end
913
958
  end
914
959
  end
@@ -922,8 +967,8 @@ describe JSON::LD::Context do
922
967
  })
923
968
  end
924
969
  it "Compact @id that is a property IRI when @container is @list" do
925
- ctx.compact_iri("http://example.org/ns#property", :position => :subject).
926
- should produce("ex:property", @debug)
970
+ expect(ctx.compact_iri("http://example.org/ns#property", :position => :subject)).
971
+ to produce("ex:property", @debug)
927
972
  end
928
973
  end
929
974
 
@@ -932,10 +977,10 @@ describe JSON::LD::Context do
932
977
  subject.parse({"name" => {"@id" => "http://example.com/property", "@container" => "@list"}})
933
978
  end
934
979
  it "Does not use @list with @index" do
935
- ctx.compact_iri("http://example.com/property", :value => {
980
+ expect(ctx.compact_iri("http://example.com/property", :value => {
936
981
  "@list" => ["one item"],
937
982
  "@index" => "an annotation"
938
- }).should produce("http://example.com/property", @debug)
983
+ })).to produce("http://example.com/property", @debug)
939
984
  end
940
985
  end
941
986
  end
@@ -960,7 +1005,7 @@ describe JSON::LD::Context do
960
1005
 
961
1006
  %w(boolean integer string dateTime date time).each do |dt|
962
1007
  it "expands datatype xsd:#{dt}" do
963
- subject.expand_value("foo", RDF::XSD[dt]).should produce({"@id" => "http://www.w3.org/2001/XMLSchema##{dt}"}, @debug)
1008
+ expect(subject.expand_value("foo", RDF::XSD[dt])).to produce({"@id" => "http://www.w3.org/2001/XMLSchema##{dt}"}, @debug)
964
1009
  end
965
1010
  end
966
1011
 
@@ -989,7 +1034,7 @@ describe JSON::LD::Context do
989
1034
  "rdf float" => ["foo", RDF::Literal::Float.new(1.0), {"@value" => "1.0", "@type" => RDF::XSD.float}],
990
1035
  }.each do |title, (key, compacted, expanded)|
991
1036
  it title do
992
- subject.expand_value(key, compacted).should produce(expanded, @debug)
1037
+ expect(subject.expand_value(key, compacted)).to produce(expanded, @debug)
993
1038
  end
994
1039
  end
995
1040
 
@@ -1004,7 +1049,7 @@ describe JSON::LD::Context do
1004
1049
  "native double" => ["foo", 1.1, {"@value" => 1.1}],
1005
1050
  }.each do |title, (key, compacted, expanded)|
1006
1051
  it title do
1007
- subject.expand_value(key, compacted).should produce(expanded, @debug)
1052
+ expect(subject.expand_value(key, compacted)).to produce(expanded, @debug)
1008
1053
  end
1009
1054
  end
1010
1055
  end
@@ -1026,13 +1071,13 @@ describe JSON::LD::Context do
1026
1071
  "string-integer" => ["foaf:age", "foo", {"@value" => "foo", "@type" => RDF::XSD.integer.to_s}],
1027
1072
  }.each do |title, (key, compacted, expanded)|
1028
1073
  it title do
1029
- subject.expand_value(key, compacted).should produce(expanded, @debug)
1074
+ expect(subject.expand_value(key, compacted)).to produce(expanded, @debug)
1030
1075
  end
1031
1076
  end
1032
1077
  end
1033
1078
  end
1034
1079
 
1035
- describe "compact_value" do
1080
+ describe "#compact_value" do
1036
1081
  let(:ctx) do
1037
1082
  c = context.parse({
1038
1083
  "dc" => RDF::DC.to_uri.to_s,
@@ -1069,7 +1114,7 @@ describe JSON::LD::Context do
1069
1114
  "native double" => ["foo", 1.1e1, {"@value" => 1.1E1}],
1070
1115
  }.each do |title, (key, compacted, expanded)|
1071
1116
  it title do
1072
- subject.compact_value(key, expanded).should produce(compacted, @debug)
1117
+ expect(subject.compact_value(key, expanded)).to produce(compacted, @debug)
1073
1118
  end
1074
1119
  end
1075
1120
 
@@ -1096,7 +1141,7 @@ describe JSON::LD::Context do
1096
1141
  }.each do |title, (key, compacted, expanded)|
1097
1142
  it title do
1098
1143
  subject.default_language = "en"
1099
- subject.compact_value(key, expanded).should produce(compacted, @debug)
1144
+ expect(subject.compact_value(key, expanded)).to produce(compacted, @debug)
1100
1145
  end
1101
1146
  end
1102
1147
  end
@@ -1118,9 +1163,102 @@ describe JSON::LD::Context do
1118
1163
  "@value" => [{"literal" => "foo", "language" => "bar"}, {"@value" => "foo", "@language" => "bar"}],
1119
1164
  }.each do |title, (compacted, expanded)|
1120
1165
  it title do
1121
- subject.compact_value("foo", expanded).should produce(compacted, @debug)
1166
+ expect(subject.compact_value("foo", expanded)).to produce(compacted, @debug)
1122
1167
  end
1123
1168
  end
1124
1169
  end
1125
1170
  end
1171
+
1172
+ describe "#from_vocabulary" do
1173
+ it "must be described"
1174
+ end
1175
+
1176
+ describe "#container" do
1177
+ subject {
1178
+ ctx = context.parse({
1179
+ "ex" => "http://example.org/",
1180
+ "list" => {"@id" => "ex:list", "@container" => "@list"},
1181
+ "set" => {"@id" => "ex:set", "@container" => "@set"},
1182
+ "ndx" => {"@id" => "ex:ndx", "@container" => "@index"},
1183
+ })
1184
+ @debug.clear
1185
+ ctx
1186
+ }
1187
+ it "uses TermDefinition" do
1188
+ expect(subject.container(subject.term_definitions['ex'])).to be_nil
1189
+ expect(subject.container(subject.term_definitions['list'])).to eq '@list'
1190
+ expect(subject.container(subject.term_definitions['set'])).to eq '@set'
1191
+ expect(subject.container(subject.term_definitions['ndx'])).to eq '@index'
1192
+ end
1193
+
1194
+ it "uses string" do
1195
+ expect(subject.container('ex')).to be_nil
1196
+ expect(subject.container('list')).to eq '@list'
1197
+ expect(subject.container('set')).to eq '@set'
1198
+ expect(subject.container('ndx')).to eq '@index'
1199
+ end
1200
+ end
1201
+
1202
+ describe "#language" do
1203
+ subject {
1204
+ ctx = context.parse({
1205
+ "ex" => "http://example.org/",
1206
+ "nil" => {"@id" => "ex:nil", "@language" => nil},
1207
+ "en" => {"@id" => "ex:en", "@language" => "en"},
1208
+ })
1209
+ @debug.clear
1210
+ ctx
1211
+ }
1212
+ it "uses TermDefinition" do
1213
+ expect(subject.language(subject.term_definitions['ex'])).to be_falsey
1214
+ expect(subject.language(subject.term_definitions['nil'])).to be_falsey
1215
+ expect(subject.language(subject.term_definitions['en'])).to eq 'en'
1216
+ end
1217
+
1218
+ it "uses string" do
1219
+ expect(subject.language('ex')).to be_falsey
1220
+ expect(subject.language('nil')).to be_falsey
1221
+ expect(subject.language('en')).to eq 'en'
1222
+ end
1223
+ end
1224
+
1225
+ describe "#reverse?" do
1226
+ subject {
1227
+ ctx = context.parse({
1228
+ "ex" => "http://example.org/",
1229
+ "reverse" => {"@reverse" => "ex:reverse"},
1230
+ })
1231
+ @debug.clear
1232
+ ctx
1233
+ }
1234
+ it "uses TermDefinition" do
1235
+ expect(subject.reverse?(subject.term_definitions['ex'])).to be_falsey
1236
+ expect(subject.reverse?(subject.term_definitions['reverse'])).to be_truthy
1237
+ end
1238
+
1239
+ it "uses string" do
1240
+ expect(subject.reverse?('ex')).to be_falsey
1241
+ expect(subject.reverse?('reverse')).to be_truthy
1242
+ end
1243
+ end
1244
+
1245
+ describe "#reverse_term" do
1246
+ subject {
1247
+ ctx = context.parse({
1248
+ "ex" => "http://example.org/",
1249
+ "reverse" => {"@reverse" => "ex"},
1250
+ })
1251
+ @debug.clear
1252
+ ctx
1253
+ }
1254
+ it "uses TermDefinition" do
1255
+ expect(subject.reverse_term(subject.term_definitions['ex'])).to eql subject.term_definitions['reverse']
1256
+ expect(subject.reverse_term(subject.term_definitions['reverse'])).to eql subject.term_definitions['ex']
1257
+ end
1258
+
1259
+ it "uses string" do
1260
+ expect(subject.reverse_term('ex')).to eql subject.term_definitions['reverse']
1261
+ expect(subject.reverse_term('reverse')).to eql subject.term_definitions['ex']
1262
+ end
1263
+ end
1126
1264
  end