Class: LD::Patch::Algebra::Reverse
- Inherits:
-
SPARQL::Algebra::Operator::Unary
- Object
- SPARQL::Algebra::Operator::Unary
- LD::Patch::Algebra::Reverse
- Includes:
- SPARQL::Algebra::Evaluatable, SPARQL::Algebra::Query
- Defined in:
- lib/ld/patch/algebra/reverse.rb
Overview
The LD Patch ‘reverse` operator
Finds all the terms which are the subject of triples where the ‘operand` is the predicate and input terms are objects.
Queries `queryable` for subjects where input terms are objects and the predicate is `:p`, by executing the `reverse` operand using input terms to get a set of output terms.
Constant Summary collapse
- NAME =
:reverse
Instance Method Summary collapse
-
#execute(queryable, options = {}) ⇒ RDF::Query::Solutions
Executes this upate on the given ‘writable` graph or repository.
Instance Method Details
#execute(queryable, options = {}) ⇒ RDF::Query::Solutions
Executes this upate on the given ‘writable` graph or repository.
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ld/patch/algebra/reverse.rb', line 27 def execute(queryable, = {}) debug() {"Reverse"} op = operand(0) terms = Array(.fetch(:terms)) results = terms.map do |object| queryable.query({object: object, predicate: op}).map(&:subject) end.flatten RDF::Query::Solutions.new(results.map {|t| RDF::Query::Solution.new(path: t)}) end |