class SPARQL::Algebra::Operator::Project

The SPARQL GraphPattern `project` operator.

@example

(select (?v)
  (project (?v)
    (filter (= ?v 2)
      (bgp (triple ?s <http://example/p> ?v)))))

@see www.w3.org/TR/sparql11-query/#modProjection

Constants

NAME

Public Instance Methods

execute(queryable, **options, &block) click to toggle source

Executes this query on the given `queryable` graph or repository. Reduces the result set to the variables listed in the first operand

@param [RDF::Queryable] queryable

the graph or repository to query

@param [Hash{Symbol => Object}] options

any additional keyword options

@yield [solution]

each matching solution

@yieldparam [RDF::Query::Solution] solution @yieldreturn [void] ignored @return [RDF::Query::Solutions]

the resulting solution sequence

@see www.w3.org/TR/sparql11-query/#sparqlAlgebra

# File lib/sparql/algebra/operator/project.rb, line 33
def execute(queryable, **options, &block)
  @solutions = queryable.query(operands.last, depth: options[:depth].to_i + 1, **options)
  @solutions = @solutions.project(*(operands.first))
  @solutions.each(&block) if block_given?
  @solutions
end