Sha256: 88abeafa4251bd8a2203ca1d79b7343bd314469147f9ffaa00e750a877a79faf
Contents?: true
Size: 1.34 KB
Versions: 8
Compression:
Stored size: 1.34 KB
Contents
module RDF ## # An RDF query mixin. # # Classes that include this module must implement an `#each` method that # yields {RDF::Statement RDF statements}. # # @see RDF::Graph # @see RDF::Repository module Queryable include ::Enumerable ## # Queries `self` for RDF statements matching the given pattern. # # @example # queryable.query([nil, RDF::DOAP.developer, nil]) # queryable.query(:predicate => RDF::DOAP.developer) # # @param [Query, Statement, Array(Value), Hash] pattern # @yield [statement] # @yieldparam [Statement] # @return [Array<Statement>] def query(pattern, &block) raise TypeError.new("#{self} is not readable") if respond_to?(:readable) && !readable? case pattern when Query pattern.execute(self, &block) when Array query(Statement.new(*pattern), &block) when Hash query(Statement.new(pattern), &block) when Statement if block_given? find_all { |statement| pattern === statement }.each(&block) else find_all { |statement| pattern === statement }.extend(RDF::Enumerable, RDF::Queryable) end else raise ArgumentError.new("expected RDF::Query, RDF::Pattern, Array or Hash, but got #{pattern.inspect}") end end end end
Version data entries
8 entries across 8 versions & 1 rubygems