rdf 0.2.2 → 0.2.3

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.
@@ -0,0 +1,47 @@
1
+ module RDF; class Literal
2
+ ##
3
+ # A token literal.
4
+ #
5
+ # @see http://www.w3.org/TR/xmlschema-2/#token
6
+ # @since 0.2.3
7
+ class Token < Literal
8
+ DATATYPE = XSD.token
9
+ GRAMMAR = /\A[^\x0D\x0A\x09]+\z/i.freeze # FIXME
10
+
11
+ ##
12
+ # @param [Symbol, #to_s] value
13
+ # @option options [String] :lexical (nil)
14
+ def initialize(value, options = {})
15
+ @datatype = RDF::URI(options[:datatype] || DATATYPE)
16
+ @string = options[:lexical] if options.has_key?(:lexical)
17
+ @string = value if !defined?(@string) && value.is_a?(String)
18
+ @object = value.is_a?(Symbol) ? value : value.to_s
19
+ end
20
+
21
+ ##
22
+ # Converts the literal into its canonical lexical representation.
23
+ #
24
+ # @return [Literal]
25
+ # @see http://www.w3.org/TR/xmlschema-2/#boolean
26
+ def canonicalize
27
+ @string = @object.to_s if @object
28
+ self
29
+ end
30
+
31
+ ##
32
+ # Returns the value as a symbol.
33
+ #
34
+ # @return [Symbol]
35
+ def to_sym
36
+ @object.to_sym
37
+ end
38
+
39
+ ##
40
+ # Returns the value as a string.
41
+ #
42
+ # @return [String]
43
+ def to_s
44
+ @string || @object.to_s
45
+ end
46
+ end # class Token
47
+ end; end # class RDF::Literal
@@ -246,7 +246,6 @@ module RDF
246
246
  #
247
247
  # @return [String]
248
248
  def to_s
249
- require 'stringio' unless defined?(StringIO)
250
249
  StringIO.open do |buffer|
251
250
  buffer << case subject
252
251
  when RDF::Node then subject.to_s
@@ -153,7 +153,6 @@ module RDF; class Query
153
153
  #
154
154
  # @return [String]
155
155
  def to_s
156
- require 'stringio' unless defined?(StringIO)
157
156
  StringIO.open do |buffer| # FIXME in RDF::Statement
158
157
  buffer << (subject.is_a?(Variable) ? subject.to_s : "<#{subject}>") << ' '
159
158
  buffer << (predicate.is_a?(Variable) ? predicate.to_s : "<#{predicate}>") << ' '
@@ -2,11 +2,15 @@ class RDF::Query
2
2
  ##
3
3
  # An RDF query variable.
4
4
  #
5
- # @example Creating an unbound variable
5
+ # @example Creating a named unbound variable
6
6
  # var = RDF::Query::Variable.new(:x)
7
7
  # var.unbound? #=> true
8
8
  # var.value #=> nil
9
9
  #
10
+ # @example Creating an anonymous unbound variable
11
+ # var = RDF::Query::Variable.new
12
+ # var.name #=> :g2166151240
13
+ #
10
14
  # @example Unbound variables match any value
11
15
  # var === 42 #=> true
12
16
  #
@@ -52,8 +56,9 @@ class RDF::Query
52
56
  ##
53
57
  # @param [Symbol] name
54
58
  # @param [Value] value
55
- def initialize(name, value = nil)
56
- @name, @value = name.to_sym, value
59
+ def initialize(name = nil, value = nil)
60
+ @name = (name || "g#{__id__.to_i.abs}").to_sym
61
+ @value = value
57
62
  end
58
63
 
59
64
  ##
@@ -159,8 +159,22 @@ module RDF
159
159
  end
160
160
 
161
161
  ##
162
+ # Rewinds the input stream to the beginning of input.
163
+ #
164
+ # @return [void]
165
+ # @since 0.2.3
166
+ # @see http://ruby-doc.org/core-1.9/classes/IO.html#M001692
167
+ def rewind
168
+ @input.rewind
169
+ end
170
+
171
+ ##
172
+ # Closes the input stream. An `IOError` is raised for further read
173
+ # attempts.
174
+ #
162
175
  # @return [void]
163
176
  # @since 0.2.2
177
+ # @see http://ruby-doc.org/core-1.9/classes/IO.html#M001699
164
178
  def close
165
179
  @input.close unless @input.closed?
166
180
  end
@@ -73,7 +73,7 @@ module RDF; module Util
73
73
  # @return [Object]
74
74
  def [](key)
75
75
  if value_id = @cache[key]
76
- value = ObjectSpace._id2ref(value_id)
76
+ value = ObjectSpace._id2ref(value_id) rescue nil
77
77
  end
78
78
  end
79
79
 
@@ -110,7 +110,7 @@ module RDF; module Util
110
110
  # @return [Object]
111
111
  def [](key)
112
112
  if (ref = @cache[key]) && ref.weakref_alive?
113
- value = ref.__getobj__
113
+ value = ref.__getobj__ rescue nil
114
114
  end
115
115
  end
116
116
 
@@ -2,7 +2,7 @@ module RDF
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 2
5
+ TINY = 3
6
6
  EXTRA = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, EXTRA].compact.join('.')
@@ -33,6 +33,7 @@ module RDF
33
33
  # @see RDF::Format
34
34
  # @see RDF::Reader
35
35
  class Writer
36
+ extend RDF::Util::Aliasing::LateBound
36
37
  extend ::Enumerable
37
38
  include RDF::Writable
38
39
 
@@ -125,8 +126,6 @@ module RDF
125
126
  # @yieldparam [Writer] writer
126
127
  # @return [String]
127
128
  def self.buffer(*args, &block)
128
- require 'stringio' unless defined?(StringIO)
129
-
130
129
  StringIO.open do |buffer|
131
130
  self.new(buffer, *args) { |writer| block.call(writer) }
132
131
  buffer.string
@@ -270,7 +269,8 @@ module RDF
270
269
  # @return [String]
271
270
  def format_value(value, options = {})
272
271
  case value
273
- when String then format_literal(value, options) # FIXME
272
+ when String then format_literal(RDF::Literal.new(value, options), options)
273
+ when RDF::List then format_list(value, options)
274
274
  when RDF::Literal then format_literal(value, options)
275
275
  when RDF::URI then format_uri(value, options)
276
276
  when RDF::Node then format_node(value, options)
@@ -279,23 +279,23 @@ module RDF
279
279
  end
280
280
 
281
281
  ##
282
- # @param [URI] value
282
+ # @param [Node] value
283
283
  # @param [Hash{Symbol => Object}] options
284
284
  # @return [String]
285
285
  # @raise [NotImplementedError] unless implemented in subclass
286
286
  # @abstract
287
- def format_uri(value, options = {})
288
- raise NotImplementedError.new("#{self.class}#format_uri") # override in subclasses
287
+ def format_node(value, options = {})
288
+ raise NotImplementedError.new("#{self.class}#format_node") # override in subclasses
289
289
  end
290
290
 
291
291
  ##
292
- # @param [Node] value
292
+ # @param [URI] value
293
293
  # @param [Hash{Symbol => Object}] options
294
294
  # @return [String]
295
295
  # @raise [NotImplementedError] unless implemented in subclass
296
296
  # @abstract
297
- def format_node(value, options = {})
298
- raise NotImplementedError.new("#{self.class}#format_node") # override in subclasses
297
+ def format_uri(value, options = {})
298
+ raise NotImplementedError.new("#{self.class}#format_uri") # override in subclasses
299
299
  end
300
300
 
301
301
  ##
@@ -308,6 +308,16 @@ module RDF
308
308
  raise NotImplementedError.new("#{self.class}#format_literal") # override in subclasses
309
309
  end
310
310
 
311
+ ##
312
+ # @param [List] value
313
+ # @param [Hash{Symbol => Object}] options
314
+ # @return [String]
315
+ # @abstract
316
+ # @since 0.2.3
317
+ def format_list(value, options = {})
318
+ format_value(value.subject, options)
319
+ end
320
+
311
321
  protected
312
322
 
313
323
  ##
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 2
9
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Arto Bendiken
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-06 00:00:00 +02:00
18
+ date: 2010-08-26 00:00:00 +02:00
19
19
  default_executable: rdf
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -27,9 +27,9 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
29
  - 2
30
- - 1
31
30
  - 2
32
- version: 2.1.2
31
+ - 0
32
+ version: 2.2.0
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
@@ -70,8 +70,8 @@ dependencies:
70
70
  segments:
71
71
  - 0
72
72
  - 2
73
- - 2
74
- version: 0.2.2
73
+ - 3
74
+ version: 0.2.3
75
75
  type: :development
76
76
  version_requirements: *id004
77
77
  description: RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.
@@ -102,6 +102,7 @@ files:
102
102
  - lib/rdf/mixin/readable.rb
103
103
  - lib/rdf/mixin/writable.rb
104
104
  - lib/rdf/model/graph.rb
105
+ - lib/rdf/model/list.rb
105
106
  - lib/rdf/model/literal/boolean.rb
106
107
  - lib/rdf/model/literal/date.rb
107
108
  - lib/rdf/model/literal/datetime.rb
@@ -109,6 +110,7 @@ files:
109
110
  - lib/rdf/model/literal/double.rb
110
111
  - lib/rdf/model/literal/integer.rb
111
112
  - lib/rdf/model/literal/time.rb
113
+ - lib/rdf/model/literal/token.rb
112
114
  - lib/rdf/model/literal/xml.rb
113
115
  - lib/rdf/model/literal.rb
114
116
  - lib/rdf/model/node.rb