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 = {}, &block)
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 reader class.
-
+ (Object) open(filename, options = {}) {|reader| ... }
Parses input from the given file name or URL.
-
+ (Symbol) to_sym
Returns a symbol appropriate to use with RDF::Reader.for().
Instance Method Summary (collapse)
-
- (Hash{Symbol => RDF::URI}) base_uri
Returns the base URI determined by this reader.
-
- (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.
-
- (Symbol) to_sym
Returns a symbol appropriate to use with RDF::Reader.for().
-
- (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.
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/rdf/reader.rb', line 184 def initialize(input = $stdin, = {}, &block) @options = .dup @options[:validate] ||= false @options[:canonicalize] ||= false @options[:intern] ||= true @options[: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.
209 210 211 |
# File 'lib/rdf/reader.rb', line 209 def @options 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.
If the reader class has a defined format, use that.
89 90 91 92 93 |
# File 'lib/rdf/reader.rb', line 89 def self.for( = {}, &block) if format = self.format || Format.for(, &block) format.reader end end |
+ (Class) format(klass = nil) Also known as: format_class
Retrieves the RDF serialization format class for this reader class.
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/rdf/reader.rb', line 99 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.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/rdf/reader.rb', line 125 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([:format] || ) do # Return a sample from the input file sample = file.read(1000) file.rewind sample end if reader reader.new(file, , &block) else raise FormatError, "unknown RDF format: #{.inspect}" end end end |
+ (Symbol) to_sym
Returns a symbol appropriate to use with RDF::Reader.for()
147 148 149 150 151 152 |
# File 'lib/rdf/reader.rb', line 147 def self.to_sym elements = self.to_s.split("::") sym = elements.pop sym = elements.pop if sym == 'Reader' sym.downcase.to_s.to_sym end |
Instance Method Details
- (Hash{Symbol => RDF::URI}) base_uri
Returns the base URI determined by this reader.
219 220 221 |
# File 'lib/rdf/reader.rb', line 219 def base_uri @options[:base_uri] end |
- (Boolean) canonicalize? (protected)
Returns true if parsed values should be canonicalized.
436 437 438 |
# File 'lib/rdf/reader.rb', line 436 def canonicalize? @options[: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.
358 359 360 |
# File 'lib/rdf/reader.rb', line 358 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.
293 294 295 296 297 298 299 300 301 302 |
# File 'lib/rdf/reader.rb', line 293 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.
327 328 329 330 331 332 333 334 335 336 |
# File 'lib/rdf/reader.rb', line 327 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.
418 419 420 |
# File 'lib/rdf/reader.rb', line 418 def encoding @options[:encoding] ||= Encoding::UTF_8 end |
- fail_object (protected)
This method returns an undefined value.
Raises an "expected object" parsing error on the current line.
408 409 410 |
# File 'lib/rdf/reader.rb', line 408 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.
399 400 401 |
# File 'lib/rdf/reader.rb', line 399 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.
390 391 392 |
# File 'lib/rdf/reader.rb', line 390 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.
445 446 447 |
# File 'lib/rdf/reader.rb', line 445 def intern? @options[:intern] end |
- (RDF::URI) prefix(name, uri) - (RDF::URI) prefix(name) Also known as: prefix!
Defines the given named URI prefix for this reader.
267 268 269 270 |
# File 'lib/rdf/reader.rb', line 267 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.
231 232 233 |
# File 'lib/rdf/reader.rb', line 231 def prefixes @options[:prefixes] ||= {} end |
- (Hash{Symbol => RDF::URI}) prefixes=(prefixes)
Defines the given URI prefixes for this reader.
246 247 248 |
# File 'lib/rdf/reader.rb', line 246 def prefixes=(prefixes) @options[:prefixes] = prefixes end |
- (RDF::Statement) read_statement (protected)
Reads a statement from the input stream.
371 372 373 |
# File 'lib/rdf/reader.rb', line 371 def read_statement Statement.new(*read_triple) end |
- (Array(RDF::Term)) read_triple (protected)
Reads a triple from the input stream.
381 382 383 |
# File 'lib/rdf/reader.rb', line 381 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.
344 345 346 |
# File 'lib/rdf/reader.rb', line 344 def rewind @input.rewind end |
- (Symbol) to_sym
Returns a symbol appropriate to use with RDF::Reader.for()
157 158 159 |
# File 'lib/rdf/reader.rb', line 157 def to_sym self.class.to_sym end |
- (Boolean) validate? (protected)
Returns true if parsed statements and values should be validated.
427 428 429 |
# File 'lib/rdf/reader.rb', line 427 def validate? @options[:validate] end |