Class: SHACL::Algebra::ConstraintComponent
- Inherits:
-
Operator
- Object
- SPARQL::Algebra::Operator
- Operator
- SHACL::Algebra::ConstraintComponent
- Defined in:
- vendor/bundler/ruby/3.3.0/bundler/gems/shacl-e638b9acc6d8/lib/shacl/algebra/constraint_component.rb
Overview
Constraint Components define basic constraint behaivor through mandatory and optional parameters. Constraints are accessed through their parameters.
Direct Known Subclasses
AndConstraintComponent, NotConstraintComponent, OrConstraintComponent, PatternConstraintComponent, SPARQLConstraintComponent, XoneConstraintComponent
Constant Summary
Constants inherited from Operator
Operator::BUILTIN_KEYS, Operator::PARAMETERS
Constants included from RDF::Util::Logger
Constants inherited from SPARQL::Algebra::Operator
SPARQL::Algebra::Operator::ARITY, SPARQL::Algebra::Operator::IsURI, SPARQL::Algebra::Operator::URI
Constants included from SPARQL::Algebra::Expression
SPARQL::Algebra::Expression::PATTERN_PARENTS
Instance Attribute Summary
Attributes inherited from Operator
#graph, #options, #shapes_graph
Attributes inherited from SPARQL::Algebra::Operator
Class Method Summary collapse
-
.from_json(operator, **options) ⇒ Operator
Creates an operator instance from a parsed SHACL representation.
-
.ncname(uri) ⇒ Symbol
Extract the NCName tail of an IRI as a symbol.
Methods inherited from Operator
add_component, apply_op, #comment, component_params, #conforms, #deactivated?, from_expanded_value, #id, #iri, iri, #label, #not_satisfied, params, parse_path, #satisfy, to_rdf, #to_sxp_bin, #type
Methods included from JSON::LD::Utils
#add_value, #as_array, #as_resource, #blank_node?, #compare_values, #graph?, #has_value?, #index?, #list?, #node?, #node_or_ref?, #node_reference?, #property?, #simple_graph?, #value?
Methods included from RDF::Util::Logger
#log_debug, #log_depth, #log_error, #log_fatal, #log_info, #log_recover, #log_recovering?, #log_statistics, #log_warn, #logger
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_sparql, to_sparql, #to_sxp, #to_sxp_bin, #validate!, #variable?, #variables, #vars
Methods included from SPARQL::Algebra::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
Class Method Details
.from_json(operator, **options) ⇒ Operator
Creates an operator instance from a parsed SHACL representation.
Special case for SPARQL ConstraintComponents.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/shacl-e638b9acc6d8/lib/shacl/algebra/constraint_component.rb', line 20 def from_json(operator, **) operands = [] # Component is known by its subject IRI id = operator.fetch('id') # Component class (for instantiation) is based on the _local name_ of the component IRI class_name = ncname(id) parameters = operator.fetch('parameter', []).inject({}) do |memo, param| # Symbolize keys param = param.inject({}) {|memo, (k,v)| memo.merge(k.to_sym => v)} plc = ncname(param[:path]) # Add class and local name param = param.merge(class: class_name, local_name: plc) memo.merge(param[:path] => param) end # Add parameters to operator lookup add_component(class_name, parameters) # Add parameter identifiers to operands operands << [:parameters, parameters.keys] # FIXME: labelTemplate validator = %w(validator nodeValidator propertyValidator).inject(nil) do |memo, p| memo || (SPARQLConstraintComponent.from_json(operator[p]) if operator.key?(p)) end raise SHACL::Error, "Constraint Component has no validator" unless validator operands << [:validator, validator] new(*operands, **) end |
.ncname(uri) ⇒ Symbol
Extract the NCName tail of an IRI as a symbol.
62 63 64 |
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/shacl-e638b9acc6d8/lib/shacl/algebra/constraint_component.rb', line 62 def ncname(uri) uri.to_s.match(/(\w+)$/).to_s.to_sym end |