Class: RDF::N3::Algebra::Math::EqualTo

Inherits:
ResourceOperator
  • Object
show all
Defined in:
lib/rdf/n3/algebra/math/equal_to.rb

Overview

schema: ‘$a1 math:equalTo $a2`

summary: checks equality of numbers

definition: ‘true` if and only if `$a1` is equal to `$a2`. Requires both arguments to be either concrete numerals, or variables bound to a numeral.

**literal domains**:

  • ‘$a1`: `xs:decimal` (or its derived types), `xs:float`, or `xs:double` (see note on type promotion, and casting from string)

  • ‘$a2`: `xs:decimal` (or its derived types), `xs:float`, or `xs:double` (see note on type promotion, and casting from string)

Direct Known Subclasses

NotEqualTo

Constant Summary collapse

NAME =
:mathEqualTo
URI =
RDF::N3::Math.equalTo

Instance Attribute Summary

Attributes included from Enumerable

#existentials, #universals

Instance Method Summary collapse

Methods inherited from ResourceOperator

#as_literal, #execute, #valid?

Methods included from Builtin

#each, #evaluate, #hash, #rank, #to_uri

Instance Method Details

#apply(term1, term2) ⇒ RDF::Literal::Boolean

Returns TRUE if ‘term1` and `term2` are the same numeric value.

Parameters:

Returns:

  • (RDF::Literal::Boolean)

    ‘true` or `false`

Raises:

  • (TypeError)

    if either operand is not an RDF term or operands are not comperable

See Also:

  • Term#==


50
51
52
# File 'lib/rdf/n3/algebra/math/equal_to.rb', line 50

def apply(term1, term2)
  RDF::Literal(term1 == term2)
end

#input_operandObject

Both subject and object are inputs.



35
36
37
# File 'lib/rdf/n3/algebra/math/equal_to.rb', line 35

def input_operand
  RDF::N3::List.new(values: operands)
end

#resolve(resource, position:) ⇒ RDF::Term

Resolves inputs as numbers.

Parameters:

  • resource (RDF::Term)
  • position (:subject, :object)

Returns:

See Also:

  • ResourceOperator#evaluate


30
31
32
# File 'lib/rdf/n3/algebra/math/equal_to.rb', line 30

def resolve(resource, position:)
  resource.as_number if resource.term?
end