Class: RDF::N3::Algebra::Str::Scrape

Inherits:
ListOperator show all
Includes:
Builtin
Defined in:
vendor/bundler/ruby/2.7.0/bundler/gems/rdf-n3-8f30bf85f229/lib/rdf/n3/algebra/str/scrape.rb

Overview

The subject is a list of two strings. The second string is a regular expression in the perl, python style. It must contain one group (a part in parentheses). If the first string in the list matches the regular expression, then the object is calculated as being the part of the first string which matches the group.

Examples:

("abcdef" "ab(..)ef") string:scrape "cd"

Constant Summary collapse

NAME =
:strScrape
URI =
RDF::N3::Str.scrape

Constants included from Util::Logger

Util::Logger::IOWrapper

Constants inherited from SPARQL::Algebra::Operator::Binary

SPARQL::Algebra::Operator::Binary::ARITY

Constants inherited from SPARQL::Algebra::Operator

SPARQL::Algebra::Operator::ARITY, SPARQL::Algebra::Operator::IsURI

Instance Attribute Summary

Attributes included from Enumerable

#existentials, #universals

Attributes included from SPARQL::Algebra::Query

#solutions

Attributes inherited from SPARQL::Algebra::Operator

#operands

Instance Method Summary collapse

Methods included from Builtin

#each, #evaluate, #hash, #input_operand, #rank, #to_uri

Methods included from Util::Logger

#log_debug, #log_depth, #log_error, #log_fatal, #log_info, #log_recover, #log_recovering?, #log_statistics, #log_warn, #logger

Methods included from Enumerable

add_entailment, #dump, #each_graph, #each_object, #each_predicate, #each_quad, #each_statement, #each_subject, #each_term, #each_triple, #entail, #enum_graph, #enum_object, #enum_predicate, #enum_quad, #enum_statement, #enum_subject, #enum_term, #enum_triple, #graph_names, #has_graph?, #has_object?, #has_predicate?, #has_quad?, #has_statement?, #has_subject?, #has_term?, #has_triple?, #invalid?, #method_missing, #objects, #predicates, #project_graph, #quads, #respond_to_missing?, #statements, #subjects, #supports?, #terms, #to_a, #to_h, #to_set, #triples, #valid?, #validate!

Methods included from Util::Aliasing::LateBound

#alias_method

Methods included from Countable

#count, #empty?

Methods included from Isomorphic

#bijection_to, #isomorphic_with?

Methods inherited from ListOperator

#execute, #input_operand

Methods included from SPARQL::Algebra::Update

#execute, #graph_name=, #unshift, #variables

Methods included from SPARQL::Algebra::Query

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

Methods inherited from SPARQL::Algebra::Operator::Binary

#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, #formulae, #initialize, #inspect, #ndvars, #node?, #operand, #optimize, #optimize!, #parent, #parent=, #prefixes, prefixes, prefixes=, #rewrite, #to_binary, #to_sxp, #to_sxp_bin, #validate!, #variable?, #vars

Methods included from SPARQL::Algebra::Expression

cast, #constant?, #evaluate, 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::Binary

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RDF::Enumerable

Instance Method Details

#resolve(list) ⇒ RDF::Term

Parameters:

Returns:

See Also:

  • ListOperator#evaluate


15
16
17
18
19
# File 'vendor/bundler/ruby/2.7.0/bundler/gems/rdf-n3-8f30bf85f229/lib/rdf/n3/algebra/str/scrape.rb', line 15

def resolve(list)
  input, regex = list.to_a
  md = Regexp.new(regex.to_s).match(input.to_s)
  RDF::Literal(md[1]) if md
end

#validate(list) ⇒ Boolean

Subclasses may override or supplement validate to perform validation on the list subject

Parameters:

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
# File 'vendor/bundler/ruby/2.7.0/bundler/gems/rdf-n3-8f30bf85f229/lib/rdf/n3/algebra/str/scrape.rb', line 26

def validate(list)
  if super && list.length == 2
    true
  else
    log_error(NAME) {"list must have exactly two entries: #{list.to_sxp}"}
    false
  end
end