Class: SPARQL::Algebra::Operator::IRI
- Inherits:
-
Unary
- Object
- SPARQL::Algebra::Operator
- Unary
- SPARQL::Algebra::Operator::IRI
- Includes:
- Evaluatable
- Defined in:
- lib/sparql/algebra/operator/iri.rb
Overview
The SPARQL iri
operator.
[121] BuiltInCall ::= … | ‘IRI’ ‘(’ Expression ‘)’ | ‘URI’ ‘(’ Expression ‘)’
Constant Summary collapse
- NAME =
[:iri, :uri]
Constants inherited from Unary
Constants inherited from SPARQL::Algebra::Operator
Constants included from Expression
Instance Attribute Summary
Attributes inherited from SPARQL::Algebra::Operator
Instance Method Summary collapse
-
#apply(literal, **options) ⇒ RDF::URI
The IRI function constructs an IRI by resolving the string argument (see RFC 3986 and RFC 3987 or any later RFC that superceeds RFC 3986 or RFC 3987).
-
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this operator.
Methods included from Evaluatable
#evaluate, #memoize, #replace_aggregate!, #replace_vars!
Methods inherited from Unary
Methods inherited from SPARQL::Algebra::Operator
#aggregate?, arity, #base_uri, base_uri, base_uri=, #bind, #boolean, #constant?, #deep_dup, #each_descendant, #eql?, #evaluatable?, evaluate, #executable?, #first_ancestor, for, #initialize, #inspect, #ndvars, #node?, #operand, #optimize, #optimize!, #parent, #parent=, #prefixes, prefixes, prefixes=, #rewrite, #to_binary, to_sparql, #to_sxp, #to_sxp_bin, #validate!, #variable?, #variables, #vars
Methods included from Expression
cast, #constant?, #evaluate, extension, extension?, extensions, for, #invalid?, new, #node?, open, #optimize, #optimize!, parse, register_extension, #to_sxp_bin, #valid?, #validate!, #variable?
Constructor Details
This class inherits a constructor from SPARQL::Algebra::Operator::Unary
Instance Method Details
#apply(literal, **options) ⇒ RDF::URI
The IRI function constructs an IRI by resolving the string argument (see RFC 3986 and RFC 3987 or any later RFC that superceeds RFC 3986 or RFC 3987). The IRI is resolved against the base IRI of the query and must result in an absolute IRI.
The URI function is a synonym for IRI.
If the function is passed an IRI, it returns the IRI unchanged.
Passing any RDF term other than a simple literal, xsd:string or an IRI is an error.
An implementation may normalize the IRI.
40 41 42 43 44 |
# File 'lib/sparql/algebra/operator/iri.rb', line 40 def apply(literal, **) raise TypeError, "expected an simple literal, but got #{literal.inspect}" unless literal.literal? && literal.simple? base = Operator.base_uri || RDF::URI("") base.join(literal.to_s) end |
#to_sparql(**options) ⇒ String
Returns a partial SPARQL grammar for this operator.
51 52 53 |
# File 'lib/sparql/algebra/operator/iri.rb', line 51 def to_sparql(**) "IRI(" + operands.last.to_sparql(**) + ")" end |