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) ⇒ Object
(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
trueif this variable is bound. -
#distinguished=(value) ⇒ Boolean
Sets if variable is distinguished or non-distinguished.
-
#distinguished? ⇒ Boolean
Returns
trueif this variable is distinguished. -
#eql?(other) ⇒ Boolean
(also: #==)
Returns
trueif this variable is equivalent to a givenothervariable. -
#existential=(value) ⇒ Boolean
Sets if variable is existential or univeresal.
-
#existential? ⇒ Boolean
Returns
trueif this variable is existential. -
#hash ⇒ Integer
Returns a hash code for this variable.
-
#initialize(name = nil, value = nil, distinguished: nil, existential: nil) ⇒ Variable
constructor
A new instance of Variable.
-
#named? ⇒ Boolean
Returns
trueif 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
trueif this variable is unbound. -
#variable? ⇒ Boolean
Returns
true. -
#variables ⇒ Hash{Symbol => RDF::Query::Variable}
(also: #to_h)
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?, #start_with?, #statement?, #term?, #to_nquads, #to_ntriples, #to_rdf, #to_term, #type_error, #uri?, #valid?, #validate!
Constructor Details
#initialize(name = nil, value = nil, distinguished: nil, existential: nil) ⇒ Variable
Returns a new instance of Variable.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/rdf/query/variable.rb', line 70 def initialize(name = nil, value = nil, distinguished: nil, existential: nil) name = (name || "g#{__id__.to_i.abs}").to_s if name.start_with?('??') name, dis, ex = name[2..-1], false, false elsif name.start_with?('?') name, dis, ex = name[1..-1], true, false elsif name.start_with?('$$') name, dis, ex = name[2..-1], false, true elsif name.start_with?('$') name, dis, ex = name[1..-1], true, true else dis, ex = true, false end @name = name.to_sym @value = value @distinguished = distinguished.nil? ? dis : distinguished @existential = existential.nil? ? ex : existential 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.
241 242 243 244 245 246 247 |
# File 'lib/rdf/query/variable.rb', line 241 def ===(other) if unbound? other.is_a?(RDF::Term) # match any Term when unbound else value === other end end |
#bind(value) ⇒ self #bind(value) ⇒ RDF::Term Also known as: bind!
Rebinds this variable to the given value.
167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/rdf/query/variable.rb', line 167 def bind(value) if value.is_a?(RDF::Query::Solution) self.value = value.to_h.fetch(name, self.value) self else warn "[DEPRECATION] RDF::Query::Variable#bind should be used with a solution, not a term.\n" + "Called from #{Gem.location_of_caller.join(':')}" old_value = self.value self.value = value old_value end end |
#bindings ⇒ Hash{Symbol => RDF::Term}
Returns this variable’s bindings (if any) as a Hash.
205 206 207 |
# File 'lib/rdf/query/variable.rb', line 205 def bindings unbound? ? {} : {name => value} end |
#bound? ⇒ Boolean
Returns true if this variable is bound.
111 112 113 |
# File 'lib/rdf/query/variable.rb', line 111 def bound? !unbound? end |
#distinguished=(value) ⇒ Boolean
Sets if variable is distinguished or non-distinguished. By default, variables are distinguished
136 137 138 |
# File 'lib/rdf/query/variable.rb', line 136 def distinguished=(value) @distinguished = value end |
#distinguished? ⇒ Boolean
Returns true if this variable is distinguished.
127 128 129 |
# File 'lib/rdf/query/variable.rb', line 127 def distinguished? @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
225 226 227 228 229 230 231 232 233 |
# File 'lib/rdf/query/variable.rb', line 225 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 |
#existential=(value) ⇒ Boolean
Sets if variable is existential or univeresal. By default, variables are universal
153 154 155 |
# File 'lib/rdf/query/variable.rb', line 153 def existential=(value) @existential = value end |
#existential? ⇒ Boolean
Returns true if this variable is existential.
144 145 146 |
# File 'lib/rdf/query/variable.rb', line 144 def existential? @existential end |
#hash ⇒ Integer
Returns a hash code for this variable.
214 215 216 |
# File 'lib/rdf/query/variable.rb', line 214 def hash @name.hash end |
#named? ⇒ Boolean
Returns true if this variable has a name.
103 104 105 |
# File 'lib/rdf/query/variable.rb', line 103 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 ‘??`
Existential variables are indicated using a single ‘$`, or with `$$` if also non-distinguished
264 265 266 267 |
# File 'lib/rdf/query/variable.rb', line 264 def to_s prefix = distinguished? ? (existential? ? '$' : '?') : (existential? ? '$$' : '??') unbound? ? "#{prefix}#{name}" : "#{prefix}#{name}=#{value}" end |
#unbind ⇒ RDF::Term Also known as: unbind!
Unbinds this variable, discarding any currently bound value.
185 186 187 188 189 |
# File 'lib/rdf/query/variable.rb', line 185 def unbind old_value = self.value self.value = nil old_value end |
#unbound? ⇒ Boolean
Returns true if this variable is unbound.
119 120 121 |
# File 'lib/rdf/query/variable.rb', line 119 def unbound? value.nil? end |
#variable? ⇒ Boolean
Returns true.
95 96 97 |
# File 'lib/rdf/query/variable.rb', line 95 def variable? true end |
#variables ⇒ Hash{Symbol => RDF::Query::Variable} Also known as: to_h
Returns this variable as Hash.
196 197 198 |
# File 'lib/rdf/query/variable.rb', line 196 def variables {name => self} end |