Class: RDF::N3::Algebra::List::Append
- Inherits:
-
RDF::N3::Algebra::ListOperator
- Object
- SPARQL::Algebra::Operator::Binary
- RDF::N3::Algebra::ListOperator
- RDF::N3::Algebra::List::Append
- Defined in:
- lib/rdf/n3/algebra/list/append.rb
Overview
Iff the subject is a list of lists and the concatenation of all those lists is the object, then this is true. The object can be calculated as a function of the subject.
The object can be calculated as a function of the subject.
Constant Summary collapse
Instance Attribute Summary
Attributes included from Enumerable
Instance Method Summary collapse
-
#resolve(list) ⇒ RDF::Term
Resolves this operator using the given variable
bindings
. -
#validate(list) ⇒ Boolean
The list argument must be a pair of literals.
Methods inherited from RDF::N3::Algebra::ListOperator
#as_literal, #execute, #input_operand
Methods included from Builtin
#each, #evaluate, #hash, #input_operand, #rank, #to_uri
Instance Method Details
#resolve(list) ⇒ RDF::Term
Resolves this operator using the given variable bindings
. If the last operand is a variable, it creates a solution for each element in the list.
20 21 22 23 24 25 |
# File 'lib/rdf/n3/algebra/list/append.rb', line 20 def resolve(list) flattened = list.to_a.map(&:to_a).flatten # Bind a new list based on the values, whos subject use made up from original list subjects subj = RDF::Node.intern(list.map(&:subject).hash) RDF::N3::List.new(subject: subj, values: flattened) end |
#validate(list) ⇒ Boolean
The list argument must be a pair of literals.
33 34 35 36 37 38 39 40 |
# File 'lib/rdf/n3/algebra/list/append.rb', line 33 def validate(list) if super && list.to_a.all? {|li| li.list?} true else log_error(NAME) {"operand is not a list of lists: #{list.to_sxp}"} false end end |