Package org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents

## Interface ConstraintComponent

- All Superinterfaces:
    `org.eclipse.rdf4j.sail.shacl.ast.Exportable`, `org.eclipse.rdf4j.sail.shacl.ast.TargetChainInterface`
  All Known Implementing Classes:
    `AbstractConstraintComponent`, `AndConstraintComponent`, `ClassConstraintComponent`, `ClosedConstraintComponent`, `DashHasValueInConstraintComponent`, `DatatypeConstraintComponent`, `DisjointConstraintComponent`, `EqualsConstraintComponent`, `HasValueConstraintComponent`, `InConstraintComponent`, `LanguageInConstraintComponent`, `LessThanConstraintComponent`, `LessThanOrEqualsConstraintComponent`, `LogicalOperatorConstraintComponent`, `MaxCountConstraintComponent`, `MaxExclusiveConstraintComponent`, `MaxInclusiveConstraintComponent`, `MaxLengthConstraintComponent`, `MinCountConstraintComponent`, `MinExclusiveConstraintComponent`, `MinInclusiveConstraintComponent`, `MinLengthConstraintComponent`, `NodeKindConstraintComponent`, `NotConstraintComponent`, `OrConstraintComponent`, `PatternConstraintComponent`, `QualifiedMaxCountConstraintComponent`, `QualifiedMinCountConstraintComponent`, `SimpleAbstractConstraintComponent`, `UniqueLangConstraintComponent`, `XoneConstraintComponent`

      public interface ConstraintComponent
      extends org.eclipse.rdf4j.sail.shacl.ast.Exportable, org.eclipse.rdf4j.sail.shacl.ast.TargetChainInterface

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `ConstraintComponent.Scope` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment` | `buildSparqlValidNodes_rsx_targetShape​(org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable subject, org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, ConstraintComponent.Scope scope, org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)` |
    `ConstraintComponent` | `deepClone()` |
    `org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery` | `generateSparqlValidationQuery​(ConnectionsGroup connectionsGroup, ValidationSettings validationSettings, boolean negatePlan, boolean negateChildren, ConstraintComponent.Scope scope)` |
    `PlanNode` | `generateTransactionalValidationPlan​(ConnectionsGroup connectionsGroup, ValidationSettings validationSettings, PlanNodeProvider overrideTargetNode, ConstraintComponent.Scope scope)` |
    `PlanNode` | `getAllTargetsPlan​(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope, org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)` |
    `SourceConstraintComponent` | `getConstraintComponent()` |
    `org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach` | `getOptimalBulkValidationApproach()` | Should return the fastest validation approach for bulk validation.
    `org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach` | `getPreferredValidationApproach​(ConnectionsGroup connectionsGroup)` | A constraint component should decide which validation approach is going to be the optimal performance wise based on the state of the transaction and base sail.
    `boolean` | `requiresEvaluation​(ConnectionsGroup connectionsGroup, ConstraintComponent.Scope scope, Resource[] dataGraph, org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)` |

    - ### Methods inherited from interface org.eclipse.rdf4j.sail.shacl.ast.Exportable

      `toModel`

    - ### Methods inherited from interface org.eclipse.rdf4j.sail.shacl.ast.TargetChainInterface

      `getTargetChain, setTargetChain`

- - ### Method Detail

    - #### generateSparqlValidationQuery

          org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery generateSparqlValidationQuery​(ConnectionsGroup connectionsGroup,
                                                                                         ValidationSettings validationSettings,
                                                                                         boolean negatePlan,
                                                                                         boolean negateChildren,
                                                                                         ConstraintComponent.Scope scope)

    - #### generateTransactionalValidationPlan

          PlanNode generateTransactionalValidationPlan​(ConnectionsGroup connectionsGroup,
                                                       ValidationSettings validationSettings,
                                                       PlanNodeProvider overrideTargetNode,
                                                       ConstraintComponent.Scope scope)

    - #### getPreferredValidationApproach

          org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach getPreferredValidationApproach​(ConnectionsGroup connectionsGroup)

      A constraint component should decide which validation approach is going to be the optimal performance wise based on the state of the transaction and base sail.

    - #### getOptimalBulkValidationApproach

          org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach getOptimalBulkValidationApproach()

      Should return the fastest validation approach for bulk validation. When aggregating multiple constraint components the most compatible should be chosen.

    - #### requiresEvaluation

          boolean requiresEvaluation​(ConnectionsGroup connectionsGroup,
                                     ConstraintComponent.Scope scope,
                                     Resource[] dataGraph,
                                     org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)

      Parameters:
        `connectionsGroup` -
        `scope` -
        `dataGraph` -
        `stableRandomVariableProvider` -
      Returns:
        true if the constraint component should be evaluated, eg. if validation is needed.

    - #### getConstraintComponent

          SourceConstraintComponent getConstraintComponent()

    - #### getAllTargetsPlan

          PlanNode getAllTargetsPlan​(ConnectionsGroup connectionsGroup,
                                     Resource[] dataGraph,
                                     ConstraintComponent.Scope scope,
                                     org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)

    - #### buildSparqlValidNodes_rsx_targetShape

          org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment buildSparqlValidNodes_rsx_targetShape​(org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable subject,
                                                                                                org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable object,
                                                                                                RdfsSubClassOfReasoner rdfsSubClassOfReasoner,
                                                                                                ConstraintComponent.Scope scope,
                                                                                                org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider)

    - #### deepClone

          ConstraintComponent deepClone()