Class: RDF::Query::Variable
- Inherits:
-
Object
- Object
- RDF::Query::Variable
- Includes:
- Term
- Defined in:
- lib/rdf/query/variable.rb
Overview
An RDF query variable.
Instance Attribute Summary collapse
-
#name ⇒ Symbol
(also: #to_sym)
The variable’s name.
-
#value ⇒ RDF::Term
The variable’s value.
Instance Method Summary collapse
-
#===(other) ⇒ Boolean
Compares this variable with the given value.
-
#bind(value) ⇒ RDF::Term
(also: #bind!)
Rebinds this variable to the given ‘value`.
-
#bindings ⇒ Hash{Symbol => RDF::Term}
Returns this variable’s bindings (if any) as a ‘Hash`.
-
#bound? ⇒ Boolean
Returns ‘true` if this variable is bound.
-
#distinguished=(value) ⇒ Boolean
Sets if variable is distinguished or non-distinguished.
-
#distinguished? ⇒ Boolean
Returns ‘true` if this variable is distinguished.
-
#eql?(other) ⇒ Boolean
(also: #==)
Returns ‘true` if this variable is equivalent to a given `other` variable.
-
#hash ⇒ Fixnum
Returns a hash code for this variable.
-
#initialize(name = nil, value = nil) ⇒ Variable
constructor
A new instance of Variable.
-
#named? ⇒ Boolean
Returns ‘true` if this variable has a name.
-
#to_s ⇒ String
Returns a string representation of this variable.
-
#unbind ⇒ RDF::Term
(also: #unbind!)
Unbinds this variable, discarding any currently bound value.
-
#unbound? ⇒ Boolean
Returns ‘true` if this variable is unbound.
-
#variable? ⇒ Boolean
Returns ‘true`.
-
#variables ⇒ Hash{Symbol => RDF::Query::Variable}
(also: #to_hash)
Returns this variable as ‘Hash`.
Methods included from Term
#<=>, #compatible?, #term?, #to_base, #to_term
Methods included from Value
#anonymous?, #canonicalize, #canonicalize!, #constant?, #graph?, #inspect, #inspect!, #invalid?, #iri?, #list?, #literal?, #node?, #resource?, #statement?, #term?, #to_nquads, #to_ntriples, #to_rdf, #to_term, #type_error, #uri?, #valid?, #validate!
Constructor Details
#initialize(name = nil, value = nil) ⇒ Variable
Returns a new instance of Variable.
68 69 70 71 |
# File 'lib/rdf/query/variable.rb', line 68 def initialize(name = nil, value = nil) @name = (name || "g#{__id__.to_i.abs}").to_sym @value = value end |
Instance Attribute Details
#name ⇒ Symbol Also known as: to_sym
The variable’s name.
54 55 56 |
# File 'lib/rdf/query/variable.rb', line 54 def name @name end |
#value ⇒ RDF::Term
The variable’s value.
61 62 63 |
# File 'lib/rdf/query/variable.rb', line 61 def value @value end |
Instance Method Details
#===(other) ⇒ Boolean
Compares this variable with the given value.
196 197 198 199 200 201 202 |
# File 'lib/rdf/query/variable.rb', line 196 def ===(other) if unbound? other.is_a?(RDF::Term) # match any Term when unbound else value === other end end |
#bind(value) ⇒ RDF::Term Also known as: bind!
Rebinds this variable to the given ‘value`.
129 130 131 132 133 |
# File 'lib/rdf/query/variable.rb', line 129 def bind(value) old_value = self.value self.value = value old_value end |
#bindings ⇒ Hash{Symbol => RDF::Term}
Returns this variable’s bindings (if any) as a ‘Hash`.
160 161 162 |
# File 'lib/rdf/query/variable.rb', line 160 def bindings unbound? ? {} : {name => value} end |
#bound? ⇒ Boolean
Returns ‘true` if this variable is bound.
95 96 97 |
# File 'lib/rdf/query/variable.rb', line 95 def bound? !unbound? end |
#distinguished=(value) ⇒ Boolean
Sets if variable is distinguished or non-distinguished. By default, variables are distinguished
120 121 122 |
# File 'lib/rdf/query/variable.rb', line 120 def distinguished=(value) @distinguished = value end |
#distinguished? ⇒ Boolean
Returns ‘true` if this variable is distinguished.
111 112 113 |
# File 'lib/rdf/query/variable.rb', line 111 def distinguished? @distinguished.nil? || @distinguished end |
#eql?(other) ⇒ Boolean Also known as: ==
Returns ‘true` if this variable is equivalent to a given `other` variable. Or, to another Term if bound, or to any other Term
180 181 182 183 184 185 186 187 188 |
# File 'lib/rdf/query/variable.rb', line 180 def eql?(other) if unbound? other.is_a?(RDF::Term) # match any Term when unbound elsif other.is_a?(RDF::Query::Variable) @name.eql?(other.name) else value.eql?(other) end end |
#hash ⇒ Fixnum
Returns a hash code for this variable.
169 170 171 |
# File 'lib/rdf/query/variable.rb', line 169 def hash @name.hash end |
#named? ⇒ Boolean
Returns ‘true` if this variable has a name.
87 88 89 |
# File 'lib/rdf/query/variable.rb', line 87 def named? true end |
#to_s ⇒ String
Returns a string representation of this variable.
Distinguished variables are indicated with a single ‘?`.
Non-distinguished variables are indicated with a double ‘??`
218 219 220 221 |
# File 'lib/rdf/query/variable.rb', line 218 def to_s prefix = distinguished? ? '?' : "??" unbound? ? "#{prefix}#{name}" : "#{prefix}#{name}=#{value}" end |
#unbind ⇒ RDF::Term Also known as: unbind!
Unbinds this variable, discarding any currently bound value.
140 141 142 143 144 |
# File 'lib/rdf/query/variable.rb', line 140 def unbind old_value = self.value self.value = nil old_value end |
#unbound? ⇒ Boolean
Returns ‘true` if this variable is unbound.
103 104 105 |
# File 'lib/rdf/query/variable.rb', line 103 def unbound? value.nil? end |
#variable? ⇒ Boolean
Returns ‘true`.
79 80 81 |
# File 'lib/rdf/query/variable.rb', line 79 def variable? true end |
#variables ⇒ Hash{Symbol => RDF::Query::Variable} Also known as: to_hash
Returns this variable as ‘Hash`.
151 152 153 |
# File 'lib/rdf/query/variable.rb', line 151 def variables {name => self} end |