Class: SPARQL::Algebra::Operator::IRI

Inherits:
Unary show all
Includes:
Evaluatable
Defined in:
lib/sparql/algebra/operator/iri.rb

Overview

The SPARQL iri operator.

[121] BuiltInCall ::= ... | 'IRI' '(' Expression ')' | 'URI' '(' Expression ')'

Examples:

SPARQL Grammar

BASE <http://example.org/>
SELECT (URI("uri") AS ?uri) (IRI("iri") AS ?iri)
WHERE {}

SSE

(base <http://example.org/>
 (project (?uri ?iri)
  (extend ((?uri (iri "uri")) (?iri (iri "iri")))
   (bgp))))

See Also:

Constant Summary collapse

NAME =
[:iri, :uri]

Constants inherited from Unary

Unary::ARITY

Constants inherited from SPARQL::Algebra::Operator

ARITY, IsURI, URI

Constants included from Expression

Expression::PATTERN_PARENTS

Instance Attribute Summary

Attributes inherited from SPARQL::Algebra::Operator

#operands

Instance Method Summary collapse

Methods included from Evaluatable

#evaluate, #memoize, #replace_aggregate!, #replace_vars!

Methods inherited from Unary

#initialize

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.

Parameters:

Returns:

  • (RDF::URI)

Raises:

  • (TypeError)

    if the operand is not a simple literal



40
41
42
43
44
# File 'lib/sparql/algebra/operator/iri.rb', line 40

def apply(literal, **options)
  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.

Returns:

  • (String)


51
52
53
# File 'lib/sparql/algebra/operator/iri.rb', line 51

def to_sparql(**options)
  "IRI(" + operands.last.to_sparql(**options) + ")"
end