Class: SPARQL::Algebra::Operator::Using

Inherits:
SPARQL::Algebra::Operator show all
Includes:
Query
Defined in:
lib/sparql/algebra/operator/using.rb

Overview

The SPARQL UPDATE using operator.

The USING and USING NAMED clauses affect the RDF Dataset used while evaluating the WHERE clause. This describes a dataset in the same way as FROM and FROM NAMED clauses describe RDF Datasets in the SPARQL 1.1 Query Language

[44] UsingClause ::= ‘USING’ ( iri | ‘NAMED’ iri )

Examples:

SPARQL Grammar

PREFIX     : <http://example.org/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 

DELETE { ?s ?p ?o }
USING <http://example.org/g2>
WHERE {
  :a foaf:knows ?s .
  ?s ?p ?o 
}

SSE

(prefix
 ((: <http://example.org/>) (foaf: <http://xmlns.com/foaf/0.1/>))
 (update
  (modify
   (using (:g2)
    (bgp (triple :a foaf:knows ?s) (triple ?s ?p ?o)))
   (delete ((triple ?s ?p ?o)))) ))

SPARQL Grammar (multiple clauses)

PREFIX     : <http://example.org/> 

INSERT { ?s ?p "q" }
USING :g1
USING :g2
WHERE { ?s ?p ?o }

SSE (multiple clauses)

(prefix ((: <http://example.org/>))
 (update
  (modify
   (using (:g1 :g2) (bgp (triple ?s ?p ?o)))
   (insert ((triple ?s ?p "q"))))))

See Also:

Constant Summary collapse

NAME =
:using

Constants inherited from SPARQL::Algebra::Operator

ARITY, IsURI, URI

Constants included from Expression

Expression::PATTERN_PARENTS

Instance Attribute Summary

Attributes included from Query

#solutions

Attributes inherited from SPARQL::Algebra::Operator

#operands

Instance Method Summary collapse

Methods included from Query

#each_solution, #empty?, #failed?, #graph_name=, #matched?, #query_yields_boolean?, #query_yields_solutions?, #query_yields_statements?, #unshift, #variables

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

Instance Method Details

#execute(queryable, **options, &block) ⇒ RDF::Queryable

Executes this upate on the given writable graph or repository.

Delegates to Dataset

Parameters:

  • queryable (RDF::Queryable)

    the graph or repository to write

  • options (Hash{Symbol => Object})

    any additional keyword options

Options Hash (**options):

  • debug (Boolean)

    Query execution debugging

Returns:

Raises:

  • (IOError)

    If from does not exist, unless the silent operator is present

See Also:



68
69
70
71
# File 'lib/sparql/algebra/operator/using.rb', line 68

def execute(queryable, **options, &block)
  debug(options) {"Using"}
  Dataset.new(*operands).execute(queryable, **options.merge(depth: options[:depth].to_i + 1), &block)
end

#to_sparql(**options) ⇒ String

Returns a partial SPARQL grammar for this operator.

Returns:

  • (String)


78
79
80
81
82
83
84
# File 'lib/sparql/algebra/operator/using.rb', line 78

def to_sparql(**options)
  str = "\n" + operands.first.map do |op|
    "USING #{op.to_sparql(**options)}\n"
  end.join("")
  content = operands.last.to_sparql(top_level: false, **options)
  str << Operator.to_sparql(content, project: nil, **options)
end