diff --git a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/AFN.java b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/AFN.java index db5a8f23ebb..c79391b6719 100644 --- a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/AFN.java +++ b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/AFN.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.model.vocabulary; import org.eclipse.rdf4j.model.IRI; +import org.eclipse.rdf4j.model.Namespace; /** * http://jena.hpl.hp.com/ARQ/function#. @@ -27,6 +28,8 @@ private AFN() { public static final String PREFIX = "afn"; + public static final Namespace NS = Vocabularies.createNamespace(PREFIX, NAMESPACE); + /** * http://jena.hpl.hp.com/ARQ/function#localname The LocalName QueryModelNode as a SPARQL function. */ diff --git a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/APF.java b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/APF.java index bef3a96507d..af53de7dcd5 100644 --- a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/APF.java +++ b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/APF.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.model.vocabulary; import org.eclipse.rdf4j.model.IRI; +import org.eclipse.rdf4j.model.Namespace; /** * http://jena.hpl.hp.com/ARQ/property#. @@ -27,6 +28,8 @@ private APF() { public static final String PREFIX = "apf"; + public static final Namespace NS = Vocabularies.createNamespace(PREFIX, NAMESPACE); + public static final IRI STR_SPLIT; public static final IRI CONCAT; diff --git a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/EARL.java b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/EARL.java index 8b5d96c8a63..3565ae8f5d1 100644 --- a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/EARL.java +++ b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/EARL.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.model.vocabulary; import org.eclipse.rdf4j.model.IRI; +import org.eclipse.rdf4j.model.Namespace; /** * Constants for EARL primitives and for the EARL namespace. @@ -27,6 +28,8 @@ public class EARL { */ public static final String PREFIX = "earl"; + public static final Namespace NS = Vocabularies.createNamespace(PREFIX, NAMESPACE); + public final static IRI ASSERTOR; public final static IRI ASSERTION; diff --git a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/GEOF.java b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/GEOF.java index 954c51ea0b1..56ed00f3e83 100644 --- a/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/GEOF.java +++ b/core/model-vocabulary/src/main/java/org/eclipse/rdf4j/model/vocabulary/GEOF.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.model.vocabulary; import org.eclipse.rdf4j.model.IRI; +import org.eclipse.rdf4j.model.Namespace; /** * @see getSupportedShaclPredicates() { SHACL.TARGET_PROP, SHACL.INVERSE_PATH, SHACL.ALTERNATIVE_PATH, +// SHACL.ONE_OR_MORE_PATH, +// SHACL.ZERO_OR_MORE_PATH, SHACL.NODE, SHACL.QUALIFIED_MAX_COUNT, SHACL.QUALIFIED_MIN_COUNT, diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/NodeShape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/NodeShape.java index 0688db2316e..dcd9291cba6 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/NodeShape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/NodeShape.java @@ -202,11 +202,12 @@ public SourceConstraintComponent getConstraintComponent() { @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { PlanNode planNode = constraintComponents.stream() .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, Scope.nodeShape, - new StatementMatcher.StableRandomVariableProvider())) + new StatementMatcher.StableRandomVariableProvider(), validationSettings)) .distinct() .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/PropertyShape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/PropertyShape.java index 5735bf9276d..db324f3c020 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/PropertyShape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/PropertyShape.java @@ -255,10 +255,11 @@ constraintComponent, getSeverity(), t.getScope(), t.getContexts(), @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { PlanNode planNode = constraintComponents.stream() .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, Scope.propertyShape, - new StatementMatcher.StableRandomVariableProvider())) + new StatementMatcher.StableRandomVariableProvider(), validationSettings)) .distinct() .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java index e3812aca1a2..c0bc9d2179d 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java @@ -24,7 +24,6 @@ import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; @@ -337,8 +336,10 @@ public String getNamespacesForSparql() { return ShaclPrefixParser.toSparqlPrefixes(namespaces); } - public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, - Path path, StatementMatcher currentStatementMatcher, List currentStatements) { + public Stream getRoot(ConnectionsGroup connectionsGroup, + Resource[] dataGraph, + Path path, StatementMatcher currentStatementMatcher, + List currentStatements) { assert traceBackFunction != null; return traceBackFunction.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements); } @@ -411,12 +412,12 @@ public int hashCode() { public interface TraceBack { - Stream getRoot( + Stream getRoot( ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, StatementMatcher currentStatementMatcher, - List currentStatements); + List currentStatements); } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java index f3a6413a5cb..fedfe846162 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java @@ -103,7 +103,8 @@ public boolean requiresEvaluation(ConnectionsGroup connectionsGroup, Scope scope @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { throw new UnsupportedOperationException(); } @@ -171,6 +172,9 @@ static PlanNode getAllTargetsIncludingThoseAddedByPath(ConnectionsGroup connecti null); allTargets = UnionNode.getInstance(connectionsGroup, addedTargets.getPlanNode(), addedByPath); + + allTargets = Unique.getInstance(new TrimToTarget(allTargets, connectionsGroup), false, connectionsGroup); + return allTargets; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java index 8b7dcde0f50..daba61bd6c0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java @@ -161,7 +161,8 @@ private PlanNode getAllTargetsBasedOnPredicate(ConnectionsGroup connectionsGroup @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -252,7 +253,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] } - return Unique.getInstance(allTargetsPlan, false, connectionsGroup); + return Unique.getInstance(new TrimToTarget(allTargetsPlan, connectionsGroup), false, connectionsGroup); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java index c9f0c119ba7..9682bc42ee2 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java @@ -28,6 +28,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; @@ -135,7 +136,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getPreviousStateConnection(), b -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); top = UnionNode.getInstance(connectionsGroup, top, bulkedExternalInnerJoin); @@ -218,7 +219,7 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr Set.of()), false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); planNode = connectionsGroup.getCachedNodeFor(planNode); } } @@ -331,7 +332,8 @@ String literalToString(Literal literal) { @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AndConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AndConstraintComponent.java index aa6bb4f8860..bfc71a8e135 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AndConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AndConstraintComponent.java @@ -121,10 +121,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { PlanNode planNode = and.stream() .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, scope, - new StatementMatcher.StableRandomVariableProvider())) + new StatementMatcher.StableRandomVariableProvider(), validationSettings)) .distinct() .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java index 8dde6295aff..935c1cf3727 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedSplitter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; @@ -171,7 +172,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); if (connectionsGroup.getAddedStatements() != null) { // filter by type against the added statements @@ -236,7 +237,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java index 64bf3dcc2f0..a12cc650c84 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java @@ -39,6 +39,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; import org.eclipse.rdf4j.sail.shacl.ast.paths.SimplePath; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedSplitter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.ExternalFilterByQuery; @@ -192,7 +193,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); StatementMatcher.Variable subjectVariable = stableRandomVariableProvider.next(); StatementMatcher.Variable predicateVariable = stableRandomVariableProvider.next(); @@ -317,7 +318,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections } return validationTuple; }, - connectionsGroup); + connectionsGroup, + List.of(AbstractBulkJoinPlanNode.DEFAULT_VARS.get(0), AbstractBulkJoinPlanNode.DEFAULT_VARS.get(1), + predicateVariable) + ); return bulkedExternalInnerJoin; } @@ -326,7 +330,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { EffectiveTarget effectiveTarget = getTargetChain().getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider); @@ -529,11 +534,6 @@ private String getFilter(StatementMatcher.Variable target, return sparqlFragment.getFragment(); } - @Override - public ValidationApproach getPreferredValidationApproach(ConnectionsGroup connectionsGroup) { - return super.getPreferredValidationApproach(connectionsGroup); - } - @Override public ValidationApproach getOptimalBulkValidationApproach() { return ValidationApproach.SPARQL; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ConstraintComponent.java index 15a153cfc6c..e051b20057c 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ConstraintComponent.java @@ -63,7 +63,8 @@ boolean requiresEvaluation(ConnectionsGroup connectionsGroup, Scope scope, Resou SourceConstraintComponent getConstraintComponent(); PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider); + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings); SparqlFragment buildSparqlValidNodes_rsx_targetShape(Variable subject, Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, Scope scope, diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java index 450b0ce4ecd..2839d3bcd71 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java @@ -31,6 +31,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByFilter; @@ -113,7 +114,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group.stream().map(ValidationTuple::getValue).noneMatch(hasValueIn::contains); @@ -149,7 +150,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java index 7dbfea97a80..a4f3d66b11c 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java @@ -30,6 +30,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByFilter; @@ -98,16 +99,18 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections EffectiveTarget.Extend.left, false, null); addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); } + addedTargets = Unique.getInstance(new TrimToTarget(addedTargets, connectionsGroup), false, + connectionsGroup); + PlanNode joined = new BulkedExternalLeftOuterJoin(addedTargets, connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), path.getTargetQueryFragment(new Variable<>("a"), new Variable<>("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group @@ -144,7 +147,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java index b9564ba2e35..f38c04ac44a 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java @@ -32,6 +32,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; @@ -113,7 +114,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } else { relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( mergeNode, @@ -126,7 +127,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); @@ -140,7 +141,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java index 19ebb4c0787..7f4f4af9ae6 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; @@ -82,6 +83,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); + + // we don't need to compress here because we are anyway going to trim to target later on + addedByPath = Unique.getInstance(addedByPath, false, connectionsGroup); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } @@ -97,6 +102,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); + + // we don't need to compress here because we are anyway going to trim to target later on + addedByPath = Unique.getInstance(addedByPath, false, connectionsGroup); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } @@ -110,7 +119,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); @@ -123,7 +132,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { return EmptyNode.getInstance(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NotConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NotConstraintComponent.java index a4d4a208b2d..40f793308ac 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NotConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NotConstraintComponent.java @@ -101,7 +101,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections planNodeProvider = overrideTargetNode; } else { planNodeProvider = () -> getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } PlanNode planNode = not.generateTransactionalValidationPlan( @@ -166,7 +166,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { PlanNode allTargets; if (scope == Scope.propertyShape) { @@ -186,7 +187,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] } PlanNode notTargets = not.getAllTargetsPlan(connectionsGroup, dataGraph, scope, - new StatementMatcher.StableRandomVariableProvider()); + new StatementMatcher.StableRandomVariableProvider(), validationSettings); return Unique.getInstance(UnionNode.getInstanceDedupe(connectionsGroup, allTargets, notTargets), false, connectionsGroup); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/OrConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/OrConstraintComponent.java index db9c6744675..393e7cbd9a4 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/OrConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/OrConstraintComponent.java @@ -121,7 +121,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections } else { planNodeProvider = BufferedSplitter.getInstance( getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider), + stableRandomVariableProvider, validationSettings), false); } @@ -141,7 +141,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { PlanNode allTargets; if (scope == Scope.propertyShape) { @@ -162,7 +163,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] PlanNode planNode = or.stream() .map(or -> or.getAllTargetsPlan(connectionsGroup, dataGraph, scope, - new StatementMatcher.StableRandomVariableProvider())) + new StatementMatcher.StableRandomVariableProvider(), validationSettings)) .distinct() .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java index 6394c2f9114..63b660bf6f5 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java @@ -28,11 +28,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.Cache; import org.eclipse.rdf4j.sail.shacl.ast.NodeShape; import org.eclipse.rdf4j.sail.shacl.ast.PropertyShape; +import org.eclipse.rdf4j.sail.shacl.ast.ShaclParsingException; import org.eclipse.rdf4j.sail.shacl.ast.ShaclProperties; import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; import org.eclipse.rdf4j.sail.shacl.ast.Shape; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LeftOuterJoin; @@ -120,22 +123,27 @@ public ValidationQuery generateSparqlValidationQuery(ConnectionsGroup connection public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connectionsGroup, ValidationSettings validationSettings, PlanNodeProvider overrideTargetNode, Scope scope) { - assert scope == Scope.propertyShape; + + if (scope != Scope.propertyShape) { + throw new ShaclParsingException( + "QualifiedMaxCountConstraintComponent can only be used on property shapes!"); + } StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider = new StatementMatcher.StableRandomVariableProvider(); PlanNode target; + EffectiveTarget effectiveTarget = getTargetChain().getEffectiveTarget(scope, + connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider); + if (overrideTargetNode != null) { - target = getTargetChain() - .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), - stableRandomVariableProvider) + target = effectiveTarget .extend(overrideTargetNode.getPlanNode(), connectionsGroup, validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.right, false, null); } else { target = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } PlanNode planNode = negated(connectionsGroup, validationSettings, overrideTargetNode, scope); @@ -159,7 +167,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va if (overrideTargetNode == null) { target = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } else { target = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -182,7 +190,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); @@ -204,7 +212,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va if (overrideTargetNode == null) { allTargetsPlan = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } else { allTargetsPlan = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -226,7 +234,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); @@ -236,20 +244,29 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { assert scope == Scope.propertyShape; - PlanNode allTargets = getTargetChain() + EffectiveTarget effectiveTarget = getTargetChain() .getEffectiveTarget(Scope.propertyShape, connectionsGroup.getRdfsSubClassOfReasoner(), - stableRandomVariableProvider) - .getPlanNode(connectionsGroup, dataGraph, Scope.propertyShape, true, null); + stableRandomVariableProvider); - PlanNode subTargets = qualifiedValueShape.getAllTargetsPlan(connectionsGroup, dataGraph, scope, - new StatementMatcher.StableRandomVariableProvider()); + Path path = getTargetChain().getPath().orElseThrow(); - return Unique - .getInstance(new TrimToTarget(UnionNode.getInstanceDedupe(connectionsGroup, allTargets, subTargets), - connectionsGroup), false, connectionsGroup); + PlanNode allTargets = getAllTargetsIncludingThoseAddedByPath(connectionsGroup, validationSettings, scope, + effectiveTarget, path, false); + + PlanNode subTargets = qualifiedValueShape.getAllTargetsPlan(connectionsGroup, dataGraph, scope, + new StatementMatcher.StableRandomVariableProvider(), validationSettings); + + return Unique.getInstance( + new TrimToTarget( + UnionNode.getInstanceDedupe(connectionsGroup, allTargets, subTargets), + connectionsGroup + ), + false, connectionsGroup + ); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java index 69c499a0fbc..a3ad8f3a70e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java @@ -34,6 +34,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.Shape; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; @@ -138,7 +139,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null); } else { target = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } PlanNode planNode = negated(connectionsGroup, validationSettings, overrideTargetNode, scope); @@ -162,7 +163,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va if (overrideTargetNode == null) { target = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } else { PlanNode planNode = overrideTargetNode.getPlanNode(); if (planNode instanceof AllTargetsPlanNode) { @@ -189,7 +190,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); @@ -210,7 +211,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va PlanNode allTargetsPlan; if (overrideTargetNode == null) { allTargetsPlan = getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, - stableRandomVariableProvider); + stableRandomVariableProvider, validationSettings); } else { allTargetsPlan = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -240,7 +241,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); @@ -251,7 +252,8 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { assert scope == Scope.propertyShape; PlanNode allTargets = getTargetChain() @@ -260,7 +262,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .getPlanNode(connectionsGroup, dataGraph, Scope.propertyShape, true, null); PlanNode subTargets = qualifiedValueShape.getAllTargetsPlan(connectionsGroup, dataGraph, scope, - new StatementMatcher.StableRandomVariableProvider()); + new StatementMatcher.StableRandomVariableProvider(), validationSettings); return Unique .getInstance(new TrimToTarget(UnionNode.getInstanceDedupe(connectionsGroup, allTargets, subTargets), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/SparqlConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/SparqlConstraintComponent.java index 512ae5b338b..77af99c9376 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/SparqlConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/SparqlConstraintComponent.java @@ -224,7 +224,8 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { return getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getAllTargets(connectionsGroup, dataGraph, scope); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java index e84386170d8..99858731510 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java @@ -27,6 +27,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.InnerJoin; @@ -142,7 +143,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang, connectionsGroup), false, connectionsGroup); @@ -189,8 +190,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); @@ -200,7 +200,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { if (scope == Scope.propertyShape) { PlanNode allTargetsPlan = getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/VoidConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/VoidConstraintComponent.java index f2bdcc3d1e6..f658cf12b45 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/VoidConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/VoidConstraintComponent.java @@ -59,7 +59,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections @Override public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] dataGraph, Scope scope, - StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider) { + StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, + ValidationSettings validationSettings) { return EmptyNode.getInstance(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java index 2d40f5430f0..b57c043de9b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java @@ -19,7 +19,6 @@ import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.model.vocabulary.SHACL; import org.eclipse.rdf4j.sail.shacl.ast.ShaclAstLists; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; @@ -128,12 +127,12 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, return SparqlFragment.union(sparqlFragments, (ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, - StatementMatcher currentStatementMatcher, List currentStatements) -> { - + StatementMatcher currentStatementMatcher, + List currentStatements) -> { return sparqlFragments.stream() .flatMap(sparqlFragment -> sparqlFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements)) - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements); + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); } ); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java index eb2b3f72be4..4dab52a839b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java @@ -94,7 +94,7 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { return path.getTargetQueryFragment(object, subject, rdfsSubClassOfReasoner, - stableRandomVariableProvider, Set.of()); + stableRandomVariableProvider, inheritedVarNames); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java index 1427206756b..bab4e2c8e96 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java @@ -11,21 +11,35 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.ArrayList; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; +import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.vocabulary.SHACL; -import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; +import org.eclipse.rdf4j.query.BindingSet; +import org.eclipse.rdf4j.query.algebra.TupleExpr; +import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; +import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; +import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.SingletonBindingSet; +import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; +import org.eclipse.rdf4j.sail.shacl.ast.targets.TargetChainRetriever; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.data.RdfsSubClassOfReasoner; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import com.google.common.collect.Sets; + public class OneOrMorePath extends Path { private final Path path; @@ -42,7 +56,7 @@ public OneOrMorePath(Resource id, Path path) { @Override public String toString() { - return "ZeroOrOnePath{ " + path + " }"; + return "OneOrMorePath{ " + path + " }"; } @Override @@ -54,7 +68,25 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNodeWrapper planNodeWrapper) { - throw new ShaclUnsupportedException(); + var variables = List.of(new StatementMatcher.Variable<>("subject"), + new StatementMatcher.Variable<>("value")); + + SparqlFragment targetQueryFragment = getTargetQueryFragment(variables.get(0), variables.get(1), + connectionsGroup.getRdfsSubClassOfReasoner(), new StatementMatcher.StableRandomVariableProvider(), + Set.of()); + + PlanNode targetChainRetriever = new TargetChainRetriever(connectionsGroup, dataGraph, + targetQueryFragment.getStatementMatchers(), List.of(), null, targetQueryFragment, + variables, + ConstraintComponent.Scope.propertyShape, true); + + targetChainRetriever = connectionsGroup.getCachedNodeFor(targetChainRetriever); + + if (planNodeWrapper != null) { + targetChainRetriever = planNodeWrapper.apply(targetChainRetriever); + } + + return connectionsGroup.getCachedNodeFor(targetChainRetriever); } @Override @@ -81,7 +113,88 @@ public String toSparqlPathString() { public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { - throw new ShaclUnsupportedException(); + + if (inheritedVarNames.isEmpty()) { + inheritedVarNames = Set.of(subject.getName()); + } else { + inheritedVarNames = Sets.union(inheritedVarNames, Set.of(subject.getName())); + } + + String variablePrefix = getVariablePrefix(subject, object); + + String sparqlPathString = path.toSparqlPathString(); + + StatementMatcher.Variable pathStart = new StatementMatcher.Variable(subject, variablePrefix + "start"); + StatementMatcher.Variable pathEnd = new StatementMatcher.Variable(subject, variablePrefix + "end"); + + SparqlFragment targetQueryFragmentMiddle = path.getTargetQueryFragment(pathStart, pathEnd, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + SparqlFragment targetQueryFragmentExactlyOne = path.getTargetQueryFragment(subject, object, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + String twoOrMore = subject.asSparqlVariable() + " (" + sparqlPathString + ")+ " + pathStart.asSparqlVariable() + + " .\n" + + targetQueryFragmentMiddle.getFragment() + "\n" + + pathEnd.asSparqlVariable() + " (" + sparqlPathString + ")* " + object.asSparqlVariable() + " .\n"; + + SparqlFragment twoOrMoreBgp = SparqlFragment.bgp(List.of(), twoOrMore, + targetQueryFragmentMiddle.getStatementMatchers()); + + var temp = inheritedVarNames; + + return SparqlFragment.union(List.of(targetQueryFragmentExactlyOne, twoOrMoreBgp), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + + Stream statementsAndMatcherStream1 = targetQueryFragmentExactlyOne + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); + + Stream peek = targetQueryFragmentMiddle + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) + .map(a -> { + SailConnection baseConnection = connectionsGroup.getBaseConnection(); + + String subjectName = a.getStatementMatcher().getSubjectName(); + assert subjectName.equals(pathStart.getName()); + + String query = "select distinct " + subject.asSparqlVariable() + " where {\n" + + subject.asSparqlVariable() + " (" + sparqlPathString + ")+ " + + pathStart.asSparqlVariable() + "\n}"; + + TupleExpr tupleExpr = SparqlQueryParserCache.get(query); + + List statements = new ArrayList<>(); + + for (EffectiveTarget.SubjectObjectAndMatcher.SubjectObject statement : a + .getStatements()) { + try (CloseableIteration evaluate = baseConnection.evaluate( + tupleExpr, PlanNodeHelper.asDefaultGraphDataset(dataGraph), + new SingletonBindingSet(subjectName, statement.getSubject()), true)) { + while (evaluate.hasNext()) { + BindingSet next = evaluate.next(); + statements.add(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject( + ((Resource) next.getValue(subject.getName())), null)); + } + } + } + + StatementMatcher statementMatcher = new StatementMatcher(subject, null, null, path, + temp); + + EffectiveTarget.SubjectObjectAndMatcher effectiveTarget = new EffectiveTarget.SubjectObjectAndMatcher( + statements, statementMatcher); + + return effectiveTarget; + }); + + return Stream.concat(statementsAndMatcherStream1, peek); + + }); + } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java index 988e8bd7853..7ea5363f276 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -19,6 +20,8 @@ import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.Statement; +import org.eclipse.rdf4j.model.vocabulary.RDF; +import org.eclipse.rdf4j.sail.shacl.ShaclSailConnection; import org.eclipse.rdf4j.sail.shacl.ast.Exportable; import org.eclipse.rdf4j.sail.shacl.ast.Identifiable; import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; @@ -28,9 +31,13 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class Path implements Identifiable, Exportable, Targetable { + private static final Logger logger = LoggerFactory.getLogger(ShaclSailConnection.class); + Resource id; public Path(Resource id) { @@ -49,31 +56,66 @@ static public Path buildPath(ShapeSource shapeSource, Resource id) { if (id.isBNode()) { List collect = shapeSource.getAllStatements(id) + .filter(statement -> !statement.getPredicate().equals(RDF.TYPE)) .collect(Collectors.toList()); + Path ret = null; + for (Statement statement : collect) { IRI pathType = statement.getPredicate(); switch (pathType.toString()) { case "http://www.w3.org/ns/shacl#inversePath": - return new InversePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new InversePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#alternativePath": - return new AlternativePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new AlternativePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#zeroOrMorePath": - return new ZeroOrMorePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new ZeroOrMorePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#oneOrMorePath": - return new OneOrMorePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new OneOrMorePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#zeroOrOnePath": - return new ZeroOrOnePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new ZeroOrOnePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/1999/02/22-rdf-syntax-ns#first": - return new SequencePath(id, shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new SequencePath(id, shapeSource); + break; default: break; } } - throw new ShaclUnsupportedException(); + if (ret != null) { + return ret; + } else { + if (collect.size() == 1) { + throw new ShaclUnsupportedException("Unknown path type: " + collect.get(0)); + } else { + throw new ShaclUnsupportedException("Unknown path type: " + Arrays.toString(collect.toArray())); + } + } } else { return new SimplePath((IRI) id); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java index 0580f9a1e7b..ce6baae67fa 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java @@ -21,7 +21,6 @@ import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.sail.shacl.ast.ShaclAstLists; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; @@ -159,8 +158,9 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, return SparqlFragment.join(sparqlFragments, (ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, - StatementMatcher currentStatementMatcher, List currentStatements) -> { - Stream currentRoot = null; + StatementMatcher currentStatementMatcher, + List currentStatements) -> { + Stream currentRoot = null; for (int i = sparqlFragments.size() - 1; i >= 0; i--) { SparqlFragment sparqlFragment = sparqlFragments.get(i); @@ -169,7 +169,7 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, .flatMap(root -> sparqlFragment.getRoot(connectionsGroup, dataGraph, path, root.getStatementMatcher(), root.getStatements())) - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements); + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); } else { currentRoot = sparqlFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java index ce143ab05e0..271c6f50d95 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java @@ -80,16 +80,20 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher statementMatcher = new StatementMatcher(subject, new StatementMatcher.Variable(predicate), object, this, inheritedVarNames); + return SparqlFragment.bgp(List.of(), subject.asSparqlVariable() + " <" + predicate + "> " + object.asSparqlVariable() + " .", statementMatcher, (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { if (currentStatementMatcher.getOrigin() == this) { - assert currentStatementMatcher == statementMatcher; + if (currentStatementMatcher != statementMatcher) { + return null; + } return Stream.of( - new EffectiveTarget.StatementsAndMatcher(currentStatements, currentStatementMatcher)); + new EffectiveTarget.SubjectObjectAndMatcher(currentStatements, + currentStatementMatcher)); } else { if (currentStatementMatcher.hasSubject(object)) { - List newStatements = currentStatements.stream() + var newStatements = currentStatements.stream() .map(currentStatement -> { try (CloseableIteration statements = connectionsGroup .getBaseConnection() @@ -99,10 +103,12 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, } }) .flatMap(List::stream) + .map(EffectiveTarget.SubjectObjectAndMatcher.SubjectObject::new) .collect(Collectors.toList()); - return Stream.of(new EffectiveTarget.StatementsAndMatcher(newStatements, statementMatcher)); + return Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher(newStatements, statementMatcher)); } else if (currentStatementMatcher.hasObject(object)) { - List newStatements = currentStatements.stream() + var newStatements = currentStatements.stream() .map(currentStatement -> { try (CloseableIteration statements = connectionsGroup .getBaseConnection() @@ -112,8 +118,10 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, } }) .flatMap(List::stream) + .map(EffectiveTarget.SubjectObjectAndMatcher.SubjectObject::new) .collect(Collectors.toList()); - return Stream.of(new EffectiveTarget.StatementsAndMatcher(newStatements, statementMatcher)); + return Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher(newStatements, statementMatcher)); } return null; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java index a1f691920eb..f1973fca581 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java @@ -11,21 +11,36 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.ArrayList; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; +import org.apache.commons.lang3.NotImplementedException; +import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.vocabulary.SHACL; -import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; +import org.eclipse.rdf4j.query.BindingSet; +import org.eclipse.rdf4j.query.algebra.TupleExpr; +import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; +import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; +import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.SingletonBindingSet; +import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; +import org.eclipse.rdf4j.sail.shacl.ast.targets.TargetChainRetriever; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.data.RdfsSubClassOfReasoner; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import com.google.common.collect.Sets; + public class ZeroOrMorePath extends Path { private final Path path; @@ -54,7 +69,25 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNodeWrapper planNodeWrapper) { - throw new ShaclUnsupportedException(); + var variables = List.of(new StatementMatcher.Variable<>("subject"), + new StatementMatcher.Variable<>("value")); + + SparqlFragment targetQueryFragment = getTargetQueryFragment(variables.get(0), variables.get(1), + connectionsGroup.getRdfsSubClassOfReasoner(), new StatementMatcher.StableRandomVariableProvider(), + Set.of()); + + PlanNode targetChainRetriever = new TargetChainRetriever(connectionsGroup, dataGraph, + targetQueryFragment.getStatementMatchers(), List.of(), null, targetQueryFragment, + variables, + ConstraintComponent.Scope.propertyShape, true); + + targetChainRetriever = connectionsGroup.getCachedNodeFor(targetChainRetriever); + + if (planNodeWrapper != null) { + targetChainRetriever = planNodeWrapper.apply(targetChainRetriever); + } + + return connectionsGroup.getCachedNodeFor(targetChainRetriever); } @Override @@ -81,7 +114,98 @@ public String toSparqlPathString() { public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { - throw new ShaclUnsupportedException(); + + if (inheritedVarNames.isEmpty()) { + inheritedVarNames = Set.of(subject.getName()); + } else { + inheritedVarNames = Sets.union(inheritedVarNames, Set.of(subject.getName())); + } + + String variablePrefix = getVariablePrefix(subject, object); + + String sparqlPathString = path.toSparqlPathString(); + + StatementMatcher.Variable pathStart = new StatementMatcher.Variable(subject, variablePrefix + "start"); + StatementMatcher.Variable pathEnd = new StatementMatcher.Variable(subject, variablePrefix + "end"); + + SparqlFragment targetQueryFragmentMiddle = path.getTargetQueryFragment(pathStart, pathEnd, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + SparqlFragment targetQueryFragmentZeroOrOne = SparqlFragment.bgp(List.of(), + subject.asSparqlVariable() + " (" + sparqlPathString + ")? " + object.asSparqlVariable(), + List.of(new StatementMatcher(subject, null, object, this, inheritedVarNames)), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + // TODO: We don't have any tests that cover this! Maybe take a look at minCount/oneOrMorePath? + if (currentStatementMatcher.hasSubject(subject)) { + System.out.println(); + throw new NotImplementedException("This should not happen!"); + } + + return Stream.empty(); + } + ); + + String oneOrMore = subject.asSparqlVariable() + " (" + sparqlPathString + ")* " + pathStart.asSparqlVariable() + + " .\n" + + targetQueryFragmentMiddle.getFragment() + "\n" + + pathEnd.asSparqlVariable() + " (" + sparqlPathString + ")* " + object.asSparqlVariable() + " .\n"; + + SparqlFragment oneOrMoreBgp = SparqlFragment.bgp(List.of(), oneOrMore, + targetQueryFragmentMiddle.getStatementMatchers()); + + var temp = inheritedVarNames; + + return SparqlFragment.union(List.of(targetQueryFragmentZeroOrOne, oneOrMoreBgp), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + + Stream statementsAndMatcherStream1 = targetQueryFragmentZeroOrOne + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); + + Stream peek = targetQueryFragmentMiddle + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) + .map(a -> { + SailConnection baseConnection = connectionsGroup.getBaseConnection(); + + String subjectName = a.getStatementMatcher().getSubjectName(); + assert subjectName.equals(pathStart.getName()); + + String query = "select distinct " + subject.asSparqlVariable() + " where {\n" + + subject.asSparqlVariable() + " (" + sparqlPathString + ")* " + + pathStart.asSparqlVariable() + "\n}"; + + TupleExpr tupleExpr = SparqlQueryParserCache.get(query); + + List statements = new ArrayList<>(); + + for (EffectiveTarget.SubjectObjectAndMatcher.SubjectObject statement : a + .getStatements()) { + try (CloseableIteration evaluate = baseConnection.evaluate( + tupleExpr, PlanNodeHelper.asDefaultGraphDataset(dataGraph), + new SingletonBindingSet(subjectName, statement.getSubject()), true)) { + while (evaluate.hasNext()) { + BindingSet next = evaluate.next(); + statements.add(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject( + ((Resource) next.getValue(subject.getName())), null)); + } + } + } + + StatementMatcher statementMatcher = new StatementMatcher(subject, null, null, path, + temp); + + EffectiveTarget.SubjectObjectAndMatcher effectiveTarget = new EffectiveTarget.SubjectObjectAndMatcher( + statements, statementMatcher); + + return effectiveTarget; + }); + + return Stream.concat(statementsAndMatcherStream1, peek); + + }); + } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java index dab0aac9d7e..5ca6b5ca029 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java @@ -28,18 +28,28 @@ import org.eclipse.rdf4j.query.impl.EmptyBindingSet; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; +import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.AbstractConstraintComponent; public abstract class AbstractBulkJoinPlanNode implements PlanNode { + public static final List DEFAULT_VARS = List.of(new StatementMatcher.Variable("a"), + new StatementMatcher.Variable("c")); public static final String BINDING_NAME = "a"; protected static final int BULK_SIZE = 1000; - private StackTraceElement[] stackTrace; + private final List vars; + private final String varsQueryString; + StackTraceElement[] stackTrace; protected Function mapper; ValidationExecutionLogger validationExecutionLogger; - public AbstractBulkJoinPlanNode() { -// this.stackTrace = Thread.currentThread().getStackTrace(); + public AbstractBulkJoinPlanNode(List vars) { + this.vars = vars; + this.varsQueryString = vars.stream() + .map(StatementMatcher.Variable::asSparqlVariable) + .reduce((a, b) -> a + " " + b) + .orElseThrow(); + this.stackTrace = Thread.currentThread().getStackTrace(); } TupleExpr parseQuery(String query) { @@ -47,7 +57,8 @@ TupleExpr parseQuery(String query) { // #VALUES_INJECTION_POINT# is an annotation in the query where there is a "new scope" due to the bottom up // semantics of SPARQL but where we don't actually want a new scope. query = query.replace(AbstractConstraintComponent.VALUES_INJECTION_POINT, "\nVALUES (?a) {}\n"); - String completeQuery = "select * where {\nVALUES (?a) {}\n" + query + "\n}"; + + String completeQuery = "select distinct " + varsQueryString + " where {\nVALUES (?a) {}\n" + query + "\n}"; return SparqlQueryParserCache.get(completeQuery); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java index 4fa535418b1..6ea7f9d5e2f 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java @@ -61,8 +61,9 @@ public class BulkedExternalInnerJoin extends AbstractBulkJoinPlanNode { public BulkedExternalInnerJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection, - Function mapper, ConnectionsGroup connectionsGroup) { - super(); + Function mapper, ConnectionsGroup connectionsGroup, + List vars) { + super(vars); assert !skipBasedOnPreviousConnection || previousStateConnection != null; this.leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java index ef5689508df..14a94fe20b9 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java @@ -46,8 +46,9 @@ public class BulkedExternalLeftOuterJoin extends AbstractBulkJoinPlanNode { public BulkedExternalLeftOuterJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, - Function mapper, ConnectionsGroup connectionsGroup) { - super(); + Function mapper, ConnectionsGroup connectionsGroup, + List vars) { + super(vars); leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); this.leftNode = leftNode; this.query = query.getNamespacesForSparql() diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DatatypeFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DatatypeFilter.java index deeb33dfe2d..16221da1550 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DatatypeFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DatatypeFilter.java @@ -36,7 +36,6 @@ public DatatypeFilter(PlanNode parent, IRI datatype, ConnectionsGroup connection super(parent, connectionsGroup); this.datatype = datatype; this.xsdDatatype = CoreDatatype.from(datatype).asXSDDatatype().orElse(null); -// stackTrace = Thread.currentThread().getStackTrace(); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DebugPlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DebugPlanNode.java index b64d75baa97..0dd48ca7e99 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DebugPlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/DebugPlanNode.java @@ -37,7 +37,7 @@ public DebugPlanNode(PlanNode parent, String message, Consumer public DebugPlanNode(PlanNode parent, String message) { this.parent = parent; this.message = message; - // this.stackTrace = Thread.currentThread().getStackTrace(); + this.stackTrace = Thread.currentThread().getStackTrace(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java index a8ee407df5a..593e22d9d6b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java @@ -15,8 +15,13 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class EqualsJoinValue implements PlanNode { + + static private final Logger logger = LoggerFactory.getLogger(EqualsJoinValue.class); + private final PlanNode left; private final PlanNode right; private final boolean useAsFilter; @@ -29,8 +34,9 @@ public EqualsJoinValue(PlanNode left, PlanNode right, boolean useAsFilter, Conne this.right = PlanNodeHelper.handleSorting(this, right, connectionsGroup); this.useAsFilter = useAsFilter; -// this.stackTrace = Thread.currentThread().getStackTrace(); - + if (logger.isDebugEnabled()) { + this.stackTrace = Thread.currentThread().getStackTrace(); + } } @Override @@ -165,7 +171,9 @@ public String getId() { @Override public String toString() { - return "EqualsJoin{" + "useAsFilter=" + useAsFilter + '}'; + return "EqualsJoinValue{" + + "useAsFilter=" + useAsFilter + + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java index b69d024bbb5..279664cdace 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java @@ -182,8 +182,8 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { @Override public String toString() { - return "ExternalFilterByPredicate{" + "filterOnPredicates=" - + Arrays.toString(filterOnPredicates.stream().map(Formatter::prefix).toArray()) + return "FilterByPredicate{" + "filterOnPredicates=" + + Formatter.prefix(filterOnPredicates) + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java index 50dd91eb17e..cd9dc265ca4 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java @@ -26,6 +26,8 @@ import org.eclipse.rdf4j.sail.SailException; import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -35,6 +37,8 @@ */ public class FilterByPredicateObject implements PlanNode { + static private final Logger logger = LoggerFactory.getLogger(FilterByPredicateObject.class); + private final SailConnection connection; private final boolean includeInferred; private final Set filterOnObject; @@ -54,6 +58,7 @@ public class FilterByPredicateObject implements PlanNode { public FilterByPredicateObject(SailConnection connection, Resource[] dataGraph, IRI filterOnPredicate, Set filterOnObject, PlanNode parent, boolean returnMatching, FilterOn filterOn, boolean includeInferred, ConnectionsGroup connectionsGroup) { + this.dataGraph = dataGraph; this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.connection = connection; @@ -75,7 +80,9 @@ public FilterByPredicateObject(SailConnection connection, Resource[] dataGraph, && RDF.TYPE.equals(filterOnPredicate)) { typeFilterWithInference = true; } -// this.stackTrace = Thread.currentThread().getStackTrace(); + if (logger.isDebugEnabled()) { + this.stackTrace = Thread.currentThread().getStackTrace(); + } } @Override @@ -349,9 +356,9 @@ public int hashCode() { @Override public String toString() { - return "ExternalPredicateObjectFilter{" + "filterOnObject=" + PlanNode.prefix(filterOnObject) + return "FilterByPredicateObject{" + "filterOnObject=" + Formatter.prefix(filterOnObject) + ", filterOnPredicate=" - + PlanNode.prefix(filterOnPredicate) + ", filterOn=" + filterOn + ", returnMatching=" + + Formatter.prefix(filterOnPredicate) + ", filterOn=" + filterOn + ", returnMatching=" + returnMatching + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterPlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterPlanNode.java index a1879503fc4..c44f511f612 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterPlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterPlanNode.java @@ -35,11 +35,13 @@ public abstract class FilterPlanNode implements MultiStreamPlanNode, PlanNode { private CloseableIteration iterator; private ValidationExecutionLogger validationExecutionLogger; private boolean closed; + StackTraceElement[] stackTrace; abstract boolean checkTuple(Reference t); public FilterPlanNode(PlanNode parent, ConnectionsGroup connectionsGroup) { this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); +// this.stackTrace = Thread.currentThread().getStackTrace(); } public PlanNode getTrueNode(Class type) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java index bdf07046958..bdb80fb8779 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java @@ -42,11 +42,6 @@ boolean checkTuple(Reference t) { return connection.hasStatement(null, null, target, true, dataGraph); } - @Override - public String toString() { - return "ExternalFilterTargetIsObject{" + '}'; - } - @Override public boolean equals(Object o) { if (this == o) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java index 02acb30e90f..3124e6f076e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java @@ -49,11 +49,6 @@ boolean checkTuple(Reference t) { } - @Override - public String toString() { - return "ExternalFilterTargetIsSubject{}"; - } - @Override public boolean equals(Object o) { if (this == o) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java index e6f182190ea..62b5cdbc5d2 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java @@ -10,20 +10,76 @@ *******************************************************************************/ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; +import java.util.Arrays; import java.util.List; +import java.util.Set; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.model.impl.SimpleNamespace; +import org.eclipse.rdf4j.model.vocabulary.AFN; +import org.eclipse.rdf4j.model.vocabulary.APF; +import org.eclipse.rdf4j.model.vocabulary.CONFIG; +import org.eclipse.rdf4j.model.vocabulary.DASH; +import org.eclipse.rdf4j.model.vocabulary.DC; import org.eclipse.rdf4j.model.vocabulary.DCAT; +import org.eclipse.rdf4j.model.vocabulary.DCTERMS; +import org.eclipse.rdf4j.model.vocabulary.DOAP; +import org.eclipse.rdf4j.model.vocabulary.EARL; +import org.eclipse.rdf4j.model.vocabulary.FN; import org.eclipse.rdf4j.model.vocabulary.FOAF; +import org.eclipse.rdf4j.model.vocabulary.GEO; +import org.eclipse.rdf4j.model.vocabulary.GEOF; +import org.eclipse.rdf4j.model.vocabulary.HYDRA; +import org.eclipse.rdf4j.model.vocabulary.LDP; +import org.eclipse.rdf4j.model.vocabulary.LIST; +import org.eclipse.rdf4j.model.vocabulary.LOCN; +import org.eclipse.rdf4j.model.vocabulary.ODRL2; +import org.eclipse.rdf4j.model.vocabulary.ORG; +import org.eclipse.rdf4j.model.vocabulary.OWL; +import org.eclipse.rdf4j.model.vocabulary.PROV; import org.eclipse.rdf4j.model.vocabulary.RDF; +import org.eclipse.rdf4j.model.vocabulary.RDF4J; +import org.eclipse.rdf4j.model.vocabulary.RDFS; +import org.eclipse.rdf4j.model.vocabulary.ROV; +import org.eclipse.rdf4j.model.vocabulary.RSX; +import org.eclipse.rdf4j.model.vocabulary.SD; +import org.eclipse.rdf4j.model.vocabulary.SESAME; +import org.eclipse.rdf4j.model.vocabulary.SESAMEQNAME; import org.eclipse.rdf4j.model.vocabulary.SHACL; +import org.eclipse.rdf4j.model.vocabulary.SKOS; +import org.eclipse.rdf4j.model.vocabulary.SKOSXL; +import org.eclipse.rdf4j.model.vocabulary.SP; +import org.eclipse.rdf4j.model.vocabulary.SPIF; +import org.eclipse.rdf4j.model.vocabulary.SPIN; +import org.eclipse.rdf4j.model.vocabulary.SPINX; +import org.eclipse.rdf4j.model.vocabulary.SPL; +import org.eclipse.rdf4j.model.vocabulary.TIME; +import org.eclipse.rdf4j.model.vocabulary.VANN; +import org.eclipse.rdf4j.model.vocabulary.VCARD4; +import org.eclipse.rdf4j.model.vocabulary.VOID; +import org.eclipse.rdf4j.model.vocabulary.WGS84; import org.eclipse.rdf4j.model.vocabulary.XSD; public class Formatter { + public static String prefix(Set set) { + if (set.size() == 1) { + return prefix(set.iterator().next()); + } + + return Arrays.toString(set.stream().map(Formatter::prefix).toArray()); + } + + public static String prefix(List list) { + if (list.size() == 1) { + return prefix(list.iterator().next()); + } + + return Arrays.toString(list.stream().map(Formatter::prefix).toArray()); + } + public static String prefix(Value in) { if (in == null) { @@ -35,12 +91,51 @@ public static String prefix(Value in) { String namespace = ((IRI) in).getNamespace(); List namespaces = List.of( + AFN.NS, + APF.NS, + CONFIG.NS, + DASH.NS, + DC.NS, + DCAT.NS, + DCTERMS.NS, + DOAP.NS, + EARL.NS, + FN.NS, + FOAF.NS, + GEO.NS, + GEOF.NS, + HYDRA.NS, + LDP.NS, + LIST.NS, + LOCN.NS, + ODRL2.NS, + ORG.NS, + OWL.NS, + PROV.NS, RDF.NS, + RDF4J.NS, + RDFS.NS, + ROV.NS, + RSX.NS, + SD.NS, + SESAME.NS, + SESAMEQNAME.NS, SHACL.NS, - FOAF.NS, - DCAT.NS, + SKOS.NS, + SKOSXL.NS, + SP.NS, + SPIF.NS, + SPIN.NS, + SPINX.NS, + SPL.NS, + TIME.NS, + VANN.NS, + VCARD4.NS, + VOID.NS, + WGS84.NS, + XSD.NS, new SimpleNamespace("http://example.com/ns#", "ex"), - XSD.NS + new SimpleNamespace("http://example.com/ns/", "ex") ); for (Namespace ns : namespaces) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java index 765faab3ba0..038e561f4d0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java @@ -135,7 +135,7 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { @Override public String toString() { - return "GroupByCountFilter"; + return "GroupByFilter"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java index d6265e37251..517ebd9468e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java @@ -300,7 +300,7 @@ public String getId() { @Override public String toString() { - return "InnerJoin(" + left.toString() + " : " + right.toString() + ")"; + return "InnerJoin"; } private String leadingSpace() { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java index 919d39323f0..82adf62ac8e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java @@ -11,9 +11,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; -import java.util.Arrays; -import java.util.Set; - import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.Value; @@ -23,18 +20,6 @@ */ public interface PlanNode { - static String prefix(Set filterOnObject) { - if (filterOnObject.size() == 1) { - return prefix(filterOnObject.iterator().next()); - } - - return Arrays.toString(filterOnObject.stream().map(PlanNode::prefix).toArray()); - } - - static String prefix(Value value) { - return Formatter.prefix(value); - } - CloseableIteration iterator(); int depth(); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java index ad64b910bac..c6564b4b0ab 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java @@ -11,7 +11,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; -import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -113,7 +112,7 @@ public String getId() { @Override public String toString() { return "SetFilterNode{" + "targetNodeList=" - + Arrays.toString(targetNodeList.stream().map(Formatter::prefix).toArray()) + ", index=" + index + + Formatter.prefix(targetNodeList) + ", index=" + index + ", returnValid=" + returnValid + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToNodeShape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToNodeShape.java index e78962815f4..5f1752dbc4a 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToNodeShape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToNodeShape.java @@ -19,11 +19,14 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Håvard Ottestad */ public class ShiftToNodeShape implements PlanNode { + static private final Logger logger = LoggerFactory.getLogger(ShiftToNodeShape.class); private StackTraceElement[] stackTrace; PlanNode parent; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToPropertyShape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToPropertyShape.java index 0e501473858..c9d88521e75 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToPropertyShape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ShiftToPropertyShape.java @@ -19,11 +19,14 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Håvard Ottestad */ public class ShiftToPropertyShape implements PlanNode { + static private final Logger logger = LoggerFactory.getLogger(ShiftToPropertyShape.class); private StackTraceElement[] stackTrace; PlanNode parent; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java index f9f3e0bfb92..127093c4a39 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java @@ -85,7 +85,7 @@ public String getId() { @Override public String toString() { - return "ModifyValidationTuple"; + return "TupleMapper"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java index 1a0eb2d73b1..d412a74b1a8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java @@ -112,6 +112,8 @@ private void calculateNext() { Set tuples = new HashSet<>(); if (propertyShapeWithValue) { + if (parentIterator.hasNext()) + parentIterator.peek(); while (parentIterator.hasNext() && parentIterator.peek().getValue().equals(temp.getValue()) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java index dff0a687f15..dd134c695b9 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java @@ -11,7 +11,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; -import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -37,8 +36,7 @@ boolean checkTuple(Reference t) { @Override public String toString() { - return "ValueInFilter{" + "valueSet=" + Arrays.toString(valueSet.stream().map(Formatter::prefix).toArray()) - + '}'; + return "ValueInFilter{" + "valueSet=" + Formatter.prefix(valueSet) + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java index 3a92d9c2a04..14fb12af7c8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java @@ -97,7 +97,7 @@ public String getId() { @Override public String toString() { - return "ValuesBackedNode{" + "values=" + values + '}'; + return "ValuesBackedNode{" + "values=" + Formatter.prefix(values) + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt deleted file mode 100644 index c089cefe02e..00000000000 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt +++ /dev/null @@ -1,896 +0,0 @@ -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt deleted file mode 100644 index 6ae9ee9f5c3..00000000000 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt +++ /dev/null @@ -1,896 +0,0 @@ -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java index eeadb293dc2..2a9ef7040e1 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java @@ -465,10 +465,13 @@ public EffectiveTargetFragment(Variable var, Targetable target, Effective rootStatementMatcher = null; } else { rootStatementMatcher = queryFragment.getStatementMatchers().get(0); - assert rootStatementMatcher.getSubjectName() == var.getName() || - rootStatementMatcher.getObjectName() == var.getName() || - rootStatementMatcher.getSubjectName() == prev.var.getName() || - rootStatementMatcher.getObjectName() == prev.var.getName(); + if (rootStatementMatcher.getSubjectName() != var.getName() && + rootStatementMatcher.getObjectName() != var.getName() && + rootStatementMatcher.getSubjectName() != prev.var.getName() && + rootStatementMatcher.getObjectName() != prev.var.getName()) { + throw new AssertionError("rootStatementMatcher: " + rootStatementMatcher + ", var: " + var + + ", prev.var: " + prev.var); + } } } @@ -476,7 +479,7 @@ public SparqlFragment getQueryFragment() { return queryFragment; } - public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, + public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, StatementMatcher currentStatementMatcher, Statement currentStatement) { if (currentStatementMatcher == rootStatementMatcher) { @@ -507,7 +510,7 @@ public Stream getRoot(ConnectionsGroup connectionsGroup, R assert !(path instanceof InversePath); return queryFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, - List.of(currentStatement)); + List.of(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject(currentStatement))); } throw new UnsupportedOperationException(); @@ -515,20 +518,20 @@ public Stream getRoot(ConnectionsGroup connectionsGroup, R } } - public static class StatementsAndMatcher { - private final List statements; + public static class SubjectObjectAndMatcher { + private final List statements; private final StatementMatcher statementMatcher; // We should support some sort of stream instead, so that we can scale without keeping all the // intermediary statements in memeory! It's very hard to implement though since the list of statements is // iterated over several times in different branches, so we can't just pass in an iterator since it would be // consumed by one branch and then the other branch would only see an empty iterator. - public StatementsAndMatcher(List statements, StatementMatcher statementMatcher) { + public SubjectObjectAndMatcher(List statements, StatementMatcher statementMatcher) { this.statements = statements; this.statementMatcher = statementMatcher; } - public List getStatements() { + public List getStatements() { return statements; } @@ -540,6 +543,29 @@ public boolean hasStatements() { return !statements.isEmpty(); } + public static class SubjectObject { + private final Resource subject; + private final Value object; + + public SubjectObject(Resource subject, Value object) { + this.subject = subject; + this.object = object; + } + + public SubjectObject(Statement statement) { + this.subject = statement.getSubject(); + this.object = statement.getObject(); + } + + public Resource getSubject() { + return subject; + } + + public Value getObject() { + return object; + } + } + @Override public String toString() { return "StatementsAndMatcher{" + diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java index 767b7a7a377..5d44319bee3 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java @@ -81,6 +81,7 @@ public class TargetChainRetriever implements PlanNode { private final EffectiveTarget.EffectiveTargetFragment removedStatementTarget; private final boolean hasValue; private final Set varNamesInQueryFragment; + private final String queryStr; private final Set originalStatementMatchers; private StackTraceElement[] stackTrace; @@ -122,9 +123,11 @@ public TargetChainRetriever(ConnectionsGroup connectionsGroup, .get(QueryLanguage.SPARQL) .get(); + this.queryStr = "select * where {\n" + this.queryFragment + "\n}"; + this.varNamesInQueryFragment = Set.of(ArrayBindingBasedQueryEvaluationContext .findAllVariablesUsedInQuery(((QueryRoot) queryParserFactory.getParser() - .parseQuery("select * where {\n" + this.queryFragment + "\n}", null) + .parseQuery(queryStr, null) .getTupleExpr()))); assert !varNamesInQueryFragment.isEmpty(); @@ -312,12 +315,14 @@ private List readStatementsInBulk(Set variableNames) { while (bulk.size() < BULK_SIZE && statements.hasNext()) { Statement next = statements.next(); - Stream rootStatements = Stream - .of(new EffectiveTarget.StatementsAndMatcher(List.of(next), currentStatementMatcher)); + Stream rootStatements = Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher( + List.of(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject(next)), + currentStatementMatcher)); if (chaseRoot()) { // we only need to find the root if the currentStatementMatcher doesn't match anything in the // query - Stream root = removedStatementTarget.getRoot( + Stream root = removedStatementTarget.getRoot( connectionsGroup, dataGraph, currentStatementMatcher, next); @@ -328,7 +333,7 @@ private List readStatementsInBulk(Set variableNames) { } rootStatements - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) .flatMap(statementsAndMatcher -> { StatementMatcher newCurrentStatementMatcher = statementsAndMatcher .getStatementMatcher(); @@ -339,6 +344,10 @@ private List readStatementsInBulk(Set variableNames) { Binding[] bindings = new Binding[variableNames.size()]; int j = 0; + assert newCurrentStatementMatcher.getPredicateValue() != null + || !currentVarNames + .contains(newCurrentStatementMatcher.getPredicateName()); + if (newCurrentStatementMatcher.getSubjectValue() == null && currentVarNames .contains(newCurrentStatementMatcher.getSubjectName())) { @@ -347,14 +356,6 @@ private List readStatementsInBulk(Set variableNames) { temp.getSubject()); } - if (newCurrentStatementMatcher.getPredicateValue() == null - && currentVarNames - .contains(newCurrentStatementMatcher.getPredicateName())) { - bindings[j++] = new SimpleBinding( - newCurrentStatementMatcher.getPredicateName(), - temp.getPredicate()); - } - if (newCurrentStatementMatcher.getObjectValue() == null && currentVarNames .contains(newCurrentStatementMatcher.getObjectName())) { @@ -363,6 +364,9 @@ private List readStatementsInBulk(Set variableNames) { temp.getObject()); } if (bindings.length == 1) { + if (bindings[0] == null) { + throw new IllegalStateException("Binding is null!"); + } return new SingletonBindingSet(bindings[0].getName(), bindings[0].getValue()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java index a12aab4c84c..605810c5b49 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java @@ -21,7 +21,6 @@ import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.model.Value; -import org.eclipse.rdf4j.model.util.Values; import org.eclipse.rdf4j.sail.Sail; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.SailException; diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java index f62d336424d..9a3d4f8afa4 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java @@ -11,7 +11,6 @@ package org.eclipse.rdf4j.sail.shacl; -import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.junit.jupiter.params.provider.Arguments.arguments; import java.io.File; @@ -84,7 +83,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.parallel.Execution; import org.junit.jupiter.api.parallel.Isolated; import org.junit.jupiter.params.provider.Arguments; import org.slf4j.Logger; @@ -111,9 +109,16 @@ abstract public class AbstractShaclTest { public static final Set SHAPE_GRAPHS = Set.of(RDF4J.SHACL_SHAPE_GRAPH, RDF4J.NIL, Values.iri("http://example.com/ns#shapesGraph1")); + public static final String INITIAL_DATA_FILE = "initialData.trig"; + private static final Set ignoredTestCases = Set.of( "test-cases/path/oneOrMorePath", + "test-cases/nodeKind/oneOrMorePathComplex", + "test-cases/nodeKind/zeroOrMorePathComplex", + "test-cases/nodeKind/oneOrMorePathSimple", + "test-cases/minCount/oneOrMorePath", "test-cases/path/zeroOrMorePath", + "test-cases/minCount/zeroOrMorePath", "test-cases/path/zeroOrOnePath" ); @@ -224,7 +229,7 @@ private static Stream findTestCases(String testCase, ExpectedResult ba if (files != null) { Optional initialData = Arrays.stream(files) .map(File::getName) - .filter(name -> name.equals("initialData.trig")) + .filter(name -> name.equals(INITIAL_DATA_FILE)) .findAny(); List queries = Arrays.stream(files) .filter(f -> f.getName().endsWith(".rq")) @@ -607,6 +612,11 @@ void referenceImplementationTestCaseValidation(TestCase testCase) { return; } + // the TopBraid SHACL API doesn't support multiple data graphs + if (testCase.testCasePath.startsWith("test-cases/maxCount/simple/invalid/case4/")) { + return; + } + printTestCase(testCase); Dataset shaclDataset = DatasetFactory.create(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/ShapesGraphTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/ShapesGraphTest.java index 13d07f17650..554c127af4a 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/ShapesGraphTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/ShapesGraphTest.java @@ -109,8 +109,8 @@ public void testInvalidUnionGraph() throws Throwable { connection.begin(); connection.add(laura, FOAF.PHONE, Values.literal(1)); - connection.add(laura, FOAF.PHONE, Values.literal(1), data1); - connection.add(laura, FOAF.PHONE, Values.literal(1), data2); + connection.add(laura, FOAF.PHONE, Values.literal(2), data1); + connection.add(laura, FOAF.PHONE, Values.literal(3), data2); connection.commit(); } @@ -120,6 +120,133 @@ public void testInvalidUnionGraph() throws Throwable { } + @Test + public void testValidUnionGraphMinCount() throws Throwable { + + test(repository -> { + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, RDF.TYPE, FOAF.PERSON, data2); + connection.add(laura, FOAF.NAME, Values.literal("Laura"), data2); + connection.commit(); + } + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + + connection.add(laura, FOAF.INTEREST, Values.literal("golf")); + connection.add(laura, FOAF.INTEREST, Values.literal("tennis"), data1); + connection.add(laura, FOAF.INTEREST, Values.literal("chess"), data2); + + connection.commit(); + } + + }); + + } + + @Test + public void testInvalidUnionGraphMinCount() throws Throwable { + + test(repository -> { + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, RDF.TYPE, FOAF.PERSON, data2); + connection.add(laura, FOAF.NAME, Values.literal("Laura"), data2); + connection.commit(); + } + + assertThrows(RepositoryException.class, () -> { + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + + connection.add(laura, FOAF.INTEREST, Values.literal("golf")); + connection.add(laura, FOAF.INTEREST, Values.literal("golf"), data1); + connection.add(laura, FOAF.INTEREST, Values.literal("golf"), data2); + + connection.commit(); + } + }); + + }); + + } + + @Test + public void testInvalidUnionGraphMinCountSparql() throws Throwable { + + test(repository -> { + + assertThrows(RepositoryException.class, () -> { + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(ShaclSail.TransactionSettings.ValidationApproach.Bulk); + connection.add(laura, RDF.TYPE, FOAF.PERSON, data2); + connection.add(laura, FOAF.NAME, Values.literal("Laura"), data2); + connection.add(laura, FOAF.INTEREST, Values.literal("golf")); + connection.add(laura, FOAF.INTEREST, Values.literal("golf"), data1); + connection.add(laura, FOAF.INTEREST, Values.literal("golf"), data2); + connection.commit(); + } + }); + + }); + + } + + @Test + public void testValidUnionGraph() throws Throwable { + + test(repository -> { + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, RDF.TYPE, FOAF.PERSON, data2); + connection.add(laura, FOAF.NAME, Values.literal("Laura"), data2); + connection.commit(); + } + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + + connection.add(laura, FOAF.PHONE, Values.literal(1)); + connection.add(laura, FOAF.PHONE, Values.literal(1), data1); + connection.add(laura, FOAF.PHONE, Values.literal(1), data2); + + connection.commit(); + } + + }); + + } + + @Test + public void testValidUnionGraphSparql() throws Throwable { + + test(repository -> { + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, RDF.TYPE, FOAF.PERSON, data2); + connection.add(laura, FOAF.NAME, Values.literal("Laura"), data2); + connection.commit(); + } + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(ShaclSail.TransactionSettings.ValidationApproach.Bulk); + + connection.add(laura, FOAF.PHONE, Values.literal(1)); + connection.add(laura, FOAF.PHONE, Values.literal(1), data1); + connection.add(laura, FOAF.PHONE, Values.literal(1), data2); + + connection.commit(); + } + + }); + + } + @Test public void testInvalidSplitAcrossGraphs() throws Throwable { @@ -210,15 +337,15 @@ public void testDefaultShapesGraph() throws IOException { try (RepositoryConnection connection = repository.getConnection()) { connection.begin(); connection.add(laura, RDF.TYPE, FOAF.PERSON, Values.iri("http://example.org/differentGraph")); - connection.add(laura, FOAF.PHONE, Values.literal(12345678)); - connection.add(laura, FOAF.PHONE, Values.literal(12345678), data2); + connection.add(laura, FOAF.PHONE, Values.literal(1)); + connection.add(laura, FOAF.PHONE, Values.literal(2), data2); connection.commit(); } assertThrows(RepositoryException.class, () -> { try (RepositoryConnection connection = repository.getConnection()) { connection.begin(); - connection.add(laura, FOAF.PHONE, Values.literal(12345678), data1); + connection.add(laura, FOAF.PHONE, Values.literal(3), data1); connection.commit(); } }); @@ -227,6 +354,32 @@ public void testDefaultShapesGraph() throws IOException { } + @Test + public void testDefaultShapesGraph2() throws IOException { + + ShaclSail shaclSail = new ShaclSail(new MemoryStore()); + SailRepository repository = new SailRepository(shaclSail); + + loadShapes(repository); + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, RDF.TYPE, FOAF.PERSON, Values.iri("http://example.org/differentGraph")); + connection.add(laura, FOAF.PHONE, Values.literal(1)); + connection.add(laura, FOAF.PHONE, Values.literal(1), data2); + connection.commit(); + } + + try (RepositoryConnection connection = repository.getConnection()) { + connection.begin(); + connection.add(laura, FOAF.PHONE, Values.literal(1), data1); + connection.commit(); + } + + repository.shutDown(); + + } + private void loadShapes(SailRepository repository) throws IOException { try (SailRepositoryConnection connection = repository.getConnection()) { connection.begin(ShaclSail.TransactionSettings.ValidationApproach.Disabled); @@ -246,7 +399,8 @@ private void test(Consumer testCase) throws Throwable { Values.iri(EX, "peopleKnowHumansShapes"), Values.iri(EX, "mustHaveNameShapes"), Values.iri(EX, "maxFiveAcquaintances"), - Values.iri(EX, "nestedKnowsShouldHaveAge") + Values.iri(EX, "nestedKnowsShouldHaveAge"), + Values.iri(EX, "mustHaveMinThreeInterestsOrNoneAtAll") )); loadShapes(repository); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java index 44175008568..7103c054e91 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.sail.shacl; import java.io.IOException; +import java.util.LinkedHashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -104,15 +105,20 @@ public void testComplexPath() throws IOException { } } - Set relevantLog = getRelevantLog(4); + Set relevantLog = getRelevantLog(4).stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); Set expected = Set.of( - "Unsupported SHACL feature detected: InversePath{ ZeroOrMorePath{ SimplePath{ } } }. Shape ignored! a sh:PropertyShape; sh:path [ sh:inversePath [ sh:zeroOrMorePath ] ]; sh:datatype xsd:int .", - "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrOnePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:oneOrMorePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", + "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, OneOrMorePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:oneOrMorePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", + "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrMorePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:zeroOrMorePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrOnePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:zeroOrOnePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", + "Unsupported SHACL feature detected: InversePath{ ZeroOrMorePath{ SimplePath{ } } }. Shape ignored! a sh:PropertyShape; sh:path [ sh:inversePath [ sh:zeroOrMorePath ] ]; sh:datatype xsd:int .", "Unsupported SHACL feature detected: InversePath{ ZeroOrMorePath{ SimplePath{ } } }. Shape ignored! a sh:PropertyShape; sh:path [ sh:inversePath [ sh:zeroOrMorePath ] ]; sh:minCount 1 ." ); + expected = expected.stream().sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + Assertions.assertEquals(expected, relevantLog); shaclRepository.shutDown(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/Utils.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/Utils.java index a72a41c0196..62177aeb736 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/Utils.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/Utils.java @@ -12,7 +12,6 @@ package org.eclipse.rdf4j.sail.shacl; import java.io.BufferedInputStream; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java index cd428fceae4..ecaf7e3c8f1 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java @@ -62,7 +62,8 @@ public class W3cComplianceTest { "/core/path/path-zeroOrOne-001.ttl", "/core/property/qualifiedMinCountDisjoint-001.ttl", "/core/property/qualifiedValueShapesDisjoint-001.ttl", - "/core/property/uniqueLang-002.ttl"); + "/core/property/uniqueLang-002.ttl" + ); public static Stream data() { return getTestFiles().stream() diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java index 8464583871b..1ecdcc16330 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java @@ -15,12 +15,8 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Statement; -import org.eclipse.rdf4j.model.impl.SimpleValueFactory; -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.model.vocabulary.RDFS; import org.eclipse.rdf4j.repository.sail.SailRepository; import org.eclipse.rdf4j.repository.sail.SailRepositoryConnection; import org.eclipse.rdf4j.rio.RDFFormat; diff --git a/core/sail/shacl/src/test/resources/complexPath.trig b/core/sail/shacl/src/test/resources/complexPath.trig index 6156512fe4d..ab26e8df364 100644 --- a/core/sail/shacl/src/test/resources/complexPath.trig +++ b/core/sail/shacl/src/test/resources/complexPath.trig @@ -20,6 +20,7 @@ ex:PersonShape ex:alternativePath , ex:nestedSequencePath , ex:alternativePathZeroOrOne , + ex:alternativePathZeroOrMore , ex:alternativePathOneOrMore . ex:inverseOfWithComplex @@ -47,6 +48,11 @@ ex:alternativePathZeroOrOne sh:path [ sh:alternativePath (ex:father [sh:zeroOrOnePath ex:parent] ex:mother ) ] ; sh:nodeKind sh:BlankNodeOrIRI . +ex:alternativePathZeroOrMore + sh:path [ sh:alternativePath (ex:father [sh:zeroOrMorePath ex:parent] ex:mother ) ] ; + sh:nodeKind sh:BlankNodeOrIRI . + + ex:alternativePathOneOrMore sh:path [ sh:alternativePath (ex:father [sh:oneOrMorePath ex:parent] ex:mother ) ] ; sh:nodeKind sh:BlankNodeOrIRI . diff --git a/core/sail/shacl/src/test/resources/logback-test.xml b/core/sail/shacl/src/test/resources/logback-test.xml index 990f3bb2551..40ced8210b0 100644 --- a/core/sail/shacl/src/test/resources/logback-test.xml +++ b/core/sail/shacl/src/test/resources/logback-test.xml @@ -7,7 +7,7 @@ - + diff --git a/core/sail/shacl/src/test/resources/multipleShapesGraphs.trig b/core/sail/shacl/src/test/resources/multipleShapesGraphs.trig index 6cd2a98ef19..0ca11d3d069 100644 --- a/core/sail/shacl/src/test/resources/multipleShapesGraphs.trig +++ b/core/sail/shacl/src/test/resources/multipleShapesGraphs.trig @@ -5,6 +5,7 @@ @prefix sh: . @prefix xsd: . @prefix rdf4j: . +@prefix rsx: . ex:peopleKnowPeopleShapes { ex:PersonShapeKnowsPerson a sh:NodeShape; @@ -43,6 +44,23 @@ ex:mustHaveNameShapes { ex:data2 sh:shapesGraph ex:mustHaveNameShapes. } +ex:mustHaveMinThreeInterestsOrNoneAtAll { + ex:mustHaveMinThreeInterestsOrNoneAtAll a sh:NodeShape; + sh:targetSubjectsOf foaf:interest; + sh:property [ + sh:path foaf:interest; + sh:minCount 3; + ] . + + [ + a rsx:DataAndShapesGraphLink; + rsx:shapesGraph ex:mustHaveMinThreeInterestsOrNoneAtAll; + rsx:dataGraph rdf4j:nil, ex:data1, ex:data2; + ] +} + + + rdf4j:SHACLShapeGraph { ex:PersonShapeMustHaveName a sh:NodeShape; sh:targetClass foaf:Person; @@ -65,6 +83,7 @@ ex:maxFiveAcquaintances { ex:data2 sh:shapesGraph ex:maxFiveAcquaintances. } + ex:nestedKnowsShouldHaveAge { ex:PersonShapeNestedKnowsShouldHaveAge a sh:NodeShape; sh:targetClass foaf:Person; diff --git a/core/sail/shacl/src/test/resources/test-cases/hasValue/targetShapeAnd3/invalid/case4/initialData.trig b/core/sail/shacl/src/test/resources/test-cases/hasValue/targetShapeAnd3/invalid/case4/initialData.trig index 54ddd788c91..7fe659e684e 100644 --- a/core/sail/shacl/src/test/resources/test-cases/hasValue/targetShapeAnd3/invalid/case4/initialData.trig +++ b/core/sail/shacl/src/test/resources/test-cases/hasValue/targetShapeAnd3/invalid/case4/initialData.trig @@ -8,4 +8,3 @@ @prefix rsx: . ex:validPerson1 ex:info "blue", "red" . - diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query2.rq new file mode 100644 index 00000000000..4c9c80e4579 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + GRAPH ex:g1 { + ex:validPerson1 ex:ssn "789", "012". + } +} diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/report.ttl new file mode 100644 index 00000000000..24bceadf899 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/invalid/case4/report.ttl @@ -0,0 +1,23 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultPath ex:ssn; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MaxCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:maxCount 3; + sh:path ex:ssn + ] + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query2.rq new file mode 100644 index 00000000000..0d4f5d03324 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + GRAPH ex:g1 { + ex:validPerson1 ex:ssn "789", "123". + } +} diff --git a/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/maxCount/simple/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..5242e77e52d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..17b75d04990 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac982; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac982 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac982 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..6194108fba0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..d5fbf1d42da --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson2; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac9829; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac9829 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac9829 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq new file mode 100644 index 00000000000..b66cba3559b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl new file mode 100644 index 00000000000..1f65bb9b558 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac9848; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac9848 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac9848 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig new file mode 100644 index 00000000000..0cfb7bf0586 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath [sh:alternativePath (ex:ssn ex:socialSecurityNumber) ]]; + sh:minCount 2 ; + sh:message "Requires at least 2 social security numbers", "Trenger minst 2 fødselsnummer"@no-nb, "Requires at least 2 social security numbers"@en ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq new file mode 100644 index 00000000000..5503d3a67c0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq new file mode 100644 index 00000000000..d83a28ac680 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person; + ex:ssn "456". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq new file mode 100644 index 00000000000..dcc7172407e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq new file mode 100644 index 00000000000..9e6f58ccaf9 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq new file mode 100644 index 00000000000..72033356446 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq new file mode 100644 index 00000000000..f0f7dff41af --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +[] ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq new file mode 100644 index 00000000000..10551edc99b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +insert { + ?a a ex:Person; + ex:ssn "456". +} where{ + ?a ex:ssn ?b. +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..cd0f2c009fe --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..4994d318dcb --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl @@ -0,0 +1,30 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:8235d18495e54f40834e0436a979b57f2; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:8235d18495e54f40834e0436a979b57f2 + ] + ] . + +_:8235d18495e54f40834e0436a979b57f2 rdf:first ex:ssnObject1; + rdf:rest (ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..52a62cd1dd1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..3c21c84f463 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { + + ex:o2 ex:ssnObject3 ex:o3. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..b1cf96d6afa --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl @@ -0,0 +1,30 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:8235d18495e54f40834e0436a979b57f32; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:8235d18495e54f40834e0436a979b57f32 + ] + ] . + +_:8235d18495e54f40834e0436a979b57f32 rdf:first ex:ssnObject1; + rdf:rest (ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig new file mode 100644 index 00000000000..0047f6c1720 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path (ex:ssnObject1 ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) ; + sh:minCount 2 ; + sh:message "Requires at least 2 social security numbers", "Trenger minst 2 fødselsnummer"@no-nb, "Requires at least 2 social security numbers"@en ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq new file mode 100644 index 00000000000..52a62cd1dd1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq new file mode 100644 index 00000000000..a807e16f57d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq @@ -0,0 +1,17 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq new file mode 100644 index 00000000000..703e8569ff7 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..5242e77e52d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..b451e1d95b2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98108; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98108 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98108 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..6194108fba0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..f98c8a79bab --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl @@ -0,0 +1,28 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson2; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98127; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape _:4e2d4e9d107d42408848b92cc2bcac98126 + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98126 a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98127 . + +_:4e2d4e9d107d42408848b92cc2bcac98127 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq new file mode 100644 index 00000000000..b66cba3559b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl new file mode 100644 index 00000000000..cfcb429db2f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98148; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98148 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98148 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig new file mode 100644 index 00000000000..3667e5751bf --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig @@ -0,0 +1,17 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:zeroOrMorePath [sh:alternativePath (ex:ssn ex:socialSecurityNumber) ]]; + sh:minCount 3 ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq new file mode 100644 index 00000000000..5503d3a67c0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq new file mode 100644 index 00000000000..d83a28ac680 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person; + ex:ssn "456". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq new file mode 100644 index 00000000000..dcc7172407e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq new file mode 100644 index 00000000000..9e6f58ccaf9 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq new file mode 100644 index 00000000000..72033356446 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq new file mode 100644 index 00000000000..f0f7dff41af --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +[] ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq new file mode 100644 index 00000000000..10551edc99b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +insert { + ?a a ex:Person; + ex:ssn "456". +} where{ + ?a ex:ssn ?b. +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq new file mode 100644 index 00000000000..4ea35e63b00 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq new file mode 100644 index 00000000000..f81594b3c82 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq new file mode 100644 index 00000000000..ab32ba39da6 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq new file mode 100644 index 00000000000..04cccdf69c8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq new file mode 100644 index 00000000000..047e7654284 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq new file mode 100644 index 00000000000..30a45209ba2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p3 ex:knows3 "1234". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq new file mode 100644 index 00000000000..f14604ec8c3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq new file mode 100644 index 00000000000..b83e90e0b9c --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 [ex:knows2 [ex:knows3 [ex:knows1 ex:p2]]]. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig new file mode 100644 index 00000000000..cd477663bfe --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig @@ -0,0 +1,19 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) ]; + sh:nodeKind sh:BlankNodeOrIRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq new file mode 100644 index 00000000000..9bdc8b449b3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq new file mode 100644 index 00000000000..5f2bab7c138 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq new file mode 100644 index 00000000000..747c66e1ad5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows [ ex:knows [ ex:knows "1234" ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl new file mode 100644 index 00000000000..1d245d9721c --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:e6bc97aad3a0460c9710ad6f22a9570d15019; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:e6bc97aad3a0460c9710ad6f22a9570d15019 + ]; + sh:value "1234" + ] . + +_:e6bc97aad3a0460c9710ad6f22a9570d15019 sh:oneOrMorePath ex:knows . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq new file mode 100644 index 00000000000..7f561a7eec0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows [ ex:knows [ ex:knows "1234" ]]. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq new file mode 100644 index 00000000000..2ab72640fb0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person . + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl new file mode 100644 index 00000000000..4c04954e16e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:e6bc97aad3a0460c9710ad6f22a9570d15035; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:e6bc97aad3a0460c9710ad6f22a9570d15035 + ]; + sh:value "1234" + ] . + +_:e6bc97aad3a0460c9710ad6f22a9570d15035 sh:oneOrMorePath ex:knows . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig new file mode 100644 index 00000000000..da372bfd09e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath ex:knows ]; + sh:nodeKind sh:BlankNodeOrIRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq new file mode 100644 index 00000000000..205c7e8bd8e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows [ ex:knows [ ex:knows [] ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq new file mode 100644 index 00000000000..76d499c1432 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows [ ex:knows [ ex:knows [] ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq new file mode 100644 index 00000000000..c5a47bc073e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq new file mode 100644 index 00000000000..c0c6f6083d1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows []. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq new file mode 100644 index 00000000000..ffc6f52d22f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 + ex:knows ex:pete ; + a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq new file mode 100644 index 00000000000..6a2561ee83a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows ex:peter. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq new file mode 100644 index 00000000000..04b61deb1f8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows []. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq new file mode 100644 index 00000000000..4ea35e63b00 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl new file mode 100644 index 00000000000..87404bf49b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98186; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98186 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98186 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq new file mode 100644 index 00000000000..f81594b3c82 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl new file mode 100644 index 00000000000..5d39bc0a08f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98207; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98207 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98207 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq new file mode 100644 index 00000000000..ab32ba39da6 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq new file mode 100644 index 00000000000..04cccdf69c8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl new file mode 100644 index 00000000000..4c7ca7153b7 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98228; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98228 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98228 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq new file mode 100644 index 00000000000..047e7654284 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq new file mode 100644 index 00000000000..30a45209ba2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p3 ex:knows3 "1234". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl new file mode 100644 index 00000000000..03dd41ecd87 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98249; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98249 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98249 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq new file mode 100644 index 00000000000..f14604ec8c3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl new file mode 100644 index 00000000000..32204f7992e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98270; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98270 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98270 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq new file mode 100644 index 00000000000..e328f8f9053 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + [] a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl new file mode 100644 index 00000000000..8f7d3a5a6cd --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode _:3d9086d5ce836d2b; + sh:resultPath _:c796ffb912304daa9258cc6b992eef4b2; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:c796ffb912304daa9258cc6b992eef4b2 + ]; + sh:value _:3d9086d5ce836d2b + ] . + +_:c796ffb912304daa9258cc6b992eef4b2 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig new file mode 100644 index 00000000000..1d1ecfa22eb --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig @@ -0,0 +1,19 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) ]; + sh:nodeKind sh:IRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq new file mode 100644 index 00000000000..9bdc8b449b3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq new file mode 100644 index 00000000000..5f2bab7c138 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/query1.rq new file mode 100644 index 00000000000..b1d7c6a0986 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:person1 a ex:Person; + ex:name "en val"@en, "whatever", "other". +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/report.ttl new file mode 100644 index 00000000000..750a58a5eb3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case1/report.ttl @@ -0,0 +1,26 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:person1; + sh:resultPath ex:name; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:QualifiedMaxCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:path ex:name; + sh:qualifiedMaxCount 1; + sh:qualifiedValueShape [ a sh:NodeShape; + sh:datatype xsd:string + ] + ] + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/initialData.trig b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/initialData.trig new file mode 100644 index 00000000000..0313f7b856a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/initialData.trig @@ -0,0 +1,9 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +ex:person1 a ex:Person ; + ex:name "en val"@en, "whatever" . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/query1.rq new file mode 100644 index 00000000000..0d73326c533 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/query1.rq @@ -0,0 +1,22 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT { + GRAPH ex:graph2 { + ex:person2 ex:change ?entity_iri . + } + ?entity_iri ex:name "NONE (string) value updated 2", "NONE (string) value updated 3". +} WHERE { + VALUES ?entity_iri { + ex:person1 + } + ?entity_iri rdf:type ?entity_iri_rdf_type__0 . + + FILTER (?entity_iri_rdf_type__0 = ex:Person) + BIND ('LangStringUniq' as ?entity_iri_ignore__1) . +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/report.ttl new file mode 100644 index 00000000000..750a58a5eb3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case2/report.ttl @@ -0,0 +1,26 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:person1; + sh:resultPath ex:name; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:QualifiedMaxCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:path ex:name; + sh:qualifiedMaxCount 1; + sh:qualifiedValueShape [ a sh:NodeShape; + sh:datatype xsd:string + ] + ] + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/initialData.trig b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/initialData.trig new file mode 100644 index 00000000000..0313f7b856a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/initialData.trig @@ -0,0 +1,9 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +ex:person1 a ex:Person ; + ex:name "en val"@en, "whatever" . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/query1.rq new file mode 100644 index 00000000000..309455e4185 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:person1 ex:name "other". +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/report.ttl new file mode 100644 index 00000000000..750a58a5eb3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/invalid/case3/report.ttl @@ -0,0 +1,26 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:person1; + sh:resultPath ex:name; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:QualifiedMaxCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:path ex:name; + sh:qualifiedMaxCount 1; + sh:qualifiedValueShape [ a sh:NodeShape; + sh:datatype xsd:string + ] + ] + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/shacl.trig new file mode 100644 index 00000000000..44c5dc4a5a8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/shacl.trig @@ -0,0 +1,17 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path ex:name; + sh:qualifiedValueShape [sh:datatype xsd:string ; ] ; + sh:qualifiedMaxCount 1 ; + ] . +} diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/query1.rq new file mode 100644 index 00000000000..9009d9d2f78 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:person1 a ex:Person; + ex:name "en val"@en, "whatever" . +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query1.rq new file mode 100644 index 00000000000..a77eda769f4 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:person1 ex:name "en val"@en, "whatever" . +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query2.rq new file mode 100644 index 00000000000..951f75ec122 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:person1 a ex:Person. +} + diff --git a/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/qualifiedShape/maxCountString/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/tools/server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/transaction/TransactionController.java b/tools/server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/transaction/TransactionController.java index ff647a6a6b5..f0a2b46612b 100644 --- a/tools/server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/transaction/TransactionController.java +++ b/tools/server-spring/src/main/java/org/eclipse/rdf4j/http/server/repository/transaction/TransactionController.java @@ -37,6 +37,7 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -637,6 +638,24 @@ private ModelAndView getSparqlUpdateResult(Transaction transaction, HttpServletR } } + if (logger.isDebugEnabled()) { + StringBuilder datasetStr = new StringBuilder(); + dataset.getDefaultGraphs() + .forEach(g -> datasetStr.append("DEFAULT GRAPH: FROM <").append(g.stringValue()).append(">\n")); + dataset.getNamedGraphs() + .forEach(g -> datasetStr.append("NAMED GRAPH: FROM NAMED <").append(g.stringValue()).append(">\n")); + dataset.getDefaultRemoveGraphs() + .forEach(g -> datasetStr.append("DEFAULT REMOVE GRAPH: DELETE FROM <") + .append(g.stringValue()) + .append(">\n")); + Optional.ofNullable(dataset.getDefaultInsertGraph()) + .ifPresent(g -> datasetStr.append("DEFAULT INSERT GRAPH: INSERT INTO <") + .append(g.stringValue()) + .append(">\n")); + + logger.debug("Dataset: {}", datasetStr); + } + try { // determine if any variable bindings have been set on this update. @SuppressWarnings("unchecked")