json-ld 0.0.6 → 0.0.7

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -42,38 +42,16 @@ module JSON
42
42
  # Default context
43
43
  # @see http://json-ld.org/spec/ED/20110507/#the-default-context
44
44
  DEFAULT_CONTEXT = {
45
- 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
46
- 'rdfs' => 'http://www.w3.org/2000/01/rdf-schema#',
47
- 'owl' => 'http://www.w3.org/2002/07/owl#',
48
- 'xsd' => 'http://www.w3.org/2001/XMLSchema#',
49
- 'dcterms' => 'http://purl.org/dc/terms/',
50
- 'foaf' => 'http://xmlns.com/foaf/0.1/',
51
- 'cal' => 'http://www.w3.org/2002/12/cal/ical#',
52
- 'vcard' => 'http://www.w3.org/2006/vcard/ns# ',
53
- 'geo' => 'http://www.w3.org/2003/01/geo/wgs84_pos#',
54
- 'cc' => 'http://creativecommons.org/ns#',
55
- 'sioc' => 'http://rdfs.org/sioc/ns#',
56
- 'doap' => 'http://usefulinc.com/ns/doap#',
57
- 'com' => 'http://purl.org/commerce#',
58
- 'ps' => 'http://purl.org/payswarm#',
59
- 'gr' => 'http://purl.org/goodrelations/v1#',
60
- 'sig' => 'http://purl.org/signature#',
61
- 'ccard' => 'http://purl.org/commerce/creditcard#',
62
45
  '@coerce' => {
63
- # Note: rdf:type is not in the document, but necessary for this implementation
64
- 'xsd:anyURI' => ['rdf:type', 'rdf:rest', 'foaf:homepage', 'foaf:member'],
65
- 'xsd:integer' => 'foaf:age',
46
+ IRI => [TYPE]
66
47
  }
67
48
  }.freeze
68
49
 
69
50
  # Default type coercion, in property => datatype order
70
51
  DEFAULT_COERCE = {
71
- RDF.type => RDF::XSD.anyURI,
72
- RDF.first => false, # Make sure @coerce isn't generated for this
73
- RDF.rest => RDF::XSD.anyURI,
74
- RDF::FOAF.homepage => RDF::XSD.anyURI,
75
- RDF::FOAF.member => RDF::XSD.anyURI,
76
- RDF::FOAF.age => RDF::XSD.integer,
52
+ TYPE => IRI,
53
+ RDF.first.to_s => false, # Make sure @coerce isn't generated for this
54
+ RDF.rest.to_s => IRI,
77
55
  }.freeze
78
56
 
79
57
  def self.debug?; @debug; end
@@ -31,6 +31,12 @@ module RDF
31
31
  query(:subject => subject, :predicate => RDF.type).map {|st| st.object}
32
32
  end
33
33
  end
34
+
35
+ class URI
36
+ def to_s
37
+ @uri.to_s
38
+ end
39
+ end
34
40
  end
35
41
 
36
42
  if RUBY_VERSION < "1.9"
@@ -21,8 +21,9 @@ module JSON::LD
21
21
  #
22
22
  # @see http://www.w3.org/TR/rdf-testcases/#ntriples
23
23
  class Format < RDF::Format
24
- content_type 'application/json', :extension => :json
25
- content_type 'application/json', :extension => :ld
24
+ content_type 'application/ld+json', :extension => :json
25
+ content_type 'application/ld+json', :extension => :ld
26
+ content_type 'application/x-ld+json'
26
27
  content_encoding 'utf-8'
27
28
 
28
29
  reader { JSON::LD::Reader }
@@ -38,7 +39,7 @@ module JSON::LD
38
39
  # RDF::Format.for(:jsonld).reader #=> JSON::LD::Reader
39
40
  # RDF::Format.for(:jsonld).writer #=> JSON::LD::Writer
40
41
  class JSONLD < RDF::Format
41
- content_type 'application/json', :extension => :jsonld
42
+ content_type 'application/ld+json', :extension => :jsonld
42
43
  content_encoding 'utf-8'
43
44
 
44
45
  reader { JSON::LD::Reader }
@@ -1,3 +1,5 @@
1
+ require 'open-uri'
2
+
1
3
  module JSON::LD
2
4
  ##
3
5
  # A JSON-LD parser in Ruby.
@@ -52,7 +54,7 @@ module JSON::LD
52
54
  #
53
55
  # The @coerce keyword is used to specify type coersion rules for the data. For each key in the map, the
54
56
  # key is the type to be coerced to and the value is the vocabulary term to be coerced. Type coersion for
55
- # the key `xsd:anyURI` asserts that all vocabulary terms listed should undergo coercion to an IRI,
57
+ # the key `@iri` asserts that all vocabulary terms listed should undergo coercion to an IRI,
56
58
  # including `@base` processing for relative IRIs and CURIE processing for compact URI Expressions like
57
59
  # `foaf:homepage`.
58
60
  #
@@ -76,8 +78,8 @@ module JSON::LD
76
78
 
77
79
  def inspect
78
80
  v = %w([EvaluationContext) + %w(base vocab).map {|a| "#{a}='#{self.send(a).inspect}'"}
79
- v << "mappings[#{mappings.keys.length}]"
80
- v << "coerce[#{coerce.keys.length}]"
81
+ v << "mappings[#{mappings.keys.length}]=#{mappings}"
82
+ v << "coerce[#{coerce.keys.length}]=#{coerce}"
81
83
  v.join(", ") + "]"
82
84
  end
83
85
  end
@@ -91,10 +93,15 @@ module JSON::LD
91
93
  # @yield [reader] `self`
92
94
  # @yieldparam [RDF::Reader] reader
93
95
  # @yieldreturn [void] ignored
96
+ # @raise [RDF::ReaderError] if the JSON document cannot be loaded
94
97
  def initialize(input = $stdin, options = {}, &block)
95
98
  super do
96
99
  @base_uri = uri(options[:base_uri]) if options[:base_uri]
97
- @doc = ::JSON.load(input)
100
+ begin
101
+ @doc = JSON.load(input)
102
+ rescue JSON::ParserError => e
103
+ raise RDF::ReaderError, "Failed to parse input document: #{e.message}"
104
+ end
98
105
 
99
106
  if block_given?
100
107
  case block.arity
@@ -160,6 +167,17 @@ module JSON::LD
160
167
  prefixes.merge!(ec.mappings) # Update parsed prefixes
161
168
  end
162
169
 
170
+ # 2.2) Create a new associative array by mapping the keys from the current associative array ...
171
+ new_element = {}
172
+ element.each do |k, v|
173
+ k = ec.mappings[k.to_sym] while ec.mappings.has_key?(k.to_sym)
174
+ new_element[k] = v
175
+ end
176
+ unless element == new_element
177
+ add_debug(path, "traverse: keys after map: #{new_element.keys.inspect}")
178
+ element = new_element
179
+ end
180
+
163
181
  # Other shortcuts to allow use of this method for terminal associative arrays
164
182
  if element[IRI].is_a?(String)
165
183
  # Return the IRI found from the value
@@ -175,39 +193,36 @@ module JSON::LD
175
193
  return
176
194
  end
177
195
 
178
- # 2.2) ... Otherwise, if the local context is known perform the following steps:
179
- # 2.2.1) If a @ key is found, the processor sets the active subject to the
196
+ # 2.3) ... Otherwise, if the local context is known perform the following steps:
197
+ # 2.3.1) If a @ key is found, the processor sets the active subject to the
180
198
  # value after Object Processing has been performed.
181
199
  if element[SUBJECT].is_a?(String)
182
200
  active_subject = expand_term(element[SUBJECT], ec.base, ec)
183
201
  elsif element[SUBJECT]
184
202
  # Recursively process hash or Array values
185
- traverse("#{path}[@]", element[SUBJECT], subject, property, ec)
203
+ traverse("#{path}[#{SUBJECT}]", element[SUBJECT], subject, property, ec)
186
204
  else
187
- # 2.2.7) If the end of the associative array is detected, and a active subject
205
+ # 2.3.7) If the end of the associative array is detected, and a active subject
188
206
  # was not discovered, then:
189
- # 2.2.7.1) Generate a blank node identifier and set it as the active subject.
207
+ # 2.3.7.1) Generate a blank node identifier and set it as the active subject.
190
208
  active_subject = RDF::Node.new
191
209
  end
192
210
 
193
- # 2.2.1.1) If the inherited subject and inherited property values are
211
+ # 2.3.1.1) If the inherited subject and inherited property values are
194
212
  # specified, generate a triple using the inherited subject for the
195
213
  # subject, the inherited property for the property, and the active
196
214
  # subject for the object.
197
- # 2.2.7.2) Complete any previously incomplete triples by running all substeps of Step 2.2.1.
215
+ # 2.3.7.2) Complete any previously incomplete triples by running all substeps of Step 2.2.1.
198
216
  add_triple(path, subject, property, active_subject) if subject && property
199
217
  subject = active_subject
200
218
 
201
219
  element.each do |key, value|
202
- # 2.2.3) If a key that is not @context, @, or a, set the active property by
220
+ # 2.3.3) If a key that is not @context, @subject, or @type, set the active property by
203
221
  # performing Property Processing on the key.
204
222
  property = case key
205
- when /^@/
206
- nil
207
- when 'a'
208
- RDF.type
209
- else
210
- expand_term(key, ec.vocab, ec)
223
+ when TYPE then TYPE
224
+ when /^@/ then nil
225
+ else expand_term(key, ec.vocab, ec)
211
226
  end
212
227
 
213
228
  traverse("#{path}[#{key}]", value, subject, property, ec) if property
@@ -238,14 +253,15 @@ module JSON::LD
238
253
  end
239
254
  when String
240
255
  # Perform coersion of the value, or generate a literal
241
- add_debug(path, "traverse(#{element}): coerce?(#{property.inspect}) == #{ec.coerce[property].inspect}, ec=#{ec.coerce.inspect}")
242
- object = if ec.coerce[property] == RDF::XSD.anyURI
256
+ add_debug(path, "traverse(#{element}): coerce?(#{property.inspect}) == #{ec.coerce[property.to_s].inspect}, ec=#{ec.coerce.inspect}")
257
+ object = if ec.coerce[property.to_s] == IRI
243
258
  expand_term(element, ec.base, ec)
244
- elsif ec.coerce[property]
245
- RDF::Literal.new(element, :datatype => ec.coerce[property])
259
+ elsif ec.coerce[property.to_s]
260
+ RDF::Literal.new(element, :datatype => ec.coerce[property.to_s])
246
261
  else
247
262
  RDF::Literal.new(element)
248
263
  end
264
+ property = RDF.type if property == TYPE
249
265
  add_triple(path, subject, property, object) if subject && property
250
266
  when Float
251
267
  object = RDF::Literal::Double.new(element)
@@ -291,11 +307,21 @@ module JSON::LD
291
307
 
292
308
  ##
293
309
  # Parse a JSON context, into a new EvaluationContext
294
- # @param [Hash{String => String,Hash}] context
310
+ # @param [Hash{String => String,Hash}, String] context
295
311
  # JSON representation of @context
296
312
  # @return [EvaluationContext]
297
- # @raise [RDF::ReaderError] on a syntax error, or a reference to a term which is not defined.
313
+ # @raise [RDF::ReaderError]
314
+ # on a remote context load error, syntax error, or a reference to a term which is not defined.
298
315
  def parse_context(ec, context)
316
+ # Load context document, if it is a string
317
+ if context.is_a?(String)
318
+ begin
319
+ context = open(context.to_s) {|f| JSON.load(f)}
320
+ rescue JSON::ParserError => e
321
+ raise RDF::ReaderError, "Failed to parse remote context at #{context}: #{e.message}"
322
+ end
323
+ end
324
+
299
325
  context.each do |key, value|
300
326
  add_debug("parse_context(#{key})", value.inspect)
301
327
  case key
@@ -315,13 +341,13 @@ module JSON::LD
315
341
  if context[COERCE]
316
342
  # Spec confusion: doc says to merge each key-value mapping to the local context's @coerce mapping,
317
343
  # overwriting duplicate values. In the case where a mapping is indicated to a list of properties
318
- # (e.g., { "xsd:anyURI": ["foaf:homepage", "foaf:member"] }, does this overwrite a previous mapping
319
- # of { "xsd:anyURI": "foaf:knows" }, or add to it.
344
+ # (e.g., { "@iri": ["foaf:homepage", "foaf:member"] }, does this overwrite a previous mapping
345
+ # of { "@iri": "foaf:knows" }, or add to it.
320
346
  add_error RDF::ReaderError, "Expected @coerce to reference an associative array" unless context[COERCE].is_a?(Hash)
321
347
  context[COERCE].each do |type, property|
322
- type_uri = expand_term(type, ec.vocab, ec)
348
+ type_uri = expand_term(type, ec.vocab, ec).to_s
323
349
  [property].flatten.compact.each do |prop|
324
- p = expand_term(prop, ec.vocab, ec)
350
+ p = expand_term(prop, ec.vocab, ec).to_s
325
351
  ec.coerce[p] = type_uri
326
352
  end
327
353
  end
@@ -66,7 +66,7 @@ module JSON::LD
66
66
  #
67
67
  # Maintained as a reverse mapping of `property` => `type`.
68
68
  #
69
- # @attr [Hash{RDF::URI => RDF::URI}]
69
+ # @attr [Hash{String => String}]
70
70
  attr :coerce, true
71
71
 
72
72
  def self.new_hash
@@ -345,13 +345,11 @@ module JSON::LD
345
345
  unless coerce == DEFAULT_COERCE
346
346
  c_h = new_hash
347
347
  coerce.keys.sort.each do |k|
348
- next if coerce[k] == DEFAULT_COERCE[k] ||
349
- coerce[k] == false ||
350
- coerce[k] == RDF::XSD.integer ||
351
- coerce[k] == RDF::XSD.boolean
352
- k_iri = format_uri(k, :position => :predicate)
348
+ next if [TYPE, RDF.type.to_s].include?(k.to_s)
349
+ next if [DEFAULT_COERCE[k], false, RDF::XSD.integer.to_s, RDF::XSD.boolean.to_s].include?(coerce[k])
350
+ k_iri = k == IRI ? IRI : format_uri(k, :position => :predicate)
353
351
  d_iri = format_uri(coerce[k], :position => :subject)
354
- add_debug "coerce[#{k_iri}] => #{d_iri}"
352
+ add_debug "coerce[#{k_iri}] => #{d_iri}, k=#{k.inspect}"
355
353
  case c_h[d_iri]
356
354
  when nil
357
355
  c_h[d_iri] = k_iri
@@ -496,6 +494,10 @@ module JSON::LD
496
494
  case resource
497
495
  when RDF::Node
498
496
  return resource.to_s
497
+ when String
498
+ iri = resource
499
+ resource = RDF::URI(resource)
500
+ return nil unless resource.absolute?
499
501
  when RDF::URI
500
502
  iri = resource.to_s
501
503
  return iri if options[:canonicalize]
@@ -583,14 +585,14 @@ module JSON::LD
583
585
  def iri_range?(predicate)
584
586
  return false if predicate.nil? || @options[:canonicalize]
585
587
 
586
- unless coerce.has_key?(predicate)
588
+ unless coerce.has_key?(predicate.to_s)
587
589
  # objects of all statements with the predicate may not be literal
588
- coerce[predicate] = @graph.query(:predicate => predicate).to_a.any? {|st| st.object.literal?} ?
589
- false : RDF::XSD.anyURI
590
+ coerce[predicate.to_s] = @graph.query(:predicate => predicate).to_a.any? {|st| st.object.literal?} ?
591
+ false : IRI
590
592
  end
591
593
 
592
- add_debug "iri_range(#{predicate}) = #{coerce[predicate].inspect}"
593
- coerce[predicate] == RDF::XSD.anyURI
594
+ add_debug "iri_range(#{predicate}) = #{coerce[predicate.to_s].inspect}"
595
+ coerce[predicate.to_s] == IRI
594
596
  end
595
597
 
596
598
  ##
@@ -598,23 +600,23 @@ module JSON::LD
598
600
  # @param [RDF::URI] predicate
599
601
  # @return [Boolean]
600
602
  def datatype_range?(predicate)
601
- unless coerce.has_key?(predicate)
603
+ unless coerce.has_key?(predicate.to_s)
602
604
  # objects of all statements with the predicate must be literal
603
605
  # and have the same non-nil datatype
604
606
  dt = nil
605
607
  @graph.query(:predicate => predicate) do |st|
606
608
  if st.object.literal? && st.object.has_datatype?
607
- dt = st.object.datatype if dt.nil?
608
- dt = false unless dt == st.object.datatype
609
+ dt = st.object.datatype.to_s if dt.nil?
610
+ dt = false unless dt == st.object.datatype.to_s
609
611
  else
610
612
  dt = false
611
613
  end
612
614
  end
613
615
  add_debug "range(#{predicate}) = #{dt.inspect}"
614
- coerce[predicate] = dt
616
+ coerce[predicate.to_s] = dt
615
617
  end
616
618
 
617
- coerce[predicate]
619
+ coerce[predicate.to_s]
618
620
  end
619
621
 
620
622
  # Reset internal helper instance variables
metadata CHANGED
@@ -1,186 +1,133 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: json-ld
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 6
10
- version: 0.0.6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Gregg Kellogg
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-06-29 00:00:00 -07:00
12
+ date: 2011-08-05 00:00:00.000000000 -07:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: rdf
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2168459600 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 21
30
- segments:
31
- - 0
32
- - 3
33
- - 3
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
34
22
  version: 0.3.3
35
23
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: json
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2168459600
26
+ - !ruby/object:Gem::Dependency
27
+ name: json
28
+ requirement: &2168459140 !ruby/object:Gem::Requirement
41
29
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 1
46
- segments:
47
- - 1
48
- - 5
49
- - 1
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
50
33
  version: 1.5.1
51
34
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: yard
55
35
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2168459140
37
+ - !ruby/object:Gem::Dependency
38
+ name: yard
39
+ requirement: &2168458680 !ruby/object:Gem::Requirement
57
40
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 7
62
- segments:
63
- - 0
64
- - 6
65
- - 0
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
66
44
  version: 0.6.0
67
45
  type: :development
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
46
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2168458680
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &2168458220 !ruby/object:Gem::Requirement
73
51
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 27
78
- segments:
79
- - 2
80
- - 5
81
- - 0
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
82
55
  version: 2.5.0
83
56
  type: :development
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: rdf-spec
87
57
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *2168458220
59
+ - !ruby/object:Gem::Dependency
60
+ name: rdf-spec
61
+ requirement: &2168457760 !ruby/object:Gem::Requirement
89
62
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 23
94
- segments:
95
- - 0
96
- - 3
97
- - 2
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
98
66
  version: 0.3.2
99
67
  type: :development
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
- name: rdf-n3
103
68
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *2168457760
70
+ - !ruby/object:Gem::Dependency
71
+ name: rdf-n3
72
+ requirement: &2168487740 !ruby/object:Gem::Requirement
105
73
  none: false
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 21
110
- segments:
111
- - 0
112
- - 3
113
- - 3
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
114
77
  version: 0.3.3
115
78
  type: :development
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
118
- name: rdf-isomorphic
119
79
  prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
80
+ version_requirements: *2168487740
81
+ - !ruby/object:Gem::Dependency
82
+ name: rdf-isomorphic
83
+ requirement: &2168487280 !ruby/object:Gem::Requirement
121
84
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 27
126
- segments:
127
- - 0
128
- - 3
129
- - 4
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
130
88
  version: 0.3.4
131
89
  type: :development
132
- version_requirements: *id007
133
- - !ruby/object:Gem::Dependency
134
- name: sxp
135
90
  prerelease: false
136
- requirement: &id008 !ruby/object:Gem::Requirement
91
+ version_requirements: *2168487280
92
+ - !ruby/object:Gem::Dependency
93
+ name: sxp
94
+ requirement: &2168486820 !ruby/object:Gem::Requirement
137
95
  none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 3
142
- segments:
143
- - 0
144
- version: "0"
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
145
100
  type: :development
146
- version_requirements: *id008
147
- - !ruby/object:Gem::Dependency
148
- name: sparql-algebra
149
101
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
102
+ version_requirements: *2168486820
103
+ - !ruby/object:Gem::Dependency
104
+ name: sparql-algebra
105
+ requirement: &2168486360 !ruby/object:Gem::Requirement
151
106
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
159
111
  type: :development
160
- version_requirements: *id009
161
- - !ruby/object:Gem::Dependency
162
- name: sparql-grammar
163
112
  prerelease: false
164
- requirement: &id010 !ruby/object:Gem::Requirement
113
+ version_requirements: *2168486360
114
+ - !ruby/object:Gem::Dependency
115
+ name: sparql-grammar
116
+ requirement: &2168485900 !ruby/object:Gem::Requirement
165
117
  none: false
166
- requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- hash: 3
170
- segments:
171
- - 0
172
- version: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
173
122
  type: :development
174
- version_requirements: *id010
123
+ prerelease: false
124
+ version_requirements: *2168485900
175
125
  description: JSON-LD reader/writer for Ruby.
176
126
  email: public-rdf-ruby@w3.org
177
127
  executables: []
178
-
179
128
  extensions: []
180
-
181
129
  extra_rdoc_files: []
182
-
183
- files:
130
+ files:
184
131
  - AUTHORS
185
132
  - README
186
133
  - UNLICENSE
@@ -193,39 +140,28 @@ files:
193
140
  - lib/json/ld.rb
194
141
  has_rdoc: false
195
142
  homepage: http://github.com/gkellogg/json-ld
196
- licenses:
143
+ licenses:
197
144
  - Public Domain
198
145
  post_install_message:
199
146
  rdoc_options: []
200
-
201
- require_paths:
147
+ require_paths:
202
148
  - lib
203
- required_ruby_version: !ruby/object:Gem::Requirement
149
+ required_ruby_version: !ruby/object:Gem::Requirement
204
150
  none: false
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- hash: 53
209
- segments:
210
- - 1
211
- - 8
212
- - 1
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
213
154
  version: 1.8.1
214
- required_rubygems_version: !ruby/object:Gem::Requirement
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
156
  none: false
216
- requirements:
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- hash: 3
220
- segments:
221
- - 0
222
- version: "0"
157
+ requirements:
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
223
161
  requirements: []
224
-
225
162
  rubyforge_project: json-ld
226
- rubygems_version: 1.5.0
163
+ rubygems_version: 1.6.2
227
164
  signing_key:
228
165
  specification_version: 3
229
166
  summary: JSON-LD reader/writer for Ruby.
230
167
  test_files: []
231
-