json-ld 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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
-