Sha256: e285da0729d08a176f317b2f1aaee4ae9defd014f202d0726f1c3a960659681e
Contents?: true
Size: 1.12 KB
Versions: 3
Compression:
Stored size: 1.12 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. # # @param [Query, Statement, Array(Value)] pattern # @yield [statement] # @yieldparam [Statement] # @return [Array<Statement>, nil] 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 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 or RDF::Pattern, got #{pattern.inspect}") end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rdf-0.1.1 | lib/rdf/mixin/queryable.rb |
rdf-0.1.0 | lib/rdf/mixin/queryable.rb |
rdf-0.0.9 | lib/rdf/mixin/queryable.rb |