Module: RDF::Enumerable
- Extended by:
- Util::Aliasing::LateBound
- Includes:
- Enumerable, Countable
- Included in:
- Graph, List, Query::Solution, Reader, Repository
- Defined in:
- lib/rdf/mixin/enumerable.rb
Overview
An RDF statement enumeration mixin.
Classes that include this module must implement an #each method that
yields RDF statements.
Instance Method Summary (collapse)
-
- (Enumerator<RDF::Resource>) contexts(options = {})
Returns all unique RDF contexts.
-
- (String) dump(*args)
Returns a serialized string representation of
self. -
- each_context(&block)
Iterates the given block for each unique RDF context.
-
- each_graph(&block)
Iterates the given block for each RDF graph in
self. -
- each_object(&block)
Iterates the given block for each unique RDF object term.
-
- each_predicate(&block)
Iterates the given block for each unique RDF predicate term.
-
- each_quad(&block)
Iterates the given block for each RDF quad.
-
- each_statement(&block)
Iterates the given block for each RDF statement.
-
- each_subject(&block)
Iterates the given block for each unique RDF subject term.
-
- each_triple(&block)
Iterates the given block for each RDF triple.
-
- (Enumerator) enum_context
(also: #enum_contexts)
Returns an enumerator for #each_context.
-
- (Enumerator) enum_graph
(also: #enum_graphs)
Returns an enumerator for #each_graph.
-
- (Enumerator) enum_object
(also: #enum_objects)
Returns an enumerator for #each_object.
-
- (Enumerator) enum_predicate
(also: #enum_predicates)
Returns an enumerator for #each_predicate.
-
- (Enumerator) enum_quad
(also: #enum_quads)
Returns an enumerator for #each_quad.
-
- (Enumerator) enum_statement
(also: #enum_statements)
Returns an enumerator for #each_statement.
-
- (Enumerator) enum_subject
(also: #enum_subjects)
Returns an enumerator for #each_subject.
-
- (Enumerator) enum_triple
(also: #enum_triples)
Returns an enumerator for #each_triple.
-
- (Boolean) has_context?(value)
Returns
trueifselfcontains the given RDF context. -
- (Boolean) has_object?(value)
Returns
trueifselfcontains the given RDF object term. -
- (Boolean) has_predicate?(value)
Returns
trueifselfcontains the given RDF predicate term. -
- (Boolean) has_quad?(quad)
Returns
trueifselfcontains the given RDF quad. -
- (Boolean) has_statement?(statement)
(also: #include?)
Returns
trueifselfcontains the given RDF statement. -
- (Boolean) has_subject?(value)
Returns
trueifselfcontains the given RDF subject term. -
- (Boolean) has_triple?(triple)
Returns
trueifselfcontains the given RDF triple. -
- (Enumerator<RDF::Term>) objects(options = {})
Returns all unique RDF object terms.
-
- (Enumerator<RDF::URI>) predicates(options = {})
Returns all unique RDF predicate terms.
-
- (Enumerator<Array(RDF::Resource, RDF::URI, RDF::Term, RDF::Resource)>) quads(options = {})
Returns all RDF quads.
-
- (Enumerator<RDF::Statement>) statements(options = {})
Returns all RDF statements.
-
- (Enumerator<RDF::Resource>) subjects(options = {})
Returns all unique RDF subject terms.
-
- (Array) to_a
Returns all RDF statements in
selfas an array. -
- (Hash) to_hash
Returns all RDF object terms indexed by their subject and predicate terms.
-
- (Set) to_set
Returns all RDF statements in
selfas a set. -
- (Enumerator<Array(RDF::Resource, RDF::URI, RDF::Term)>) triples(options = {})
Returns all RDF triples.
Methods included from Util::Aliasing::LateBound
Methods included from Countable
Instance Method Details
- (Enumerator<RDF::Resource>) contexts(options = {})
Returns all unique RDF contexts.
455 456 457 458 459 460 461 |
# File 'lib/rdf/mixin/enumerable.rb', line 455 def contexts( = {}) if [:unique] == false enum_statement.map(&:context).to_enum # TODO: optimize else enum_context end end |
- (String) dump(*args)
Returns a serialized string representation of self.
Before calling this method you may need to explicitly require a serialization plugin for the specified format.
615 616 617 618 |
# File 'lib/rdf/mixin/enumerable.rb', line 615 def dump(*args) = args.last.is_a?(Hash) ? args.pop : {} RDF::Writer.for(*args).dump(self, nil, ) end |
- each_context {|context| ... } - (Enumerator) each_context
This method returns an undefined value.
Iterates the given block for each unique RDF context.
If no block was given, returns an enumerator.
The order in which values are yielded is undefined.
491 492 493 494 495 496 497 498 499 500 501 502 503 |
# File 'lib/rdf/mixin/enumerable.rb', line 491 def each_context(&block) if block_given? values = {} each_statement do |statement| value = statement.context unless value.nil? || values.include?(value) values[value] = true block.call(value) end end end enum_context end |
- each_graph {|graph| ... } - (Enumerator) each_graph
This method returns an undefined value.
Iterates the given block for each RDF graph in self.
If no block was given, returns an enumerator.
The order in which graphs are yielded is undefined.
535 536 537 538 539 540 541 542 543 |
# File 'lib/rdf/mixin/enumerable.rb', line 535 def each_graph(&block) if block_given? block.call(RDF::Graph.new(nil, :data => self)) each_context do |context| block.call(RDF::Graph.new(context, :data => self)) end end enum_graph end |
- each_object {|object| ... } - (Enumerator) each_object
This method returns an undefined value.
Iterates the given block for each unique RDF object term.
If no block was given, returns an enumerator.
The order in which values are yielded is undefined.
423 424 425 426 427 428 429 430 431 432 433 434 435 |
# File 'lib/rdf/mixin/enumerable.rb', line 423 def each_object(&block) # FIXME: deduplication if block_given? values = {} each_statement do |statement| value = statement.object unless value.nil? || values.include?(value) values[value] = true block.call(value) end end end enum_object end |
- each_predicate {|predicate| ... } - (Enumerator) each_predicate
This method returns an undefined value.
Iterates the given block for each unique RDF predicate term.
If no block was given, returns an enumerator.
The order in which values are yielded is undefined.
355 356 357 358 359 360 361 362 363 364 365 366 367 |
# File 'lib/rdf/mixin/enumerable.rb', line 355 def each_predicate(&block) if block_given? values = {} each_statement do |statement| value = statement.predicate unless value.nil? || values.include?(value.to_s) values[value.to_s] = true block.call(value) end end end enum_predicate end |
- each_quad {|subject, predicate, object, context| ... } - (Enumerator) each_quad
This method returns an undefined value.
Iterates the given block for each RDF quad.
If no block was given, returns an enumerator.
The order in which quads are yielded is undefined.
224 225 226 227 228 229 230 231 |
# File 'lib/rdf/mixin/enumerable.rb', line 224 def each_quad(&block) if block_given? each_statement do |statement| block.call(*statement.to_quad) end end enum_quad end |
- each_statement {|statement| ... } - (Enumerator) each_statement
This method returns an undefined value.
Iterates the given block for each RDF statement.
If no block was given, returns an enumerator.
The order in which statements are yielded is undefined.
104 105 106 107 108 109 110 |
# File 'lib/rdf/mixin/enumerable.rb', line 104 def each_statement(&block) if block_given? # Invoke {#each} in the containing class: each(&block) end enum_statement end |
- each_subject {|subject| ... } - (Enumerator) each_subject
This method returns an undefined value.
Iterates the given block for each unique RDF subject term.
If no block was given, returns an enumerator.
The order in which values are yielded is undefined.
287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/rdf/mixin/enumerable.rb', line 287 def each_subject(&block) if block_given? values = {} each_statement do |statement| value = statement.subject unless value.nil? || values.include?(value.to_s) values[value.to_s] = true block.call(value) end end end enum_subject 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.
The order in which triples are yielded is undefined.
163 164 165 166 167 168 169 170 |
# File 'lib/rdf/mixin/enumerable.rb', line 163 def each_triple(&block) if block_given? each_statement do |statement| block.call(*statement.to_triple) end end enum_triple end |
- (Enumerator) enum_context Also known as: enum_contexts
Returns an enumerator for #each_context.
510 511 512 |
# File 'lib/rdf/mixin/enumerable.rb', line 510 def enum_context enum_for(:each_context) end |
- (Enumerator) enum_graph Also known as: enum_graphs
Returns an enumerator for #each_graph.
551 552 553 |
# File 'lib/rdf/mixin/enumerable.rb', line 551 def enum_graph enum_for(:each_graph) end |
- (Enumerator) enum_object Also known as: enum_objects
Returns an enumerator for #each_object.
442 443 444 |
# File 'lib/rdf/mixin/enumerable.rb', line 442 def enum_object enum_for(:each_object) end |
- (Enumerator) enum_predicate Also known as: enum_predicates
Returns an enumerator for #each_predicate.
374 375 376 |
# File 'lib/rdf/mixin/enumerable.rb', line 374 def enum_predicate enum_for(:each_predicate) end |
- (Enumerator) enum_quad Also known as: enum_quads
Returns an enumerator for #each_quad.
238 239 240 |
# File 'lib/rdf/mixin/enumerable.rb', line 238 def enum_quad enum_for(:each_quad) end |
- (Enumerator) enum_statement Also known as: enum_statements
Returns an enumerator for #each_statement.
117 118 119 |
# File 'lib/rdf/mixin/enumerable.rb', line 117 def enum_statement enum_for(:each_statement).extend(RDF::Queryable, RDF::Enumerable) end |
- (Enumerator) enum_subject Also known as: enum_subjects
Returns an enumerator for #each_subject.
306 307 308 |
# File 'lib/rdf/mixin/enumerable.rb', line 306 def enum_subject enum_for(:each_subject) end |
- (Enumerator) enum_triple Also known as: enum_triples
Returns an enumerator for #each_triple.
177 178 179 |
# File 'lib/rdf/mixin/enumerable.rb', line 177 def enum_triple enum_for(:each_triple) end |
- (Boolean) has_context?(value)
Returns true if self contains the given RDF context.
468 469 470 |
# File 'lib/rdf/mixin/enumerable.rb', line 468 def has_context?(value) enum_context.include?(value) end |
- (Boolean) has_object?(value)
Returns true if self contains the given RDF object term.
400 401 402 |
# File 'lib/rdf/mixin/enumerable.rb', line 400 def has_object?(value) enum_object.include?(value) end |
- (Boolean) has_predicate?(value)
Returns true if self contains the given RDF predicate term.
332 333 334 |
# File 'lib/rdf/mixin/enumerable.rb', line 332 def has_predicate?(value) enum_predicate.include?(value) end |
- (Boolean) has_quad?(quad)
Returns true if self contains the given RDF quad.
198 199 200 |
# File 'lib/rdf/mixin/enumerable.rb', line 198 def has_quad?(quad) enum_quad.include?(quad) end |
- (Boolean) has_statement?(statement) Also known as: include?
Returns true if self contains the given RDF statement.
80 81 82 |
# File 'lib/rdf/mixin/enumerable.rb', line 80 def has_statement?(statement) !enum_statement.find { |s| s.eql?(statement) }.nil? end |
- (Boolean) has_subject?(value)
Returns true if self contains the given RDF subject term.
264 265 266 |
# File 'lib/rdf/mixin/enumerable.rb', line 264 def has_subject?(value) enum_subject.include?(value) end |
- (Boolean) has_triple?(triple)
Returns true if self contains the given RDF triple.
138 139 140 |
# File 'lib/rdf/mixin/enumerable.rb', line 138 def has_triple?(triple) enum_triple.include?(triple) end |
- (Enumerator<RDF::Term>) objects(options = {})
Returns all unique RDF object terms.
387 388 389 390 391 392 393 |
# File 'lib/rdf/mixin/enumerable.rb', line 387 def objects( = {}) if [:unique] == false enum_statement.map(&:object).to_enum # TODO: optimize else enum_object end end |
- (Enumerator<RDF::URI>) predicates(options = {})
Returns all unique RDF predicate terms.
319 320 321 322 323 324 325 |
# File 'lib/rdf/mixin/enumerable.rb', line 319 def predicates( = {}) if [:unique] == false enum_statement.map(&:predicate).to_enum # TODO: optimize else enum_predicate end end |
- (Enumerator<Array(RDF::Resource, RDF::URI, RDF::Term, RDF::Resource)>) quads(options = {})
Returns all RDF quads.
189 190 191 |
# File 'lib/rdf/mixin/enumerable.rb', line 189 def quads( = {}) enum_statement.map(&:to_quad).to_enum # TODO: optimize end |
- (Enumerator<RDF::Statement>) statements(options = {})
Returns all RDF statements.
71 72 73 |
# File 'lib/rdf/mixin/enumerable.rb', line 71 def statements( = {}) enum_statement end |
- (Enumerator<RDF::Resource>) subjects(options = {})
Returns all unique RDF subject terms.
251 252 253 254 255 256 257 |
# File 'lib/rdf/mixin/enumerable.rb', line 251 def subjects( = {}) if [:unique] == false enum_statement.map(&:subject).to_enum # TODO: optimize else enum_subject end end |
- (Array) to_a
Returns all RDF statements in self as an array.
Mixes in RDF::Enumerable into the returned object.
563 564 565 |
# File 'lib/rdf/mixin/enumerable.rb', line 563 def to_a super.extend(RDF::Enumerable) end |
- (Hash) to_hash
Returns all RDF object terms indexed by their subject and predicate terms.
The return value is a Hash instance that has the structure:
{subject => {predicate => [*objects]}}.
587 588 589 590 591 592 593 594 595 596 597 |
# File 'lib/rdf/mixin/enumerable.rb', line 587 def to_hash result = {} each_statement do |statement| next if statement.invalid? # skip any incomplete statements result[statement.subject] ||= {} values = (result[statement.subject][statement.predicate] ||= []) values << statement.object unless values.include?(statement.object) end result end |
- (Set) to_set
Returns all RDF statements in self as a set.
Mixes in RDF::Enumerable into the returned object.
574 575 576 577 |
# File 'lib/rdf/mixin/enumerable.rb', line 574 def to_set require 'set' unless defined?(::Set) super.extend(RDF::Enumerable) end |
- (Enumerator<Array(RDF::Resource, RDF::URI, RDF::Term)>) triples(options = {})
Returns all RDF triples.
129 130 131 |
# File 'lib/rdf/mixin/enumerable.rb', line 129 def triples( = {}) enum_statement.map(&:to_triple).to_enum # TODO: optimize end |