rdf 2.2.3 → 2.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0c4f107a087cbcd8828a9db8826cf54e7746ac3
4
- data.tar.gz: 8d98e00d3290c1483a19a46c5596fe1e74411f30
3
+ metadata.gz: d5b0c02b8e9058e426f16a534e9a9f67b0ddab07
4
+ data.tar.gz: a68b6870879a0eec41e12047561334f7c1173d39
5
5
  SHA512:
6
- metadata.gz: 9cc293fc0d360d0f936452cf97e759dd86485ba26de3c84087936248d7d2a490a89a53e7c9a6aef1380c340faeb7335124b6d25ffb54426887c549138b59a931
7
- data.tar.gz: eba1d1738c875b2d862dfff870eb5ceb714004cc2be9899104641250006e5c86a6bceaf6a91562db6f298addfe8f3c6a8d305e1be5ce1ded16a4d805a51e2b8f
6
+ metadata.gz: ac36cd538bb75de037dc179f6125e424c701e50667936ee62ef75426f316f53de83b0a56fe464648450445dbaf31ab52b7e91ce8ad7aeb75e7d71840de206fba
7
+ data.tar.gz: 35ab589fcf5f331c29518f7928fd1bde329c4ba65b67c31e05ef219f2c4ff998e79610a883bfb6d9409b7190fd196807f82527aa5d9f9652391386249a60fba5
data/README.md CHANGED
@@ -84,7 +84,10 @@ operations on RDF files using available readers and writers.
84
84
  * `serialize`: Parse an RDF input and re-serializing to [N-Triples][] or another available format using `--output-format` option.
85
85
  * `subjects`: Returns unique subjects from parsed input.
86
86
 
87
- The `serialize` command can also be used to serialize as a vocabulary
87
+ The `serialize` command can also be used to serialize as a vocabulary.
88
+
89
+ Different RDF gems will augment the `rdf` script with more capabilities, which may require specifying the appropriate `--input-format` option to revel.
90
+
88
91
  ## Examples
89
92
 
90
93
  require 'rdf'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.2.3
1
+ 2.2.4
@@ -122,7 +122,7 @@ module RDF
122
122
  # @see #each_statement
123
123
  # @see #enum_statement
124
124
  def statements(**options)
125
- Array(enum_statement)
125
+ enum_statement.to_a
126
126
  end
127
127
 
128
128
  ##
@@ -311,7 +311,7 @@ module RDF
311
311
  unless unique
312
312
  enum_statement.map(&:subject) # TODO: optimize
313
313
  else
314
- Array(enum_subject)
314
+ enum_subject.to_a
315
315
  end
316
316
  end
317
317
 
@@ -376,7 +376,7 @@ module RDF
376
376
  unless unique
377
377
  enum_statement.map(&:predicate) # TODO: optimize
378
378
  else
379
- Array(enum_predicate)
379
+ enum_predicate.to_a
380
380
  end
381
381
  end
382
382
 
@@ -441,7 +441,7 @@ module RDF
441
441
  unless unique
442
442
  enum_statement.map(&:object) # TODO: optimize
443
443
  else
444
- Array(enum_object)
444
+ enum_object.to_a
445
445
  end
446
446
  end
447
447
 
@@ -514,7 +514,7 @@ module RDF
514
514
  flatten.
515
515
  compact
516
516
  else
517
- Array(enum_term)
517
+ enum_term.to_a
518
518
  end
519
519
  end
520
520
 
@@ -759,7 +759,7 @@ module RDF
759
759
  # @overload #to_writer
760
760
  # Implements #to_writer for each available instance of {RDF::Writer},
761
761
  # based on the writer symbol.
762
- #
762
+ #
763
763
  # @return [String]
764
764
  # @see {RDF::Writer.sym}
765
765
  def method_missing(meth, *args)
@@ -780,7 +780,7 @@ module RDF
780
780
  end
781
781
 
782
782
  ##
783
- # @note this instantiates an writer; it could probably be done more
783
+ # @note this instantiates an writer; it could probably be done more
784
784
  # efficiently by refactoring `RDF::Reader` and/or `RDF::Format` to expose
785
785
  # a list of valid format symbols.
786
786
  def respond_to_missing?(name, include_private = false)
@@ -6,7 +6,7 @@ module RDF; class Literal
6
6
  # @since 0.2.1
7
7
  class Boolean < Literal
8
8
  DATATYPE = RDF::XSD.boolean
9
- GRAMMAR = /^(true|false|1|0)$/i.freeze
9
+ GRAMMAR = /^(true|false|1|0)$/.freeze
10
10
  TRUES = %w(true 1).freeze
11
11
  FALSES = %w(false 0).freeze
12
12
 
@@ -12,7 +12,7 @@ module RDF; class Literal
12
12
  # @since 0.2.1
13
13
  class Double < Numeric
14
14
  DATATYPE = RDF::XSD.double
15
- GRAMMAR = /^(?:NaN|(?:[\+\-]?(?:INF|(?:\d+(\.\d*)?(e[\+\-]?\d+)?))))$/i.freeze
15
+ GRAMMAR = /^(?:NaN|\-?INF|[+\-]?(?:\d+(:?\.\d*)?|\.\d+)(?:[eE][\+\-]?\d+)?)$/.freeze
16
16
 
17
17
  ##
18
18
  # @param [String, Float, #to_f] value
@@ -21,11 +21,11 @@ module RDF; class Literal
21
21
  @datatype = RDF::URI(datatype || self.class.const_get(:DATATYPE))
22
22
  @string = lexical || (value if value.is_a?(String))
23
23
  @object = case
24
- when value.is_a?(::String) then case value
24
+ when value.is_a?(::String) then case value.upcase
25
25
  when '+INF' then 1/0.0
26
26
  when 'INF' then 1/0.0
27
27
  when '-INF' then -1/0.0
28
- when 'NaN' then 0/0.0
28
+ when 'NAN' then 0/0.0
29
29
  else Float(value.sub(/\.[eE]/, '.0E')) rescue nil
30
30
  end
31
31
  when value.is_a?(::Float) then value
@@ -180,18 +180,37 @@ module RDF
180
180
  # @yieldreturn [void] ignored
181
181
  # @raise [RDF::FormatError] if no reader found for the specified format
182
182
  def self.open(filename, format: nil, **options, &block)
183
+ # If we're the abstract reader, and we can figure out a concrete reader from format and options, use that.
184
+ if self == RDF::Reader && reader = self.for(format || {file_name: filename}.merge(options))
185
+ return reader.open(filename, format: format, **options, &block)
186
+ end
187
+
188
+ # If we are a concrete reader class or format is not nil, set accept header from our content_types.
189
+ unless self == RDF::Reader
190
+ headers = (options[:headers] ||= {})
191
+ headers['Accept'] ||= (self.format.accept_type + %w(*/*;q=0.1)).join(", ")
192
+ end
193
+
183
194
  Util::File.open_file(filename, options) do |file|
184
195
  format_options = options.dup
185
196
  format_options[:content_type] ||= file.content_type if file.respond_to?(:content_type)
186
197
  format_options[:file_name] ||= filename
198
+ reader = if self == RDF::Reader
199
+ # We are the abstract reader class, find an appropriate reader
200
+ self.for(format || format_options) do
201
+ # Return a sample from the input file
202
+ sample = file.read(1000)
203
+ file.rewind
204
+ sample
205
+ end
206
+ else
207
+ # We are a concrete reader class
208
+ self
209
+ end
210
+
187
211
  options[:encoding] ||= file.encoding if file.respond_to?(:encoding)
188
212
  options[:filename] ||= filename
189
- reader = self.for(format || format_options) do
190
- # Return a sample from the input file
191
- sample = file.read(1000)
192
- file.rewind
193
- sample
194
- end
213
+
195
214
  if reader
196
215
  reader.new(file, options, &block)
197
216
  else
@@ -305,7 +305,7 @@ module RDF; module Util
305
305
  content_type = format ? format.content_type.first : 'text/plain'
306
306
  # Open as a file, passing any options
307
307
  begin
308
- url_no_frag_or_query = RDF::URI(filename_or_url)
308
+ url_no_frag_or_query = RDF::URI(filename_or_url).dup
309
309
  url_no_frag_or_query.query = nil
310
310
  url_no_frag_or_query.fragment = nil
311
311
  options[:encoding] ||= Encoding::UTF_8
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arto Bendiken
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-24 00:00:00.000000000 Z
13
+ date: 2017-03-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: link_header