class RDF::N3::Algebra::Math::Difference

The subject is a pair of numbers. The object is calculated by subtracting the second number of the pair from the first.

@example

{ ("8" "3") math:difference ?x} => { ?x :valueOf "8 - 3" } .
{ ("8") math:difference ?x } => { ?x :valueOf "8 - (error?)" } .
{ (8 3) math:difference ?x} => { ?x :valueOf "8 - 3" } .

@see www.w3.org/TR/xpath-functions/#func-numeric-subtract

Constants

NAME
URI

Public Instance Methods

resolve(list) click to toggle source

The math:difference operator takes a pair of strings or numbers and calculates their difference.

@param [RDF::N3::List] list @return [RDF::Term] @see RDF::N3::ListOperator#evaluate

# File lib/rdf/n3/algebra/math/difference.rb, line 21
def resolve(list)
  list.to_a.map(&:as_number).reduce(&:-)
end
validate(list) click to toggle source

The list argument must be a pair of literals.

@param [RDF::N3::List] list @return [Boolean] @see RDF::N3::ListOperator#validate

Calls superclass method RDF::N3::Algebra::ListOperator#validate
# File lib/rdf/n3/algebra/math/difference.rb, line 31
def validate(list)
  if super && list.all?(&:literal?) && list.length == 2
    true
  else
    log_error(NAME) {"list is not a pair of literals: #{list.to_sxp}"}
    false
  end
end