Class: RDF::Reader Abstract
- Inherits:
-
Object
- Object
- RDF::Reader
- Extended by:
- Enumerable, Util::Aliasing::LateBound
- Includes:
- Enumerable, Readable
- Defined in:
- lib/rdf/reader.rb
Overview
The base class for RDF parsers.
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Hash) options
readonly
Any additional options for this reader.
Class Method Summary (collapse)
-
+ (Enumerator) each {|klass| ... }
Enumerates known RDF reader classes.
-
+ (Class) for(options = {})
Finds an RDF reader class based on the given criteria.
-
+ (Class) format(klass = nil)
(also: format_class)
Retrieves the RDF serialization format class for this writer class.
-
+ (Object) open(filename, options = {}) {|reader| ... }
Parses input from the given file name or URL.
Instance Method Summary (collapse)
-
- (Boolean) canonicalize?
protected
Returns
trueif parsed values should be canonicalized. -
- close
(also: #close!)
Closes the input stream, after which an
IOErrorwill be raised for further read attempts. -
- each_statement(&block)
(also: #each)
Iterates the given block for each RDF statement.
-
- each_triple(&block)
Iterates the given block for each RDF triple.
-
- (Encoding) encoding
protected
Returns the encoding of the input stream.
-
- fail_object
protected
Raises an "expected object" parsing error on the current line.
-
- fail_predicate
protected
Raises an "expected predicate" parsing error on the current line.
-
- fail_subject
protected
Raises an "expected subject" parsing error on the current line.
-
- (Reader) initialize(input = $stdin, options = {}) {|reader| ... }
constructor
Initializes the reader.
-
- (Boolean) intern?
protected
Returns
trueif parsed URIs should be interned. -
- (RDF::URI) prefix(name, uri = nil)
(also: #prefix!)
Defines the given named URI prefix for this reader.
-
- (Hash{Symbol => RDF::URI}) prefixes
Returns the URI prefixes currently defined for this reader.
-
- (Hash{Symbol => RDF::URI}) prefixes=(prefixes)
Defines the given URI prefixes for this reader.
-
- (RDF::Statement) read_statement
protected
Abstract
Reads a statement from the input stream.
-
- (Array(RDF::Term)) read_triple
protected
Abstract
Reads a triple from the input stream.
-
- rewind
(also: #rewind!)
Rewinds the input stream to the beginning of input.
-
- (Boolean) validate?
protected
Returns
trueif parsed statements and values should be validated.
Methods included from Util::Aliasing::LateBound
Methods included from Enumerable
#contexts, #dump, #each_context, #each_graph, #each_object, #each_predicate, #each_quad, #each_subject, #enum_context, #enum_graph, #enum_object, #enum_predicate, #enum_quad, #enum_statement, #enum_subject, #enum_triple, #has_context?, #has_object?, #has_predicate?, #has_quad?, #has_statement?, #has_subject?, #has_triple?, #objects, #predicates, #quads, #statements, #subjects, #to_a, #to_hash, #to_set, #triples
Methods included from Countable
Methods included from Readable
Constructor Details
- (Reader) initialize(input = $stdin, options = {}) {|reader| ... }
Initializes the reader.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/rdf/reader.rb', line 153 def initialize(input = $stdin, = {}, &block) = .dup [:validate] ||= false [:canonicalize] ||= false [:intern] ||= true [:prefixes] ||= Hash.new @input = case input when String then StringIO.new(input) else input end if block_given? case block.arity when 0 then instance_eval(&block) else block.call(self) end end end |
Instance Attribute Details
- (Hash) options (readonly)
Any additional options for this reader.
178 179 180 |
# File 'lib/rdf/reader.rb', line 178 def end |
Class Method Details
+ (Enumerator) each {|klass| ... }
Enumerates known RDF reader classes.
51 52 53 |
# File 'lib/rdf/reader.rb', line 51 def self.each(&block) @@subclasses.each(&block) end |
+ (Class) for(format) + (Class) for(filename) + (Class) for(options = {})
Finds an RDF reader class based on the given criteria.
80 81 82 83 84 |
# File 'lib/rdf/reader.rb', line 80 def self.for( = {}) if format = Format.for() format.reader end end |
+ (Class) format(klass = nil) Also known as: format_class
Retrieves the RDF serialization format class for this writer class.
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/rdf/reader.rb', line 90 def self.format(klass = nil) if klass.nil? Format.each do |format| if format.reader == self return format end end nil # not found end end |
+ (Object) open(filename, options = {}) {|reader| ... }
Parses input from the given file name or URL.
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/rdf/reader.rb', line 116 def self.open(filename, = {}, &block) Util::File.open_file(filename, ) do |file| = .dup [:content_type] ||= file.content_type if file.respond_to?(:content_type) [:file_name] ||= filename reader = self.for() if reader reader.new(file, , &block) else raise FormatError, "unknown RDF format: #{options[:format] || {:file_name => filename, :content_type => content_type}.inspect}" end end end |
Instance Method Details
- (Boolean) canonicalize? (protected)
Returns true if parsed values should be canonicalized.
393 394 395 |
# File 'lib/rdf/reader.rb', line 393 def canonicalize? [:canonicalize] end |
- close Also known as: close!
This method returns an undefined value.
Closes the input stream, after which an IOError will be raised for
further read attempts.
If the input stream is already closed, does nothing.
315 316 317 |
# File 'lib/rdf/reader.rb', line 315 def close @input.close unless @input.closed? end |
- each_statement {|statement| ... } - (Enumerator) each_statement Also known as: each
This method returns an undefined value.
Iterates the given block for each RDF statement.
If no block was given, returns an enumerator.
Statements are yielded in the order that they are read from the input stream.
250 251 252 253 254 255 256 257 258 259 |
# File 'lib/rdf/reader.rb', line 250 def each_statement(&block) if block_given? begin loop { block.call(read_statement) } rescue EOFError => e rewind rescue nil end end enum_for(:each_statement) end |
- each_triple {|subject, predicate, object| ... } - (Enumerator) each_triple
This method returns an undefined value.
Iterates the given block for each RDF triple.
If no block was given, returns an enumerator.
Triples are yielded in the order that they are read from the input stream.
284 285 286 287 288 289 290 291 292 293 |
# File 'lib/rdf/reader.rb', line 284 def each_triple(&block) if block_given? begin loop { block.call(*read_triple) } rescue EOFError => e rewind rescue nil end end enum_for(:each_triple) end |
- (Encoding) encoding (protected)
Returns the encoding of the input stream.
Note: this method requires Ruby 1.9 or newer.
375 376 377 |
# File 'lib/rdf/reader.rb', line 375 def encoding [:encoding] ||= Encoding::UTF_8 end |
- fail_object (protected)
This method returns an undefined value.
Raises an "expected object" parsing error on the current line.
365 366 367 |
# File 'lib/rdf/reader.rb', line 365 def fail_object raise RDF::ReaderError, "expected object in #{@input.inspect} line #{lineno}" end |
- fail_predicate (protected)
This method returns an undefined value.
Raises an "expected predicate" parsing error on the current line.
356 357 358 |
# File 'lib/rdf/reader.rb', line 356 def fail_predicate raise RDF::ReaderError, "expected predicate in #{@input.inspect} line #{lineno}" end |
- fail_subject (protected)
This method returns an undefined value.
Raises an "expected subject" parsing error on the current line.
347 348 349 |
# File 'lib/rdf/reader.rb', line 347 def fail_subject raise RDF::ReaderError, "expected subject in #{@input.inspect} line #{lineno}" end |
- (Boolean) intern? (protected)
Returns true if parsed URIs should be interned.
402 403 404 |
# File 'lib/rdf/reader.rb', line 402 def intern? [:intern] end |
- (Object) prefix(name, uri) - (Object) prefix(name) Also known as: prefix!
Defines the given named URI prefix for this reader.
224 225 226 227 |
# File 'lib/rdf/reader.rb', line 224 def prefix(name, uri = nil) name = name.to_s.empty? ? nil : (name.respond_to?(:to_sym) ? name.to_sym : name.to_s.to_sym) uri.nil? ? prefixes[name] : prefixes[name] = uri end |
- (Hash{Symbol => RDF::URI}) prefixes
Returns the URI prefixes currently defined for this reader.
188 189 190 |
# File 'lib/rdf/reader.rb', line 188 def prefixes [:prefixes] ||= {} end |
- (Hash{Symbol => RDF::URI}) prefixes=(prefixes)
Defines the given URI prefixes for this reader.
203 204 205 |
# File 'lib/rdf/reader.rb', line 203 def prefixes=(prefixes) [:prefixes] = prefixes end |
- (RDF::Statement) read_statement (protected)
Reads a statement from the input stream.
328 329 330 |
# File 'lib/rdf/reader.rb', line 328 def read_statement Statement.new(*read_triple) end |
- (Array(RDF::Term)) read_triple (protected)
Reads a triple from the input stream.
338 339 340 |
# File 'lib/rdf/reader.rb', line 338 def read_triple raise NotImplementedError, "#{self.class}#read_triple" # override in subclasses end |
- rewind Also known as: rewind!
This method returns an undefined value.
Rewinds the input stream to the beginning of input.
301 302 303 |
# File 'lib/rdf/reader.rb', line 301 def rewind @input.rewind end |
- (Boolean) validate? (protected)
Returns true if parsed statements and values should be validated.
384 385 386 |
# File 'lib/rdf/reader.rb', line 384 def validate? [:validate] end |