From 8a0f374b658e74957fa09703be88e3bfc124860b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Avard=20Ottestad?= Date: Thu, 29 Aug 2024 10:57:07 +0200 Subject: [PATCH 1/3] wip --- .../rdf4j/sail/shacl/ast/NodeShape.java | 15 +- .../rdf4j/sail/shacl/ast/PropertyShape.java | 20 +- .../eclipse/rdf4j/sail/shacl/ast/Shape.java | 6 +- .../AbstractConstraintComponent.java | 6 +- .../AbstractPairwiseConstraintComponent.java | 25 +- .../AbstractSimpleConstraintComponent.java | 60 +- .../AndConstraintComponent.java | 8 +- .../ClassConstraintComponent.java | 47 +- .../ClosedConstraintComponent.java | 59 +- .../DashHasValueInConstraintComponent.java | 13 +- .../DatatypeConstraintComponent.java | 6 +- .../HasValueConstraintComponent.java | 19 +- .../InConstraintComponent.java | 5 +- .../LanguageInConstraintComponent.java | 5 +- .../MaxCountConstraintComponent.java | 18 +- .../MaxExclusiveConstraintComponent.java | 6 +- .../MaxInclusiveConstraintComponent.java | 6 +- .../MaxLengthConstraintComponent.java | 6 +- .../MinCountConstraintComponent.java | 19 +- .../MinExclusiveConstraintComponent.java | 6 +- .../MinInclusiveConstraintComponent.java | 6 +- .../MinLengthConstraintComponent.java | 6 +- .../NodeKindConstraintComponent.java | 7 +- .../NotConstraintComponent.java | 13 +- .../OrConstraintComponent.java | 12 +- .../PatternConstraintComponent.java | 6 +- .../QualifiedMaxCountConstraintComponent.java | 30 +- .../QualifiedMinCountConstraintComponent.java | 33 +- .../SparqlConstraintComponent.java | 2 +- .../UniqueLangConstraintComponent.java | 35 +- .../sail/shacl/ast/paths/AlternativePath.java | 2 +- .../sail/shacl/ast/paths/InversePath.java | 2 +- .../planNodes/AbstractBulkJoinPlanNode.java | 5 +- .../sail/shacl/ast/planNodes/BindSelect.java | 5 +- .../planNodes/BulkedExternalInnerJoin.java | 76 +- .../BulkedExternalLeftOuterJoin.java | 5 +- .../shacl/ast/planNodes/DatatypeFilter.java | 5 +- .../sail/shacl/ast/planNodes/EqualsJoin.java | 7 +- .../shacl/ast/planNodes/EqualsJoinValue.java | 7 +- .../ast/planNodes/ExternalFilterByQuery.java | 6 +- .../ast/planNodes/FilterByPredicate.java | 5 +- .../planNodes/FilterByPredicateObject.java | 5 +- .../shacl/ast/planNodes/FilterPlanNode.java | 5 +- .../ast/planNodes/FilterTargetIsObject.java | 6 +- .../ast/planNodes/FilterTargetIsSubject.java | 6 +- .../ast/planNodes/GroupByCountFilter.java | 5 +- .../shacl/ast/planNodes/GroupByFilter.java | 6 +- .../sail/shacl/ast/planNodes/InnerJoin.java | 7 +- .../shacl/ast/planNodes/LanguageInFilter.java | 6 +- .../shacl/ast/planNodes/LeftOuterJoin.java | 7 +- .../planNodes/LiteralComparatorFilter.java | 6 +- .../shacl/ast/planNodes/MaxLengthFilter.java | 5 +- .../shacl/ast/planNodes/MinLengthFilter.java | 5 +- .../shacl/ast/planNodes/NodeKindFilter.java | 6 +- .../ast/planNodes/NonUniqueTargetLang.java | 5 +- .../sail/shacl/ast/planNodes/NotValuesIn.java | 5 +- .../shacl/ast/planNodes/PatternFilter.java | 5 +- .../shacl/ast/planNodes/PlanNodeHelper.java | 14 +- .../shacl/ast/planNodes/ReduceTargets.java | 5 +- .../shacl/ast/planNodes/SetFilterNode.java | 6 +- .../shacl/ast/planNodes/ShiftToNodeShape.java | 5 +- .../ast/planNodes/ShiftToPropertyShape.java | 5 +- .../planNodes/SingleCloseablePlanNode.java | 5 +- .../rdf4j/sail/shacl/ast/planNodes/Sort.java | 20 +- .../ast/planNodes/TargetChainPopper.java | 5 +- .../shacl/ast/planNodes/TrimToTarget.java | 5 +- .../sail/shacl/ast/planNodes/TupleMapper.java | 6 +- .../sail/shacl/ast/planNodes/UnionNode.java | 17 +- .../sail/shacl/ast/planNodes/Unique.java | 9 +- .../ast/planNodes/ValidationReportNode.java | 6 +- .../shacl/ast/planNodes/ValueInFilter.java | 5 +- .../sail/shacl/ast/planNodes/sort-after.txt | 896 +++++++++++++ .../sail/shacl/ast/planNodes/sort-before.txt | 896 +++++++++++++ .../shacl/ast/targets/DashAllObjects.java | 9 +- .../shacl/ast/targets/DashAllSubjects.java | 9 +- .../shacl/ast/targets/EffectiveTarget.java | 27 +- .../shacl/ast/targets/RSXTargetShape.java | 4 +- .../sail/shacl/ast/targets/SparqlTarget.java | 2 +- .../sail/shacl/ast/targets/TargetClass.java | 19 +- .../sail/shacl/ast/targets/TargetNode.java | 2 +- .../shacl/ast/targets/TargetObjectsOf.java | 10 +- .../shacl/ast/targets/TargetSubjectsOf.java | 10 +- .../rdf4j/sail/shacl/EqualsJoinTest.java | 12 +- .../rdf4j/sail/shacl/InnerJoinTest.java | 26 +- .../eclipse/rdf4j/sail/shacl/UniqueTest.java | 4 +- .../benchmark/ComplexLargeBenchmark.java | 3 +- .../SparqlConstraintsBenchmarkEmpty.java | 115 ++ .../test/resources/benchmark/sparql/data.ttl | 1114 +++++++++++++++++ .../resources/benchmark/sparql/shacl.trig | 53 + 89 files changed, 3614 insertions(+), 430 deletions(-) create mode 100644 core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt create mode 100644 core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt create mode 100644 core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java create mode 100644 core/sail/shacl/src/test/resources/benchmark/sparql/data.ttl create mode 100644 core/sail/shacl/src/test/resources/benchmark/sparql/shacl.trig 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 6ec57c5e1f8..0688db2316e 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 @@ -173,14 +173,15 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections return new ValidationResult(t.getActiveTarget(), t.getActiveTarget(), this, constraintComponent, getSeverity(), t.getScope(), t.getContexts(), getContexts()); - }); + }, connectionsGroup); } if (scope == Scope.propertyShape) { - validationPlanNode = Unique.getInstance(new ShiftToPropertyShape(validationPlanNode), true); + validationPlanNode = Unique.getInstance(new ShiftToPropertyShape(validationPlanNode, connectionsGroup), + true, connectionsGroup); } - union = UnionNode.getInstance(union, validationPlanNode); + union = UnionNode.getInstance(connectionsGroup, union, validationPlanNode); } return union; @@ -207,7 +208,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, Scope.nodeShape, new StatementMatcher.StableRandomVariableProvider())) .distinct() - .reduce(UnionNode::getInstanceDedupe) + .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); if (connectionsGroup.getStats().hasRemoved()) { @@ -216,14 +217,14 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - planNode = UnionNode.getInstanceDedupe(planNode, planNodeEffectiveTarget); + planNode = UnionNode.getInstanceDedupe(connectionsGroup, planNode, planNodeEffectiveTarget); } if (scope == Scope.propertyShape) { - planNode = Unique.getInstance(new ShiftToPropertyShape(planNode), true); + planNode = Unique.getInstance(new ShiftToPropertyShape(planNode, connectionsGroup), true, connectionsGroup); } - planNode = Unique.getInstance(planNode, false); + planNode = Unique.getInstance(planNode, false, connectionsGroup); return planNode; } 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 2efcdcb1ac0..5735bf9276d 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 @@ -236,16 +236,18 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections return new ValidationResult(t.getActiveTarget(), t.getValue(), this, constraintComponent, getSeverity(), t.getScope(), t.getContexts(), getContexts()); - }); + }, connectionsGroup); } if (scope == Scope.propertyShape) { - validationPlanNode = Unique.getInstance(new TargetChainPopper(validationPlanNode), true); + validationPlanNode = Unique.getInstance(new TargetChainPopper(validationPlanNode, connectionsGroup), + true, connectionsGroup); } else { - validationPlanNode = Unique.getInstance(new ShiftToNodeShape(validationPlanNode), true); + validationPlanNode = Unique.getInstance(new ShiftToNodeShape(validationPlanNode, connectionsGroup), + true, connectionsGroup); } - union = UnionNode.getInstance(union, validationPlanNode); + union = UnionNode.getInstance(connectionsGroup, union, validationPlanNode); } return union; @@ -258,7 +260,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, Scope.propertyShape, new StatementMatcher.StableRandomVariableProvider())) .distinct() - .reduce(UnionNode::getInstanceDedupe) + .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); if (connectionsGroup.getStats().hasRemoved()) { @@ -267,16 +269,16 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.propertyShape, true, null); - planNode = UnionNode.getInstanceDedupe(planNode, planNodeEffectiveTarget); + planNode = UnionNode.getInstanceDedupe(connectionsGroup, planNode, planNodeEffectiveTarget); } if (scope == Scope.propertyShape) { - planNode = Unique.getInstance(new TargetChainPopper(planNode), true); + planNode = Unique.getInstance(new TargetChainPopper(planNode, connectionsGroup), true, connectionsGroup); } else { - planNode = new ShiftToNodeShape(planNode); + planNode = new ShiftToNodeShape(planNode, connectionsGroup); } - planNode = Unique.getInstance(planNode, false); + planNode = Unique.getInstance(planNode, false, connectionsGroup); return planNode; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/Shape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/Shape.java index fb16757fb67..4c3d7db0bb4 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/Shape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/Shape.java @@ -422,7 +422,7 @@ public PlanNode generatePlans(ConnectionsGroup connectionsGroup, ValidationSetti Scope.none) .getValidationPlan(connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), getContexts()), - this); + this, connectionsGroup); } else { logger.debug("Use fall back validation approach for bulk validation instead of SPARQL for shape {}", this); @@ -436,7 +436,7 @@ public PlanNode generatePlans(ConnectionsGroup connectionsGroup, ValidationSetti .getAllTargets(connectionsGroup, validationSettings.getDataGraph(), this instanceof NodeShape ? Scope.nodeShape : Scope.propertyShape), - Scope.none), this); + Scope.none), this, connectionsGroup); } } else if (validationApproach == ValidationApproach.Transactional) { @@ -447,7 +447,7 @@ public PlanNode generatePlans(ConnectionsGroup connectionsGroup, ValidationSetti return new SingleCloseablePlanNode( Shape.this.generateTransactionalValidationPlan(connectionsGroup, validationSettings, null, Scope.none), - this); + this, connectionsGroup); } else { return EmptyNode.getInstance(); } 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 9702e6e6c73..aab697c03fe 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 @@ -161,16 +161,16 @@ static PlanNode getAllTargetsIncludingThoseAddedByPath(ConnectionsGroup connecti PlanNode addedByPath = path.getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); - addedByPath = Unique.getInstance(new TrimToTarget(addedByPath), false); + addedByPath = Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), false, connectionsGroup); - addedByPath = new ReduceTargets(addedByPath, addedTargets.getPlanNode()); + addedByPath = new ReduceTargets(addedByPath, addedTargets.getPlanNode(), connectionsGroup); addedByPath = effectiveTarget.extend(addedByPath, connectionsGroup, validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.left, false, null); - allTargets = UnionNode.getInstance(addedTargets.getPlanNode(), addedByPath); + allTargets = UnionNode.getInstance(connectionsGroup, addedTargets.getPlanNode(), addedByPath); 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 5c00a066fbe..8b7dcde0f50 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 @@ -89,7 +89,9 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections validationSettings, effectiveTarget); - allTargets = Unique.getInstance(UnionNode.getInstance(allTargets, allTargetsBasedOnPredicate), false); + allTargets = Unique.getInstance( + UnionNode.getInstance(connectionsGroup, allTargets, allTargetsBasedOnPredicate), false, + connectionsGroup); } else { allTargets = effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, @@ -99,7 +101,9 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections validationSettings, effectiveTarget); - allTargets = Unique.getInstance(UnionNode.getInstance(allTargets, allTargetsBasedOnPredicate), false); + allTargets = Unique.getInstance( + UnionNode.getInstance(connectionsGroup, allTargets, allTargetsBasedOnPredicate), false, + connectionsGroup); } } @@ -151,7 +155,8 @@ private PlanNode getAllTargetsBasedOnPredicate(ConnectionsGroup connectionsGroup PlanNode targetFilter2 = effectiveTarget.getTargetFilter(connectionsGroup, validationSettings.getDataGraph(), removedByPredicate); - return Unique.getInstance(UnionNode.getInstance(targetFilter1, targetFilter2), false); + return Unique.getInstance(UnionNode.getInstance(connectionsGroup, targetFilter1, targetFilter2), false, + connectionsGroup); } @Override @@ -163,7 +168,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - allTargetsPlan = new ShiftToPropertyShape(allTargetsPlan); + allTargetsPlan = new ShiftToPropertyShape(allTargetsPlan, connectionsGroup); // removed statements that match predicate could affect sh:or if (connectionsGroup.getStats().hasRemoved()) { @@ -181,7 +186,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, deletedPredicates); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, deletedPredicates); } // added statements that match predicate could affect sh:not @@ -200,10 +205,10 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, addedPredicates); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, addedPredicates); } - return Unique.getInstance(new TrimToTarget(allTargetsPlan), false); + return Unique.getInstance(new TrimToTarget(allTargetsPlan, connectionsGroup), false, connectionsGroup); } else { assert scope == Scope.nodeShape; @@ -224,7 +229,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .extend(deletedPredicates, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, deletedPredicates); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, deletedPredicates); } @@ -243,11 +248,11 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .extend(addedPredicates, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, addedPredicates); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, addedPredicates); } - return Unique.getInstance(allTargetsPlan, false); + return Unique.getInstance(allTargetsPlan, 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 8dbc6d39fce..c9f0c119ba7 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 @@ -59,7 +59,6 @@ public AbstractSimpleConstraintComponent(Resource id) { } public AbstractSimpleConstraintComponent() { - } public Resource getId() { @@ -92,17 +91,17 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections negatePlan, stableRandomVariableProvider, effectiveTarget, path); } else if (scope == Scope.nodeShape) { return effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, false, - p -> getFilterAttacherWithNegation(negatePlan, p)); + p -> getFilterAttacherWithNegation(negatePlan, p, connectionsGroup)); } else { PlanNode invalidValuesDirectOnPath = path.get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), - planNode -> getFilterAttacherWithNegation(negatePlan, planNode)); + planNode -> getFilterAttacherWithNegation(negatePlan, planNode, connectionsGroup)); PlanNode addedTargets = effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, false, null); - InnerJoin innerJoin = new InnerJoin(addedTargets, invalidValuesDirectOnPath); + InnerJoin innerJoin = new InnerJoin(addedTargets, invalidValuesDirectOnPath, connectionsGroup); if (connectionsGroup.getStats().wasEmptyBeforeTransaction()) { return innerJoin.getJoined(UnBufferedPlanNode.class); @@ -120,7 +119,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections scope, EffectiveTarget.Extend.left, true, null); - top = UnionNode.getInstance(top, typeFilterPlan); + top = UnionNode.getInstance(connectionsGroup, top, typeFilterPlan); PlanNode bulkedExternalInnerJoin = new BulkedExternalInnerJoin( effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, false, @@ -128,18 +127,19 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), path.get() - .getTargetQueryFragment(new StatementMatcher.Variable("a"), - new StatementMatcher.Variable("c"), + .getTargetQueryFragment(new Variable("a"), + new Variable("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), connectionsGroup.hasPreviousStateConnection(), connectionsGroup.getPreviousStateConnection(), b -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, - validationSettings.getDataGraph())); + validationSettings.getDataGraph()), + connectionsGroup); - top = UnionNode.getInstance(top, bulkedExternalInnerJoin); + top = UnionNode.getInstance(connectionsGroup, top, bulkedExternalInnerJoin); - return getFilterAttacherWithNegation(negatePlan, top); + return getFilterAttacherWithNegation(negatePlan, top, connectionsGroup); } } @@ -157,10 +157,10 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr if (overrideTargetPlanNode instanceof AllTargetsPlanNode) { PlanNode allTargets = effectiveTarget.getAllTargets(connectionsGroup, validationSettings.getDataGraph(), scope); - allTargets = getFilterAttacherWithNegation(negatePlan, allTargets); + allTargets = getFilterAttacherWithNegation(negatePlan, allTargets, connectionsGroup); if (effectiveTarget.size() > 1) { - allTargets = Unique.getInstance(allTargets, true); + allTargets = Unique.getInstance(allTargets, true, connectionsGroup); } return allTargets; } else { @@ -168,11 +168,11 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.right, false, - p -> getFilterAttacherWithNegation(negatePlan, p) + p -> getFilterAttacherWithNegation(negatePlan, p, connectionsGroup) ); if (effectiveTarget.size() > 1) { - extend = Unique.getInstance(extend, true); + extend = Unique.getInstance(extend, true, connectionsGroup); } return extend; @@ -189,12 +189,12 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getAllTargets(connectionsGroup, validationSettings.getDataGraph(), Scope.nodeShape); - allTargets = new ShiftToPropertyShape(allTargets); + allTargets = new ShiftToPropertyShape(allTargets, connectionsGroup); - allTargets = getFilterAttacherWithNegation(negatePlan, allTargets); + allTargets = getFilterAttacherWithNegation(negatePlan, allTargets, connectionsGroup); if (effectiveTarget.size() > 1) { - allTargets = Unique.getInstance(allTargets, true); + allTargets = Unique.getInstance(allTargets, true, connectionsGroup); } return allTargets; @@ -206,24 +206,24 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr EffectiveTarget.Extend.right, false, null); if (effectiveTarget.size() > 1) { - overrideTargetPlanNode = Unique.getInstance(overrideTargetPlanNode, true); + overrideTargetPlanNode = Unique.getInstance(overrideTargetPlanNode, true, connectionsGroup); } planNode = new BulkedExternalInnerJoin(overrideTargetPlanNode, connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), path.get() - .getTargetQueryFragment(new StatementMatcher.Variable("a"), - new StatementMatcher.Variable("c"), + .getTargetQueryFragment(new Variable("a"), + new Variable("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) - ); + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), + connectionsGroup); planNode = connectionsGroup.getCachedNodeFor(planNode); } } - return getFilterAttacherWithNegation(negatePlan, planNode); + return getFilterAttacherWithNegation(negatePlan, planNode, connectionsGroup); } @Override @@ -245,7 +245,7 @@ public ValidationQuery generateSparqlValidationQuery(ConnectionsGroup connection query += "\n" + getSparqlFilter(negatePlan, effectiveTarget.getTargetVar(), stableRandomVariableProvider); } else { - value = StatementMatcher.Variable.VALUE; + value = Variable.VALUE; Optional sparqlFragment = targetChain.getPath() .map(p -> p.getTargetQueryFragment(effectiveTarget.getTargetVar(), value, @@ -290,11 +290,12 @@ private String getSparqlFilter(boolean negatePlan, Variable variable, */ abstract String getSparqlFilterExpression(Variable variable, boolean negated); - private PlanNode getFilterAttacherWithNegation(boolean negatePlan, PlanNode allTargets) { + private PlanNode getFilterAttacherWithNegation(boolean negatePlan, PlanNode allTargets, + ConnectionsGroup connectionsGroup) { if (negatePlan) { - allTargets = getFilterAttacher().apply(allTargets).getTrueNode(UnBufferedPlanNode.class); + allTargets = getFilterAttacher(connectionsGroup).apply(allTargets).getTrueNode(UnBufferedPlanNode.class); } else { - allTargets = getFilterAttacher().apply(allTargets).getFalseNode(UnBufferedPlanNode.class); + allTargets = getFilterAttacher(connectionsGroup).apply(allTargets).getFalseNode(UnBufferedPlanNode.class); } return allTargets; } @@ -314,7 +315,7 @@ public SourceConstraintComponent getConstraintComponent() { throw new ShaclUnsupportedException(this.getClass().getSimpleName()); } - abstract Function getFilterAttacher(); + abstract Function getFilterAttacher(ConnectionsGroup connectionsGroup); String literalToString(Literal literal) { IRI datatype = (literal).getDatatype(); @@ -349,7 +350,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] null ); - return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), effectiveTarget.size() > 1); + return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), + effectiveTarget.size() > 1, connectionsGroup); } return EmptyNode.getInstance(); } 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 ddaef28934e..aa6bb4f8860 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 @@ -112,10 +112,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode planNode = and.stream() .map(a -> a.generateTransactionalValidationPlan(connectionsGroup, validationSettings, overrideTargetNode, scope)) - .reduce(UnionNode::getInstance) + .reduce((nodes, nodes2) -> UnionNode.getInstance(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); - return Unique.getInstance(planNode, false); + return Unique.getInstance(planNode, false, connectionsGroup); } @@ -126,10 +126,10 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .map(c -> c.getAllTargetsPlan(connectionsGroup, dataGraph, scope, new StatementMatcher.StableRandomVariableProvider())) .distinct() - .reduce(UnionNode::getInstanceDedupe) + .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); - planNode = Unique.getInstance(planNode, false); + planNode = Unique.getInstance(planNode, false, connectionsGroup); return planNode; } 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 368a86497cb..abd4a1a0fa3 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 @@ -94,13 +94,13 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getAllTargets(connectionsGroup, validationSettings.getDataGraph(), Scope.nodeShape); - allTargets = new ShiftToPropertyShape(allTargets); + allTargets = new ShiftToPropertyShape(allTargets, connectionsGroup); // filter by type against the base sail allTargets = new FilterByPredicateObject( connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), RDF.TYPE, clazzSet, - allTargets, false, FilterByPredicateObject.FilterOn.value, true); + allTargets, false, FilterByPredicateObject.FilterOn.value, true, connectionsGroup); return allTargets; @@ -119,9 +119,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = path.getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); addedByPath = effectiveTarget.getTargetFilter(connectionsGroup, - validationSettings.getDataGraph(), Unique.getInstance(new TrimToTarget(addedByPath), true)); + validationSettings.getDataGraph(), + Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), true, connectionsGroup)); - addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode()); + addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode(), + connectionsGroup); addedByPath = effectiveTarget.extend(addedByPath, connectionsGroup, validationSettings.getDataGraph(), scope, @@ -145,18 +147,19 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getTargetFilter(connectionsGroup, validationSettings.getDataGraph(), deletedTypes); - addedTargets = UnionNode.getInstance(addedTargets, - new TrimToTarget(new ShiftToPropertyShape(deletedTypes))); + addedTargets = UnionNode.getInstance(connectionsGroup, addedTargets, + new TrimToTarget(new ShiftToPropertyShape(deletedTypes, connectionsGroup), + connectionsGroup)); } - addedTargets = UnionNode.getInstance(addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false); + addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); + addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); } int size = effectiveTarget.size(); if (size > 1) { - addedTargets = Unique.getInstance(addedTargets, true); + addedTargets = Unique.getInstance(addedTargets, true, connectionsGroup); } PlanNode falseNode = new BulkedExternalInnerJoin( @@ -167,22 +170,22 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) - ); + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), + connectionsGroup); if (connectionsGroup.getAddedStatements() != null) { // filter by type against the added statements falseNode = new FilterByPredicateObject( connectionsGroup.getAddedStatements(), validationSettings.getDataGraph(), RDF.TYPE, clazzSet, - falseNode, false, FilterByPredicateObject.FilterOn.value, false); + falseNode, false, FilterByPredicateObject.FilterOn.value, false, connectionsGroup); } // filter by type against the base sail falseNode = new FilterByPredicateObject( connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), RDF.TYPE, clazzSet, - falseNode, false, FilterByPredicateObject.FilterOn.value, true); + falseNode, false, FilterByPredicateObject.FilterOn.value, true, connectionsGroup); return falseNode; @@ -213,7 +216,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections stableRandomVariableProvider) .extend(deletedTypes, connectionsGroup, validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.left, false, null); - addedTargets = UnionNode.getInstance(addedTargets, deletedTypes); + addedTargets = UnionNode.getInstance(connectionsGroup, addedTargets, deletedTypes); } } @@ -221,7 +224,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode falseNode = new FilterByPredicateObject( connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), RDF.TYPE, clazzSet, - addedTargets, false, FilterByPredicateObject.FilterOn.value, true); + addedTargets, false, FilterByPredicateObject.FilterOn.value, true, connectionsGroup); return falseNode; @@ -255,7 +258,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .extend(deletedTypes, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, deletedTypes); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, deletedTypes); } // added type statements that match clazz could affect sh:not @@ -273,10 +276,12 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .extend(addedTypes, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, addedTypes); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, addedTypes); } - return Unique.getInstance(new TrimToTarget(new ShiftToPropertyShape(allTargetsPlan)), false); + return Unique.getInstance( + new TrimToTarget(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), connectionsGroup), + false, connectionsGroup); } PlanNode allTargetsPlan = EmptyNode.getInstance(); @@ -293,7 +298,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .extend(deletedTypes, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, deletedTypes); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, deletedTypes); } @@ -310,11 +315,11 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .extend(addedTypes, connectionsGroup, dataGraph, Scope.nodeShape, EffectiveTarget.Extend.left, false, null); - allTargetsPlan = UnionNode.getInstanceDedupe(allTargetsPlan, addedTypes); + allTargetsPlan = UnionNode.getInstanceDedupe(connectionsGroup, allTargetsPlan, addedTypes); } - return Unique.getInstance(allTargetsPlan, false); + return Unique.getInstance(allTargetsPlan, false, connectionsGroup); } @Override 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 ac4fa3f2e4a..7977bd2f559 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 @@ -146,9 +146,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = path.getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); addedByPath = effectiveTarget.getTargetFilter(connectionsGroup, - validationSettings.getDataGraph(), Unique.getInstance(new TrimToTarget(addedByPath), false)); + validationSettings.getDataGraph(), + Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), false, connectionsGroup)); - addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode()); + addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode(), + connectionsGroup); addedByPath = effectiveTarget.extend(addedByPath, connectionsGroup, validationSettings.getDataGraph(), scope, @@ -173,11 +175,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getTargetFilter(connectionsGroup, validationSettings.getDataGraph(), addedByValue); - addedTargets = UnionNode.getInstance(addedTargets, - new TrimToTarget(new ShiftToPropertyShape(addedByValue))); + addedTargets = UnionNode.getInstance(connectionsGroup, addedTargets, + new TrimToTarget(new ShiftToPropertyShape(addedByValue, connectionsGroup), connectionsGroup)); - addedTargets = UnionNode.getInstance(addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false); + addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); + addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); } @@ -189,8 +191,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) - ); + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), + connectionsGroup); StatementMatcher.Variable subjectVariable = stableRandomVariableProvider.next(); StatementMatcher.Variable predicateVariable = stableRandomVariableProvider.next(); @@ -229,7 +231,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections return validationTuple; - }) + }, connectionsGroup) .getTrueNode(UnBufferedPlanNode.class); return falseNode1; @@ -258,10 +260,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections })); // then remove any that are in the addedTargets node - PlanNode notValuesIn = new ReduceTargets(unorderedSelect, addedTargets); + PlanNode notValuesIn = new ReduceTargets(unorderedSelect, addedTargets, connectionsGroup); // remove duplicates - PlanNode unique = Unique.getInstance(notValuesIn, false); + PlanNode unique = Unique.getInstance(notValuesIn, false, connectionsGroup); // then check that the rest are actually targets PlanNode targetFilter = effectiveTarget.getTargetFilter(connectionsGroup, @@ -273,8 +275,9 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.left, false, null); - targetNodePlanNode = UnionNode.getInstance(extend, effectiveTarget.getPlanNode(connectionsGroup, - validationSettings.getDataGraph(), scope, false, null)); + targetNodePlanNode = UnionNode.getInstance(connectionsGroup, extend, + effectiveTarget.getPlanNode(connectionsGroup, + validationSettings.getDataGraph(), scope, false, null)); } StatementMatcher.Variable predicateVariable = stableRandomVariableProvider.next(); @@ -288,7 +291,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections SparqlFragment sparqlFragment = SparqlFragment.join(List.of(bgp, sparqlFragmentFilter)); BulkedExternalInnerJoin bulkedExternalInnerJoin = new BulkedExternalInnerJoin( - Unique.getInstance(targetNodePlanNode, false), + Unique.getInstance(targetNodePlanNode, false, connectionsGroup), connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), sparqlFragment, @@ -313,8 +316,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections }); } return validationTuple; - } - ); + }, + connectionsGroup); return bulkedExternalInnerJoin; } @@ -345,7 +348,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] // then remove any that are in the targets node statementsNotMatchingPredicateList = new ReduceTargets(statementsNotMatchingPredicateList, - targets.getPlanNode()); + targets.getPlanNode(), connectionsGroup); // then check that the rest are actually targets statementsNotMatchingPredicateList = effectiveTarget.getTargetFilter(connectionsGroup, @@ -360,17 +363,18 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] UnorderedSelect.Mapper.SubjectScopedMapper.getFunction(scope), (statement -> !allAllowedPredicates.contains(statement.getPredicate()))); - removed = new ReduceTargets(removed, targets.getPlanNode()); + removed = new ReduceTargets(removed, targets.getPlanNode(), connectionsGroup); // then check that the rest are actually targets removed = effectiveTarget.getTargetFilter(connectionsGroup, dataGraph, removed); - statementsNotMatchingPredicateList = UnionNode.getInstance(statementsNotMatchingPredicateList, removed); + statementsNotMatchingPredicateList = UnionNode.getInstance(connectionsGroup, + statementsNotMatchingPredicateList, removed); } // union and remove duplicates - PlanNode unique = Unique.getInstance(statementsNotMatchingPredicateList, false); + PlanNode unique = Unique.getInstance(statementsNotMatchingPredicateList, false, connectionsGroup); // this should now be targets that are not valid PlanNode extend = effectiveTarget.extend(unique, connectionsGroup, @@ -389,9 +393,10 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] PlanNode addedByPath = path.getAllAdded(connectionsGroup, dataGraph, null); addedByPath = effectiveTarget.getTargetFilter(connectionsGroup, - dataGraph, Unique.getInstance(new TrimToTarget(addedByPath), false)); + dataGraph, + Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), false, connectionsGroup)); - addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode()); + addedByPath = new ReduceTargets(addedByPath, addedTargetsBufferedSplitter.getPlanNode(), connectionsGroup); addedByPath = effectiveTarget.extend(addedByPath, connectionsGroup, dataGraph, scope, @@ -410,7 +415,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] return !allAllowedPredicates.contains(statement.getPredicate()); })); - addedByValue = UnionNode.getInstance(addedByValue, removedByValue); + addedByValue = UnionNode.getInstance(connectionsGroup, addedByValue, removedByValue); addedByValue = getTargetChain() .getEffectiveTarget(Scope.nodeShape, @@ -424,11 +429,11 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) .getTargetFilter(connectionsGroup, dataGraph, addedByValue); - addedTargets = UnionNode.getInstance(addedTargets, - new TrimToTarget(new ShiftToPropertyShape(addedByValue))); + addedTargets = UnionNode.getInstance(connectionsGroup, addedTargets, + new TrimToTarget(new ShiftToPropertyShape(addedByValue, connectionsGroup), connectionsGroup)); - addedTargets = UnionNode.getInstance(addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false); + addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); + addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); return addedTargets; 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 276b2614489..450b0ce4ecd 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 @@ -112,14 +112,14 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections path.getTargetQueryFragment(new StatementMatcher.Variable("a"), new StatementMatcher.Variable("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, - validationSettings.getDataGraph()) - ); + validationSettings.getDataGraph()), + connectionsGroup); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group.stream().map(ValidationTuple::getValue).noneMatch(hasValueIn::contains); - }); + }, connectionsGroup); - return Unique.getInstance(new TrimToTarget(invalidTargets), false); + return Unique.getInstance(new TrimToTarget(invalidTargets, connectionsGroup), false, connectionsGroup); } else if (scope == Scope.nodeShape) { @@ -136,7 +136,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections null); } - PlanNode falseNode = new ValueInFilter(addedTargets, hasValueIn) + PlanNode falseNode = new ValueInFilter(addedTargets, hasValueIn, connectionsGroup) .getFalseNode(UnBufferedPlanNode.class); return falseNode; @@ -156,7 +156,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } return EmptyNode.getInstance(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DatatypeConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DatatypeConstraintComponent.java index 60bbfb510ad..b2571243577 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DatatypeConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DatatypeConstraintComponent.java @@ -28,6 +28,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.DatatypeFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class DatatypeConstraintComponent extends AbstractSimpleConstraintComponent { @@ -35,6 +36,7 @@ public class DatatypeConstraintComponent extends AbstractSimpleConstraintCompone private final IRI datatype; public DatatypeConstraintComponent(IRI datatype) { + super(); this.datatype = datatype; this.coreDatatype = CoreDatatype.from(datatype); } @@ -55,8 +57,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new DatatypeFilter(parent, datatype); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new DatatypeFilter(parent, datatype, connectionsGroup); } @Override 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 d629199c076..7dbfea97a80 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 @@ -93,12 +93,12 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = path.getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); addedByPath = target.getTargetFilter(connectionsGroup, validationSettings.getDataGraph(), - Unique.getInstance(new TrimToTarget(addedByPath), false)); + Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), false, connectionsGroup)); addedByPath = target.extend(addedByPath, connectionsGroup, validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.left, false, null); - addedTargets = UnionNode.getInstance(addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false); + addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); + addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); } PlanNode joined = new BulkedExternalLeftOuterJoin(addedTargets, connectionsGroup.getBaseConnection(), @@ -106,16 +106,17 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections 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())); + validationSettings.getDataGraph()), + connectionsGroup); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group .stream() .map(ValidationTuple::getValue) .noneMatch(v -> hasValue.equals(v)); - }); + }, connectionsGroup); - return Unique.getInstance(new TrimToTarget(invalidTargets), false); + return Unique.getInstance(new TrimToTarget(invalidTargets, connectionsGroup), false, connectionsGroup); } else if (scope == Scope.nodeShape) { @@ -129,7 +130,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections null); } - PlanNode falseNode = new ValueInFilter(addedTargets, new HashSet<>(Collections.singletonList(hasValue))) + PlanNode falseNode = new ValueInFilter(addedTargets, new HashSet<>(Collections.singletonList(hasValue)), + connectionsGroup) .getFalseNode(UnBufferedPlanNode.class); return falseNode; @@ -149,7 +151,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } return EmptyNode.getInstance(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/InConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/InConstraintComponent.java index 7a1fa3d2943..df2b549f8ad 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/InConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/InConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.ValueInFilter; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; public class InConstraintComponent extends AbstractSimpleConstraintComponent { @@ -98,8 +99,8 @@ private String getInSetAsString() { } @Override - Function getFilterAttacher() { - return (parent) -> new ValueInFilter(parent, in); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new ValueInFilter(parent, in, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/LanguageInConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/LanguageInConstraintComponent.java index 34e2829d0fc..a6542ae19aa 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/LanguageInConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/LanguageInConstraintComponent.java @@ -32,6 +32,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LanguageInFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; public class LanguageInConstraintComponent extends AbstractSimpleConstraintComponent { @@ -103,8 +104,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new LanguageInFilter(parent, lowerCaseLanguageIn, languageRanges); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new LanguageInFilter(parent, lowerCaseLanguageIn, languageRanges, connectionsGroup); } @Override 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 d52be57f429..a204fe88de0 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 @@ -96,7 +96,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections effectiveTarget, path.get(), false); } - mergeNode = Unique.getInstance(new TrimToTarget(mergeNode), false); + mergeNode = Unique.getInstance(new TrimToTarget(mergeNode, connectionsGroup), false, connectionsGroup); PlanNode relevantTargetsWithPath; @@ -112,8 +112,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) - ); + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), + connectionsGroup); } else { relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( mergeNode, @@ -125,15 +125,16 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, - validationSettings.getDataGraph()) - ); + validationSettings.getDataGraph()), + connectionsGroup); } relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); - PlanNode groupByCount = new GroupByCountFilter(relevantTargetsWithPath, count -> count > maxCount); + PlanNode groupByCount = new GroupByCountFilter(relevantTargetsWithPath, count -> count > maxCount, + connectionsGroup); - return Unique.getInstance(new TrimToTarget(groupByCount), false); + return Unique.getInstance(new TrimToTarget(groupByCount, connectionsGroup), false, connectionsGroup); } @@ -146,7 +147,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } return EmptyNode.getInstance(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxExclusiveConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxExclusiveConstraintComponent.java index 24b02279169..8f1ef0cd175 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxExclusiveConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxExclusiveConstraintComponent.java @@ -27,12 +27,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LiteralComparatorFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MaxExclusiveConstraintComponent extends AbstractSimpleConstraintComponent { Literal maxExclusive; public MaxExclusiveConstraintComponent(Literal maxExclusive) { + super(); this.maxExclusive = maxExclusive; } @@ -61,8 +63,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new LiteralComparatorFilter(parent, maxExclusive, Compare.CompareOp.GT); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new LiteralComparatorFilter(parent, maxExclusive, Compare.CompareOp.GT, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxInclusiveConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxInclusiveConstraintComponent.java index f29cacc1bc1..2713f231748 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxInclusiveConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxInclusiveConstraintComponent.java @@ -27,12 +27,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LiteralComparatorFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MaxInclusiveConstraintComponent extends AbstractSimpleConstraintComponent { Literal maxInclusive; public MaxInclusiveConstraintComponent(Literal maxInclusive) { + super(); this.maxInclusive = maxInclusive; } @@ -61,8 +63,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new LiteralComparatorFilter(parent, maxInclusive, Compare.CompareOp.GE); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new LiteralComparatorFilter(parent, maxInclusive, Compare.CompareOp.GE, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxLengthConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxLengthConstraintComponent.java index f5065ce7bea..63f3cd979d6 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxLengthConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxLengthConstraintComponent.java @@ -29,12 +29,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.MaxLengthFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MaxLengthConstraintComponent extends AbstractSimpleConstraintComponent { long maxLength; public MaxLengthConstraintComponent(long maxLength) { + super(); this.maxLength = maxLength; } @@ -54,8 +56,8 @@ String getSparqlFilterExpression(Variable variable, boolean negated) { } @Override - Function getFilterAttacher() { - return (parent) -> new MaxLengthFilter(parent, maxLength); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new MaxLengthFilter(parent, maxLength, connectionsGroup); } @Override 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 090c4310ef2..19ebb4c0787 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 @@ -82,8 +82,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); - LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath); - target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); + target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } } else { // we can assume that we are not doing bulk validation, so it is worth checking our added statements before @@ -97,26 +97,27 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); - LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath); - target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); + target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } PlanNode relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( - Unique.getInstance(new TrimToTarget(target), false), + Unique.getInstance(new TrimToTarget(target, connectionsGroup), false, connectionsGroup), connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), getTargetChain().getPath() .get() .getTargetQueryFragment(new StatementMatcher.Variable("a"), new StatementMatcher.Variable("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, - validationSettings.getDataGraph()) - ); + validationSettings.getDataGraph()), + connectionsGroup); relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); - PlanNode groupByCount = new GroupByCountFilter(relevantTargetsWithPath, count -> count < minCount); + PlanNode groupByCount = new GroupByCountFilter(relevantTargetsWithPath, count -> count < minCount, + connectionsGroup); - return Unique.getInstance(new TrimToTarget(groupByCount), false); + return Unique.getInstance(new TrimToTarget(groupByCount, connectionsGroup), false, connectionsGroup); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinExclusiveConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinExclusiveConstraintComponent.java index 1c758b36f54..b8448811711 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinExclusiveConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinExclusiveConstraintComponent.java @@ -27,12 +27,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LiteralComparatorFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MinExclusiveConstraintComponent extends AbstractSimpleConstraintComponent { Literal minExclusive; public MinExclusiveConstraintComponent(Literal minExclusive) { + super(); this.minExclusive = minExclusive; } @@ -61,8 +63,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new LiteralComparatorFilter(parent, minExclusive, Compare.CompareOp.LT); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new LiteralComparatorFilter(parent, minExclusive, Compare.CompareOp.LT, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinInclusiveConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinInclusiveConstraintComponent.java index 59d6e7b6d27..d9654cc37b8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinInclusiveConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinInclusiveConstraintComponent.java @@ -27,12 +27,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LiteralComparatorFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MinInclusiveConstraintComponent extends AbstractSimpleConstraintComponent { Literal minInclusive; public MinInclusiveConstraintComponent(Literal minInclusive) { + super(); this.minInclusive = minInclusive; } @@ -61,8 +63,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new LiteralComparatorFilter(parent, minInclusive, Compare.CompareOp.LE); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new LiteralComparatorFilter(parent, minInclusive, Compare.CompareOp.LE, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinLengthConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinLengthConstraintComponent.java index fed480fbd16..792cb8aaf45 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinLengthConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinLengthConstraintComponent.java @@ -29,12 +29,14 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.MinLengthFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class MinLengthConstraintComponent extends AbstractSimpleConstraintComponent { long minLength; public MinLengthConstraintComponent(long minLength) { + super(); this.minLength = minLength; } @@ -54,8 +56,8 @@ String getSparqlFilterExpression(Variable variable, boolean negated) { } @Override - Function getFilterAttacher() { - return (parent) -> new MinLengthFilter(parent, minLength); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new MinLengthFilter(parent, minLength, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NodeKindConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NodeKindConstraintComponent.java index c4635cd2089..e165851bb5b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NodeKindConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/NodeKindConstraintComponent.java @@ -23,16 +23,17 @@ import org.eclipse.rdf4j.model.vocabulary.SHACL; import org.eclipse.rdf4j.sail.shacl.SourceConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable; -import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.NodeKindFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class NodeKindConstraintComponent extends AbstractSimpleConstraintComponent { NodeKind nodeKind; public NodeKindConstraintComponent(Resource nodeKind) { + super(); this.nodeKind = NodeKind.from(nodeKind); } @@ -75,8 +76,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new NodeKindFilter(parent, nodeKind); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new NodeKindFilter(parent, nodeKind, connectionsGroup); } public enum NodeKind { 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 fe64942deb1..a4d4a208b2d 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 @@ -111,7 +111,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections scope ); - PlanNode invalid = Unique.getInstance(planNode, false); + PlanNode invalid = Unique.getInstance(planNode, false, connectionsGroup); PlanNode allTargetsPlan; if (overrideTargetNode != null) { @@ -122,7 +122,8 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections .extend(planNodeProvider.getPlanNode(), connectionsGroup, validationSettings.getDataGraph(), Scope.nodeShape, EffectiveTarget.Extend.right, false, null); - allTargetsPlan = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + allTargetsPlan = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } else { allTargetsPlan = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -136,7 +137,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections allTargetsPlan = planNodeProvider.getPlanNode(); } - invalid = new NotValuesIn(allTargetsPlan, invalid); + invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); return invalid; @@ -174,7 +175,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - allTargets = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + allTargets = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } else { allTargets = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -186,7 +188,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] PlanNode notTargets = not.getAllTargetsPlan(connectionsGroup, dataGraph, scope, new StatementMatcher.StableRandomVariableProvider()); - return Unique.getInstance(UnionNode.getInstanceDedupe(allTargets, notTargets), false); + return Unique.getInstance(UnionNode.getInstanceDedupe(connectionsGroup, allTargets, notTargets), false, + connectionsGroup); } @Override 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 b5dad58614e..89435c86954 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 @@ -133,10 +133,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections scope ) ) - .reduce((a, b) -> new EqualsJoinValue(a, b, false)) + .reduce((a, b) -> new EqualsJoinValue(a, b, false, connectionsGroup)) .orElse(EmptyNode.getInstance()); - return Unique.getInstance(orPlanNodes, false); + return Unique.getInstance(orPlanNodes, false, connectionsGroup); } @Override @@ -150,7 +150,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - allTargets = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + allTargets = Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } else { allTargets = getTargetChain() .getEffectiveTarget(scope, connectionsGroup.getRdfsSubClassOfReasoner(), @@ -163,10 +164,11 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] .map(or -> or.getAllTargetsPlan(connectionsGroup, dataGraph, scope, new StatementMatcher.StableRandomVariableProvider())) .distinct() - .reduce(UnionNode::getInstanceDedupe) + .reduce((nodes, nodes2) -> UnionNode.getInstanceDedupe(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); - return Unique.getInstance(UnionNode.getInstanceDedupe(allTargets, planNode), false); + return Unique.getInstance(UnionNode.getInstanceDedupe(connectionsGroup, allTargets, planNode), false, + connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/PatternConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/PatternConstraintComponent.java index 213563d2648..7e1f164a873 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/PatternConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/PatternConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.FilterPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PatternFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class PatternConstraintComponent extends AbstractSimpleConstraintComponent { @@ -36,6 +37,7 @@ public class PatternConstraintComponent extends AbstractSimpleConstraintComponen String flags; public PatternConstraintComponent(String pattern, String flags) { + super(); this.pattern = pattern; this.flags = flags; @@ -84,8 +86,8 @@ public ConstraintComponent deepClone() { } @Override - Function getFilterAttacher() { - return (parent) -> new PatternFilter(parent, pattern, flags); + Function getFilterAttacher(ConnectionsGroup connectionsGroup) { + return (parent) -> new PatternFilter(parent, pattern, flags, connectionsGroup); } @Override 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 bcbfa93250d..6394c2f9114 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 @@ -140,10 +140,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode planNode = negated(connectionsGroup, validationSettings, overrideTargetNode, scope); - planNode = new LeftOuterJoin(target, planNode); + planNode = new LeftOuterJoin(target, planNode, connectionsGroup); - GroupByCountFilter groupByCountFilter = new GroupByCountFilter(planNode, count -> count > qualifiedMaxCount); - return Unique.getInstance(new TrimToTarget(groupByCountFilter), false); + GroupByCountFilter groupByCountFilter = new GroupByCountFilter(planNode, count -> count > qualifiedMaxCount, + connectionsGroup); + return Unique.getInstance(new TrimToTarget(groupByCountFilter, connectionsGroup), false, connectionsGroup); } @@ -168,7 +169,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va false, null); } - target = Unique.getInstance(new TrimToTarget(target), false); + target = Unique.getInstance(new TrimToTarget(target, connectionsGroup), false, connectionsGroup); PlanNode relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( target, @@ -180,13 +181,13 @@ 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()) - ); + validationSettings.getDataGraph()), + connectionsGroup); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); return new ValidationTuple(targetChain, Scope.propertyShape, false, validationSettings.getDataGraph()); - }); + }, connectionsGroup); }; @@ -197,7 +198,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va scope ); - PlanNode invalid = Unique.getInstance(planNode, false); + PlanNode invalid = Unique.getInstance(planNode, false, connectionsGroup); PlanNode allTargetsPlan; @@ -213,7 +214,8 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va false, null); } - allTargetsPlan = Unique.getInstance(new TrimToTarget(allTargetsPlan), false); + allTargetsPlan = Unique.getInstance(new TrimToTarget(allTargetsPlan, connectionsGroup), false, + connectionsGroup); allTargetsPlan = new BulkedExternalLeftOuterJoin( allTargetsPlan, @@ -223,10 +225,10 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va .getTargetQueryFragment(new StatementMatcher.Variable("a"), new StatementMatcher.Variable("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, - validationSettings.getDataGraph()) - ); + validationSettings.getDataGraph()), + connectionsGroup); - invalid = new NotValuesIn(allTargetsPlan, invalid); + invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); return invalid; @@ -245,7 +247,9 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] PlanNode subTargets = qualifiedValueShape.getAllTargetsPlan(connectionsGroup, dataGraph, scope, new StatementMatcher.StableRandomVariableProvider()); - return Unique.getInstance(new TrimToTarget(UnionNode.getInstanceDedupe(allTargets, subTargets)), false); + 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 60dcca29b01..69c499a0fbc 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 @@ -143,10 +143,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode planNode = negated(connectionsGroup, validationSettings, overrideTargetNode, scope); - planNode = new LeftOuterJoin(target, planNode); + planNode = new LeftOuterJoin(target, planNode, connectionsGroup); - GroupByCountFilter groupByCountFilter = new GroupByCountFilter(planNode, count -> count < qualifiedMinCount); - return Unique.getInstance(new TrimToTarget(groupByCountFilter), false); + GroupByCountFilter groupByCountFilter = new GroupByCountFilter(planNode, count -> count < qualifiedMinCount, + connectionsGroup); + return Unique.getInstance(new TrimToTarget(groupByCountFilter, connectionsGroup), false, connectionsGroup); } @@ -175,7 +176,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va false, null); } - target = Unique.getInstance(new TrimToTarget(target), false); + target = Unique.getInstance(new TrimToTarget(target, connectionsGroup), false, connectionsGroup); PlanNode relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( target, @@ -187,13 +188,13 @@ 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()) - ); + validationSettings.getDataGraph()), + connectionsGroup); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); return new ValidationTuple(targetChain, Scope.propertyShape, false, validationSettings.getDataGraph()); - }); + }, connectionsGroup); }; @@ -204,7 +205,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va scope ); - PlanNode invalid = Unique.getInstance(planNode, false); + PlanNode invalid = Unique.getInstance(planNode, false, connectionsGroup); PlanNode allTargetsPlan; if (overrideTargetNode == null) { @@ -223,9 +224,11 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va allTargetsPlan = new ShiftToPropertyShape(getTargetChain() .getEffectiveTarget(Scope.nodeShape, connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider) - .getAllTargets(connectionsGroup, validationSettings.getDataGraph(), Scope.nodeShape)); + .getAllTargets(connectionsGroup, validationSettings.getDataGraph(), Scope.nodeShape), + connectionsGroup); } else { - allTargetsPlan = Unique.getInstance(new TrimToTarget(allTargetsPlan), false); + allTargetsPlan = Unique.getInstance(new TrimToTarget(allTargetsPlan, connectionsGroup), false, + connectionsGroup); allTargetsPlan = new BulkedExternalLeftOuterJoin( allTargetsPlan, connectionsGroup.getBaseConnection(), @@ -236,11 +239,11 @@ 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()) - ); + validationSettings.getDataGraph()), + connectionsGroup); } - invalid = new NotValuesIn(allTargetsPlan, invalid); + invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); return invalid; @@ -259,7 +262,9 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] PlanNode subTargets = qualifiedValueShape.getAllTargetsPlan(connectionsGroup, dataGraph, scope, new StatementMatcher.StableRandomVariableProvider()); - return Unique.getInstance(new TrimToTarget(UnionNode.getInstanceDedupe(allTargets, subTargets)), false); + 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/SparqlConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/SparqlConstraintComponent.java index efb17d8df57..512ae5b338b 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 @@ -172,7 +172,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections } if (effectiveTarget.size() > 1) { - allTargets = Unique.getInstance(allTargets, true); + allTargets = Unique.getInstance(allTargets, true, connectionsGroup); } return new SparqlConstraintSelect(connectionsGroup.getBaseConnection(), allTargets, select, 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 b1ac31d712a..453ff412372 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 @@ -140,12 +140,12 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - ); + connectionsGroup); - PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath); - return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang), false); + PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); + return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang, connectionsGroup), false, connectionsGroup); } if (connectionsGroup.getStats().wasEmptyBeforeTransaction()) { @@ -154,10 +154,11 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = path.get().getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); - PlanNode innerJoin = new InnerJoin(addedTargets, addedByPath).getJoined(UnBufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(addedTargets, addedByPath, connectionsGroup) + .getJoined(UnBufferedPlanNode.class); - PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(innerJoin); - return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang), false); + PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(innerJoin, connectionsGroup); + return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang, connectionsGroup), false, connectionsGroup); } PlanNode addedTargets = effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, @@ -166,17 +167,18 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = path.get().getAllAdded(connectionsGroup, validationSettings.getDataGraph(), null); addedByPath = effectiveTarget.getTargetFilter(connectionsGroup, - validationSettings.getDataGraph(), Unique.getInstance(new TrimToTarget(addedByPath), false)); + validationSettings.getDataGraph(), + Unique.getInstance(new TrimToTarget(addedByPath, connectionsGroup), false, connectionsGroup)); addedByPath = effectiveTarget.extend(addedByPath, connectionsGroup, validationSettings.getDataGraph(), scope, EffectiveTarget.Extend.left, false, null); - PlanNode mergeNode = UnionNode.getInstance(addedTargets, addedByPath); + PlanNode mergeNode = UnionNode.getInstance(connectionsGroup, addedTargets, addedByPath); - mergeNode = new TrimToTarget(mergeNode); + mergeNode = new TrimToTarget(mergeNode, connectionsGroup); - PlanNode allRelevantTargets = Unique.getInstance(mergeNode, false); + PlanNode allRelevantTargets = Unique.getInstance(mergeNode, false, connectionsGroup); PlanNode relevantTargetsWithPath = new BulkedExternalInnerJoin( allRelevantTargets, @@ -186,13 +188,13 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), false, null, - BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()) + BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - ); + connectionsGroup); - PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath); + PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); - return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang), false); + return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang, connectionsGroup), false, connectionsGroup); } @@ -205,7 +207,8 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] stableRandomVariableProvider) .getPlanNode(connectionsGroup, dataGraph, Scope.nodeShape, true, null); - return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan), true); + return Unique.getInstance(new ShiftToPropertyShape(allTargetsPlan, connectionsGroup), true, + connectionsGroup); } 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 76a8aa8f77e..2d40f5430f0 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 @@ -81,7 +81,7 @@ public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGr return paths .stream() .map(p -> p.getAllAdded(connectionsGroup, dataGraph, planNodeWrapper)) - .reduce(UnionNode::getInstance) + .reduce((nodes, nodes2) -> UnionNode.getInstance(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); } 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 b7231ced53c..eb2b3f72be4 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 @@ -59,7 +59,7 @@ public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGr PlanNode added = path.getAllAdded(connectionsGroup, dataGraph, null); added = new TupleMapper(added, t -> new ValidationTuple(t.getValue(), t.getActiveTarget(), - ConstraintComponent.Scope.propertyShape, true, dataGraph)); + ConstraintComponent.Scope.propertyShape, true, dataGraph), connectionsGroup); if (planNodeWrapper != null) { added = planNodeWrapper.apply(added); 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 fda18eb1b72..dab0aac9d7e 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 @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; import java.util.ArrayDeque; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.Set; @@ -50,7 +51,7 @@ TupleExpr parseQuery(String query) { return SparqlQueryParserCache.get(completeQuery); } - void runQuery(ArrayDeque left, ArrayDeque right, SailConnection connection, + void runQuery(Collection left, ArrayDeque right, SailConnection connection, TupleExpr parsedQuery, Dataset dataset, Resource[] dataGraph, boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection) { List newBindindingSet = buildBindingSets(left, connection, skipBasedOnPreviousConnection, @@ -92,7 +93,7 @@ public void meet(BindingSetAssignment node) { }); } - private List buildBindingSets(ArrayDeque left, SailConnection connection, + private List buildBindingSets(Collection left, SailConnection connection, boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection, Resource[] dataGraph) { return left.stream() diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java index d77d8223321..d48eb9a0779 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java @@ -41,6 +41,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.AbstractConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,7 +75,7 @@ public class BindSelect implements PlanNode { public BindSelect(SailConnection connection, Resource[] dataGraph, SparqlFragment query, List> vars, PlanNode source, List varNames, ConstraintComponent.Scope scope, int bulkSize, EffectiveTarget.Extend direction, - boolean includePropertyShapeValues) { + boolean includePropertyShapeValues, ConnectionsGroup connectionsGroup) { this.connection = connection; assert this.connection != null; this.mapper = (bindingSet) -> new ValidationTuple(bindingSet, varNames, scope, includePropertyShapeValues, @@ -83,7 +84,7 @@ public BindSelect(SailConnection connection, Resource[] dataGraph, SparqlFragmen this.scope = scope; this.vars = vars; this.bulkSize = bulkSize; - this.source = PlanNodeHelper.handleSorting(this, source); + this.source = PlanNodeHelper.handleSorting(this, source, connectionsGroup); if (query.getFragment().trim().equals("")) { throw new IllegalStateException(); 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 c8f0873a8e8..0863279f495 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 @@ -12,12 +12,14 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; import java.util.ArrayDeque; +import java.util.LinkedHashMap; import java.util.Objects; import java.util.function.Function; import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Resource; +import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.query.BindingSet; import org.eclipse.rdf4j.query.Dataset; import org.eclipse.rdf4j.query.algebra.TupleExpr; @@ -27,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -58,11 +61,11 @@ public class BulkedExternalInnerJoin extends AbstractBulkJoinPlanNode { public BulkedExternalInnerJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection, - Function mapper) { + Function mapper, ConnectionsGroup connectionsGroup) { super(); assert !skipBasedOnPreviousConnection || previousStateConnection != null; - this.leftNode = PlanNodeHelper.handleSorting(this, leftNode); + this.leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); this.query = query.getNamespacesForSparql() + StatementMatcher.StableRandomVariableProvider .normalize(query.getFragment()); this.connection = connection; @@ -91,14 +94,14 @@ public static Function getMapper(String a, String c public CloseableIteration iterator() { return new LoggingCloseableIteration(this, validationExecutionLogger) { - ArrayDeque left; + LinkedHashMap left; ArrayDeque right; ArrayDeque joined; private PeekMarkIterator leftNodeIterator; @Override protected void init() { - left = new ArrayDeque<>(BULK_SIZE); + left = new LinkedHashMap<>(BULK_SIZE * 3); right = new ArrayDeque<>(BULK_SIZE); joined = new ArrayDeque<>(BULK_SIZE); leftNodeIterator = new PeekMarkIterator<>(leftNode.iterator()); @@ -113,67 +116,30 @@ private void calculateNext() { while (joined.isEmpty() && leftNodeIterator.hasNext()) { while (left.size() < BULK_SIZE && leftNodeIterator.hasNext()) { - if (!left.isEmpty()) { - ValidationTuple peek = leftNodeIterator.peek(); - if (peek.sameTargetAs(left.getFirst())) { - // stop if we detect a duplicate target since we only support distinct targets on the - // left side of the join - assert false - : "Current and next left target is the same: " + peek + " " + left.getFirst(); - break; - } - } - left.addFirst(leftNodeIterator.next()); + ValidationTuple next = leftNodeIterator.next(); + ValidationTuple previousValue = left.put(next.getActiveTarget(), next); + assert previousValue == null : "We dont support duplicates on the left side of the join"; } if (parsedQuery == null) { parsedQuery = parseQuery(query); } - runQuery(left, right, connection, parsedQuery, dataset, dataGraph, skipBasedOnPreviousConnection, + runQuery(left.values(), right, connection, parsedQuery, dataset, dataGraph, + skipBasedOnPreviousConnection, previousStateConnection); while (!right.isEmpty()) { - ValidationTuple leftPeek = left.peekLast(); - - ValidationTuple rightPeek = right.peekLast(); - - assert leftPeek != null; - assert rightPeek != null; + ValidationTuple rightPeek = right.getLast(); + ValidationTuple leftPeek = left.get(rightPeek.getActiveTarget()); - assert leftPeek.getActiveTarget() != null; - assert rightPeek.getActiveTarget() != null; - - if (rightPeek.sameTargetAs(leftPeek)) { + if (leftPeek != null) { // we have a join ! joined.addLast(ValidationTupleHelper.join(leftPeek, rightPeek)); right.removeLast(); - - ValidationTuple rightPeek2 = right.peekLast(); - - if (rightPeek2 == null || !rightPeek2.sameTargetAs(leftPeek)) { - // no more to join from right, pop left so we don't print it again. - - left.removeLast(); - } } else { - int compare = rightPeek.compareActiveTarget(leftPeek); - - if (compare < 0) { - if (right.isEmpty()) { - throw new IllegalStateException(); - } - - right.removeLast(); - - } else { - if (left.isEmpty()) { - throw new IllegalStateException(); - } - left.removeLast(); - - } + right.removeLast(); } } @@ -283,4 +249,14 @@ public int hashCode() { return Objects.hash(super.hashCode(), connection, dataset, leftNode, skipBasedOnPreviousConnection, previousStateConnection, query); } + + @Override + public boolean producesSorted() { + return leftNode.producesSorted(); + } + + @Override + public boolean requiresSorted() { + return false; + } } 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 a1da130c6f4..b4c60a78a23 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 @@ -26,6 +26,7 @@ import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -45,9 +46,9 @@ public class BulkedExternalLeftOuterJoin extends AbstractBulkJoinPlanNode { public BulkedExternalLeftOuterJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, - Function mapper) { + Function mapper, ConnectionsGroup connectionsGroup) { super(); - leftNode = PlanNodeHelper.handleSorting(this, leftNode); + leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); this.leftNode = leftNode; this.query = query.getNamespacesForSparql() + StatementMatcher.StableRandomVariableProvider.normalize(query.getFragment()); 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 eba54296981..deeb33dfe2d 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 @@ -17,6 +17,7 @@ import org.eclipse.rdf4j.model.Literal; import org.eclipse.rdf4j.model.base.CoreDatatype; import org.eclipse.rdf4j.model.datatypes.XMLDatatypeUtil; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,8 +32,8 @@ public class DatatypeFilter extends FilterPlanNode { private final CoreDatatype.XSD xsdDatatype; private StackTraceElement[] stackTrace; - public DatatypeFilter(PlanNode parent, IRI datatype) { - super(parent); + public DatatypeFilter(PlanNode parent, IRI datatype, ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.datatype = datatype; this.xsdDatatype = CoreDatatype.from(datatype).asXSDDatatype().orElse(null); // stackTrace = Thread.currentThread().getStackTrace(); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoin.java index 4808927e750..3254c0b286f 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoin.java @@ -14,6 +14,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class EqualsJoin implements PlanNode { private final PlanNode left; @@ -22,9 +23,9 @@ public class EqualsJoin implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public EqualsJoin(PlanNode left, PlanNode right, boolean useAsFilter) { - this.left = PlanNodeHelper.handleSorting(this, left); - this.right = PlanNodeHelper.handleSorting(this, right); + public EqualsJoin(PlanNode left, PlanNode right, boolean useAsFilter, ConnectionsGroup connectionsGroup) { + this.left = PlanNodeHelper.handleSorting(this, left, connectionsGroup); + this.right = PlanNodeHelper.handleSorting(this, right, connectionsGroup); this.useAsFilter = useAsFilter; } 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 3551c681d4b..a8ee407df5a 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 @@ -14,6 +14,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class EqualsJoinValue implements PlanNode { private final PlanNode left; @@ -23,9 +24,9 @@ public class EqualsJoinValue implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public EqualsJoinValue(PlanNode left, PlanNode right, boolean useAsFilter) { - this.left = PlanNodeHelper.handleSorting(this, left); - this.right = PlanNodeHelper.handleSorting(this, right); + public EqualsJoinValue(PlanNode left, PlanNode right, boolean useAsFilter, ConnectionsGroup connectionsGroup) { + this.left = PlanNodeHelper.handleSorting(this, left, connectionsGroup); + this.right = PlanNodeHelper.handleSorting(this, right, connectionsGroup); this.useAsFilter = useAsFilter; // this.stackTrace = Thread.currentThread().getStackTrace(); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ExternalFilterByQuery.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ExternalFilterByQuery.java index 9336f1d426c..274533ebc25 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ExternalFilterByQuery.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ExternalFilterByQuery.java @@ -26,6 +26,7 @@ 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.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,8 +48,9 @@ public class ExternalFilterByQuery extends FilterPlanNode { public ExternalFilterByQuery(SailConnection connection, Resource[] dataGraph, PlanNode parent, SparqlFragment queryFragment, StatementMatcher.Variable queryVariable, - Function filterOn, BiFunction map) { - super(parent); + Function filterOn, BiFunction map, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.connection = connection; assert this.connection != null; this.queryVariable = queryVariable; 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 3072316acdf..028bf34a787 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 @@ -25,6 +25,7 @@ import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -45,9 +46,9 @@ public enum On { } public FilterByPredicate(SailConnection connection, Set filterOnPredicates, PlanNode parent, - On on, Resource[] dataGraph) { + On on, Resource[] dataGraph, ConnectionsGroup connectionsGroup) { this.dataGraph = dataGraph; - this.parent = PlanNodeHelper.handleSorting(this, parent); + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.connection = connection; assert this.connection != null; this.filterOnPredicates = 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 ee3372a53f6..5e44d8387da 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 @@ -25,6 +25,7 @@ import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.SailException; import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; @@ -50,9 +51,9 @@ public class FilterByPredicateObject implements PlanNode { public FilterByPredicateObject(SailConnection connection, Resource[] dataGraph, IRI filterOnPredicate, Set filterOnObject, PlanNode parent, boolean returnMatching, FilterOn filterOn, - boolean includeInferred) { + boolean includeInferred, ConnectionsGroup connectionsGroup) { this.dataGraph = dataGraph; - this.parent = PlanNodeHelper.handleSorting(this, parent); + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.connection = connection; assert this.connection != null; this.includeInferred = includeInferred; 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 f11004fa25d..a1879503fc4 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 @@ -16,6 +16,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.SailException; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,8 +38,8 @@ public abstract class FilterPlanNode implements MultiStreamPlanNode, PlanNode { abstract boolean checkTuple(Reference t); - public FilterPlanNode(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public FilterPlanNode(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); } 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 61961b42de5..bdf07046958 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 @@ -18,6 +18,7 @@ import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -27,8 +28,9 @@ public class FilterTargetIsObject extends FilterPlanNode { private final SailConnection connection; private final Resource[] dataGraph; - public FilterTargetIsObject(SailConnection connection, Resource[] dataGraph, PlanNode parent) { - super(parent); + public FilterTargetIsObject(SailConnection connection, Resource[] dataGraph, PlanNode parent, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.connection = connection; assert this.connection != null; this.dataGraph = dataGraph; 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 7ba6fdaef0a..02acb30e90f 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 @@ -18,6 +18,7 @@ import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.memory.MemoryStoreConnection; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -27,8 +28,9 @@ public class FilterTargetIsSubject extends FilterPlanNode { private final SailConnection connection; private final Resource[] dataGraph; - public FilterTargetIsSubject(SailConnection connection, Resource[] dataGraph, PlanNode parent) { - super(parent); + public FilterTargetIsSubject(SailConnection connection, Resource[] dataGraph, PlanNode parent, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.connection = connection; assert this.connection != null; this.dataGraph = dataGraph; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByCountFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByCountFilter.java index 2d95a212338..9c4c23d9e8e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByCountFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByCountFilter.java @@ -16,6 +16,7 @@ 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; @@ -31,8 +32,8 @@ public class GroupByCountFilter implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public GroupByCountFilter(PlanNode parent, Function filter) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public GroupByCountFilter(PlanNode parent, Function filter, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.filter = filter; } 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 3f3f7c523d2..765faab3ba0 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 @@ -19,6 +19,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -30,8 +31,9 @@ public class GroupByFilter implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public GroupByFilter(PlanNode parent, Function, Boolean> filter) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public GroupByFilter(PlanNode parent, Function, Boolean> filter, + ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.filter = filter; } 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 46af91faa94..d6265e37251 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 @@ -19,6 +19,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.SailException; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,9 +42,9 @@ public class InnerJoin implements MultiStreamPlanNode, PlanNode { private NotifyingPushablePlanNode discardedLeft; private NotifyingPushablePlanNode discardedRight; - public InnerJoin(PlanNode left, PlanNode right) { - this.left = PlanNodeHelper.handleSorting(this, left); - this.right = PlanNodeHelper.handleSorting(this, right); + public InnerJoin(PlanNode left, PlanNode right, ConnectionsGroup connectionsGroup) { + this.left = PlanNodeHelper.handleSorting(this, left, connectionsGroup); + this.right = PlanNodeHelper.handleSorting(this, right, connectionsGroup); // this.stackTrace = Thread.currentThread().getStackTrace(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LanguageInFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LanguageInFilter.java index 58736aee4c4..f12653e4adb 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LanguageInFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LanguageInFilter.java @@ -19,6 +19,7 @@ import org.eclipse.rdf4j.model.Literal; import org.eclipse.rdf4j.model.util.Literals; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,8 +33,9 @@ public class LanguageInFilter extends FilterPlanNode { private final List languageRanges; private final Set lowerCaseLanguageIn; - public LanguageInFilter(PlanNode parent, Set lowerCaseLanguageIn, List languageRanges) { - super(parent); + public LanguageInFilter(PlanNode parent, Set lowerCaseLanguageIn, List languageRanges, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.lowerCaseLanguageIn = lowerCaseLanguageIn; this.languageRanges = languageRanges; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LeftOuterJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LeftOuterJoin.java index b6a4e887f3e..bfe8c47d520 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LeftOuterJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LeftOuterJoin.java @@ -15,6 +15,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -26,9 +27,9 @@ public class LeftOuterJoin implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public LeftOuterJoin(PlanNode left, PlanNode right) { - this.left = PlanNodeHelper.handleSorting(this, left); - this.right = PlanNodeHelper.handleSorting(this, right); + public LeftOuterJoin(PlanNode left, PlanNode right, ConnectionsGroup connectionsGroup) { + this.left = PlanNodeHelper.handleSorting(this, left, connectionsGroup); + this.right = PlanNodeHelper.handleSorting(this, right, connectionsGroup); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LiteralComparatorFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LiteralComparatorFilter.java index a59e41f1719..099dfe14f4b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LiteralComparatorFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/LiteralComparatorFilter.java @@ -17,6 +17,7 @@ import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.query.algebra.Compare; import org.eclipse.rdf4j.query.algebra.evaluation.util.QueryEvaluationUtility; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -27,8 +28,9 @@ public class LiteralComparatorFilter extends FilterPlanNode { private final Compare.CompareOp compareOp; - public LiteralComparatorFilter(PlanNode parent, Literal compareTo, Compare.CompareOp compareOp) { - super(parent); + public LiteralComparatorFilter(PlanNode parent, Literal compareTo, Compare.CompareOp compareOp, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.compareTo = compareTo; this.compareOp = compareOp; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MaxLengthFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MaxLengthFilter.java index c2ef2b5482d..0f07104d20d 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MaxLengthFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MaxLengthFilter.java @@ -14,6 +14,7 @@ import java.util.Objects; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -22,8 +23,8 @@ public class MaxLengthFilter extends FilterPlanNode { private final long maxLength; - public MaxLengthFilter(PlanNode parent, long maxLength) { - super(parent); + public MaxLengthFilter(PlanNode parent, long maxLength, ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.maxLength = maxLength; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MinLengthFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MinLengthFilter.java index a8a673cc852..2e3fb3da695 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MinLengthFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/MinLengthFilter.java @@ -14,6 +14,7 @@ import java.util.Objects; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -22,8 +23,8 @@ public class MinLengthFilter extends FilterPlanNode { private final long minLength; - public MinLengthFilter(PlanNode parent, long minLength) { - super(parent); + public MinLengthFilter(PlanNode parent, long minLength, ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.minLength = minLength; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NodeKindFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NodeKindFilter.java index 86526d93b9c..957edc9e398 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NodeKindFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NodeKindFilter.java @@ -15,6 +15,7 @@ import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.NodeKindConstraintComponent; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,8 +28,9 @@ public class NodeKindFilter extends FilterPlanNode { private final NodeKindConstraintComponent.NodeKind nodeKind; - public NodeKindFilter(PlanNode parent, NodeKindConstraintComponent.NodeKind nodeKind) { - super(parent); + public NodeKindFilter(PlanNode parent, NodeKindConstraintComponent.NodeKind nodeKind, + ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.nodeKind = nodeKind; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NonUniqueTargetLang.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NonUniqueTargetLang.java index db07836974d..6ebeb1716ce 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NonUniqueTargetLang.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NonUniqueTargetLang.java @@ -20,6 +20,7 @@ import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Literal; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * This PlanNode takes a stream of Tuples like: (ex:companyA, "Company A"@en). It assumes that the stream is sorted on @@ -36,8 +37,8 @@ public class NonUniqueTargetLang implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public NonUniqueTargetLang(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public NonUniqueTargetLang(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java index d4cb09cc579..873455f431e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java @@ -19,6 +19,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class NotValuesIn implements PlanNode { @@ -27,8 +28,8 @@ public class NotValuesIn implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public NotValuesIn(PlanNode parent, PlanNode notIn) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public NotValuesIn(PlanNode parent, PlanNode notIn, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.notIn = notIn; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PatternFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PatternFilter.java index ca3f76614fb..c972ae0e3a0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PatternFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PatternFilter.java @@ -21,6 +21,7 @@ import org.eclipse.rdf4j.model.ValueFactory; import org.eclipse.rdf4j.model.impl.SimpleValueFactory; import org.eclipse.rdf4j.query.algebra.evaluation.util.QueryEvaluationUtility; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,8 +34,8 @@ public class PatternFilter extends FilterPlanNode { private final Pattern pattern; - public PatternFilter(PlanNode parent, String pattern, String flags) { - super(parent); + public PatternFilter(PlanNode parent, String pattern, String flags, ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); if (flags != null && !flags.isEmpty()) { int flag = 0b0; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java index b81cb2e68dc..716ea053d6c 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java @@ -17,6 +17,7 @@ import org.eclipse.rdf4j.model.vocabulary.RDF4J; import org.eclipse.rdf4j.query.Dataset; import org.eclipse.rdf4j.query.impl.SimpleDataset; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class PlanNodeHelper { @@ -27,14 +28,19 @@ public class PlanNodeHelper { rdf4jNilDataset.addDefaultGraph(RDF4J.NIL); } - public static PlanNode handleSorting(PlanNode child, PlanNode parent) { - return handleSorting(child.requiresSorted(), parent); + public static PlanNode handleSorting(PlanNode child, PlanNode parent, ConnectionsGroup connectionsGroup) { + return handleSorting(child.requiresSorted(), parent, connectionsGroup); } - public static PlanNode handleSorting(boolean requiresSorted, PlanNode parent) { + public static PlanNode handleSorting(boolean requiresSorted, PlanNode parent, ConnectionsGroup connectionsGroup) { if (requiresSorted) { if (!parent.producesSorted()) { - parent = new Sort(parent); + if (connectionsGroup != null && (parent instanceof BufferedSplitter.BufferedSplitterPlaneNode || + parent instanceof UnorderedSelect)) { + parent = connectionsGroup.getCachedNodeFor(new Sort(parent, connectionsGroup)); + } else { + parent = new Sort(parent, connectionsGroup); + } } } return parent; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java index 69e3b9afef6..1c494f7f9d8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java @@ -17,6 +17,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * Takes a parentToReduce and filters away any tuples that have an active target that exists in reductionSource @@ -28,8 +29,8 @@ public class ReduceTargets implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public ReduceTargets(PlanNode parentToReduce, PlanNode reductionSource) { - this.parentToReduce = PlanNodeHelper.handleSorting(this, parentToReduce); + public ReduceTargets(PlanNode parentToReduce, PlanNode reductionSource, ConnectionsGroup connectionsGroup) { + this.parentToReduce = PlanNodeHelper.handleSorting(this, parentToReduce, connectionsGroup); this.reductionSource = reductionSource; } 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 f5a8f46c975..ad64b910bac 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 @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class SetFilterNode implements PlanNode { @@ -28,8 +29,9 @@ public class SetFilterNode implements PlanNode { private boolean printed; private ValidationExecutionLogger validationExecutionLogger; - public SetFilterNode(Set targetNodeList, PlanNode parent, int index, boolean returnValid) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public SetFilterNode(Set targetNodeList, PlanNode parent, int index, boolean returnValid, + ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.targetNodeList = targetNodeList; this.index = index; this.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 0d0d3fa30b7..e78962815f4 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 @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -29,8 +30,8 @@ public class ShiftToNodeShape implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public ShiftToNodeShape(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public ShiftToNodeShape(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); // this.stackTrace = Thread.currentThread().getStackTrace(); } 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 fc2105f738c..0e501473858 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 @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -29,8 +30,8 @@ public class ShiftToPropertyShape implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public ShiftToPropertyShape(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public ShiftToPropertyShape(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); // this.stackTrace = Thread.currentThread().getStackTrace(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java index 285550c060e..c05dd3cfbd0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java @@ -17,6 +17,7 @@ import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.SailException; import org.eclipse.rdf4j.sail.shacl.ast.Shape; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * A plan node that can only be closed once @@ -29,8 +30,8 @@ public class SingleCloseablePlanNode implements PlanNode { private final Shape shape; boolean receivedLogger = false; - public SingleCloseablePlanNode(PlanNode parent, Shape shape) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public SingleCloseablePlanNode(PlanNode parent, Shape shape, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.shape = shape; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java index 70b98311500..5e63ad1a7c9 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java @@ -12,7 +12,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -20,6 +19,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class Sort implements PlanNode { @@ -27,8 +27,8 @@ public class Sort implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public Sort(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public Sort(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); } @Override @@ -70,13 +70,13 @@ protected void init() { } if (!alreadySorted && sortedTuples.size() > 1) { - if (sortedTuples.size() > 8192) { // MIN_ARRAY_SORT_GRAN in Arrays.parallelSort(...) - ValidationTuple[] objects = sortedTuples.toArray(new ValidationTuple[0]); - Arrays.parallelSort(objects, ValidationTuple::compareActiveTarget); - sortedTuples = Arrays.asList(objects); - } else { - sortedTuples.sort(ValidationTuple::compareActiveTarget); - } +// if (sortedTuples.size() > 8192) { // MIN_ARRAY_SORT_GRAN in Arrays.parallelSort(...) +// ValidationTuple[] objects = sortedTuples.toArray(new ValidationTuple[0]); +// Arrays.parallelSort(objects, ValidationTuple::compareActiveTarget); +// sortedTuples = Arrays.asList(objects); +// } else { + sortedTuples.sort(ValidationTuple::compareActiveTarget); +// } } sortedTuplesIterator = sortedTuples.iterator(); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TargetChainPopper.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TargetChainPopper.java index a27e447388c..d15987ab2ad 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TargetChainPopper.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TargetChainPopper.java @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * Pops the last target off of the target chain and into the value. @@ -34,8 +35,8 @@ public class TargetChainPopper implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public TargetChainPopper(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public TargetChainPopper(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); // this.stackTrace = Thread.currentThread().getStackTrace(); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java index ddccd356ff0..6ff501f063b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java @@ -15,6 +15,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class TrimToTarget implements PlanNode { @@ -25,8 +26,8 @@ public class TrimToTarget implements PlanNode { boolean keepPath = false; - public TrimToTarget(PlanNode parent) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public TrimToTarget(PlanNode parent, ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); // this.stackTrace = Thread.currentThread().getStackTrace(); } 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 c407b21431a..f9f3e0bfb92 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 @@ -16,6 +16,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class TupleMapper implements PlanNode { PlanNode parent; @@ -23,8 +24,9 @@ public class TupleMapper implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public TupleMapper(PlanNode parent, Function function) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public TupleMapper(PlanNode parent, Function function, + ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.function = function; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnionNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnionNode.java index a130e9c8729..ab21b5dc358 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnionNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnionNode.java @@ -18,6 +18,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.SailException; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -25,26 +26,28 @@ public class UnionNode implements PlanNode { private final HashSet nodesSet; + private final ConnectionsGroup connectionsGroup; private StackTraceElement[] stackTrace; private final PlanNode[] nodes; private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - private UnionNode(PlanNode... nodes) { + private UnionNode(ConnectionsGroup connectionsGroup, PlanNode... nodes) { this.nodes = nodes; this.nodesSet = new HashSet<>(Arrays.asList(nodes)); + this.connectionsGroup = connectionsGroup; // this.stackTrace = Thread.currentThread().getStackTrace(); } - public static PlanNode getInstance(PlanNode... nodes) { + public static PlanNode getInstance(ConnectionsGroup connectionsGroup, PlanNode... nodes) { PlanNode[] planNodes = Arrays.stream(nodes).filter(n -> !(n.isGuaranteedEmpty())).flatMap(n -> { if (n instanceof UnionNode) { return Arrays.stream(((UnionNode) n).nodes); } return Stream.of(n); - }).map(n -> PlanNodeHelper.handleSorting(true, n)).toArray(PlanNode[]::new); + }).map(n -> PlanNodeHelper.handleSorting(true, n, connectionsGroup)).toArray(PlanNode[]::new); if (planNodes.length == 1) { return planNodes[0]; @@ -53,17 +56,17 @@ public static PlanNode getInstance(PlanNode... nodes) { return EmptyNode.getInstance(); } - return new UnionNode(planNodes); + return new UnionNode(connectionsGroup, planNodes); } - public static PlanNode getInstanceDedupe(PlanNode... nodes) { + public static PlanNode getInstanceDedupe(ConnectionsGroup connectionsGroup, PlanNode... nodes) { PlanNode[] planNodes = Arrays.stream(nodes).filter(n -> !(n.isGuaranteedEmpty())).distinct().flatMap(n -> { if (n instanceof UnionNode) { return Arrays.stream(((UnionNode) n).nodes); } return Stream.of(n); - }).map(n -> PlanNodeHelper.handleSorting(true, n)).toArray(PlanNode[]::new); + }).map(n -> PlanNodeHelper.handleSorting(true, n, connectionsGroup)).toArray(PlanNode[]::new); if (planNodes.length == 1) { return planNodes[0]; @@ -72,7 +75,7 @@ public static PlanNode getInstanceDedupe(PlanNode... nodes) { return EmptyNode.getInstance(); } - return new UnionNode(planNodes); + return new UnionNode(connectionsGroup, planNodes); } 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 4ba1984e1e6..e5a0c4f17a5 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 @@ -24,6 +24,7 @@ import org.eclipse.rdf4j.sail.SailException; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.wrapper.data.CloseablePeakableIteration; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,9 +40,9 @@ public class Unique implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - private Unique(PlanNode parent, boolean compress) { + private Unique(PlanNode parent, boolean compress, ConnectionsGroup connectionsGroup) { // this.stackTrace = Thread.currentThread().getStackTrace(); - PlanNode tempParent = PlanNodeHelper.handleSorting(this, parent); + PlanNode tempParent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); if (tempParent instanceof Unique) { Unique parentUnique = ((Unique) tempParent); @@ -57,7 +58,7 @@ private Unique(PlanNode parent, boolean compress) { this.compress = compress; } - public static PlanNode getInstance(PlanNode parent, boolean compress) { + public static PlanNode getInstance(PlanNode parent, boolean compress, ConnectionsGroup connectionsGroup) { if (parent.isGuaranteedEmpty()) { return parent; } @@ -66,7 +67,7 @@ public static PlanNode getInstance(PlanNode parent, boolean compress) { return parent; } - return new Unique(parent, compress); + return new Unique(parent, compress, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java index 9810d2df145..80dd1c42d59 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java @@ -17,6 +17,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.sail.shacl.results.ValidationResult; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; public class ValidationReportNode implements PlanNode { @@ -25,8 +26,9 @@ public class ValidationReportNode implements PlanNode { private boolean printed = false; private ValidationExecutionLogger validationExecutionLogger; - public ValidationReportNode(PlanNode parent, Function validationResultFunction) { - this.parent = PlanNodeHelper.handleSorting(this, parent); + public ValidationReportNode(PlanNode parent, Function validationResultFunction, + ConnectionsGroup connectionsGroup) { + this.parent = PlanNodeHelper.handleSorting(this, parent, connectionsGroup); this.validationResultFunction = validationResultFunction; } 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 b73906c7a5b..dff0a687f15 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 @@ -16,6 +16,7 @@ import java.util.Set; import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; /** * @author Håvard Ottestad @@ -24,8 +25,8 @@ public class ValueInFilter extends FilterPlanNode { private final Set valueSet; - public ValueInFilter(PlanNode parent, Set valueSet) { - super(parent); + public ValueInFilter(PlanNode parent, Set valueSet, ConnectionsGroup connectionsGroup) { + super(parent, connectionsGroup); this.valueSet = valueSet; } 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 new file mode 100644 index 00000000000..c089cefe02e --- /dev/null +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt @@ -0,0 +1,896 @@ +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.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 new file mode 100644 index 00000000000..6ae9ee9f5c3 --- /dev/null +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt @@ -0,0 +1,896 @@ +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) +org.eclipse.rdf4j.sail.shacl.ast.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/DashAllObjects.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllObjects.java index 51f0634a488..8decbb793ec 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllObjects.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllObjects.java @@ -57,21 +57,22 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope); + return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope, connectionsGroup); } private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] dataGraph, - ConstraintComponent.Scope scope) { + ConstraintComponent.Scope scope, ConnectionsGroup connectionsGroup) { return Unique.getInstance(new UnorderedSelect(connection, null, - null, null, dataGraph, UnorderedSelect.Mapper.ObjectScopedMapper.getFunction(scope), null), false); + null, null, dataGraph, UnorderedSelect.Mapper.ObjectScopedMapper.getFunction(scope), null), false, + connectionsGroup); } @Override public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNode parent) { - return new FilterTargetIsObject(connectionsGroup.getBaseConnection(), dataGraph, parent) + return new FilterTargetIsObject(connectionsGroup.getBaseConnection(), dataGraph, parent, connectionsGroup) .getTrueNode(UnBufferedPlanNode.class); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllSubjects.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllSubjects.java index b55de730338..292e2176188 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllSubjects.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/DashAllSubjects.java @@ -55,21 +55,22 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope); + return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope, connectionsGroup); } private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] dataGraph, - ConstraintComponent.Scope scope) { + ConstraintComponent.Scope scope, ConnectionsGroup connectionsGroup) { return Unique.getInstance(new UnorderedSelect(connection, null, - null, null, dataGraph, UnorderedSelect.Mapper.SubjectScopedMapper.getFunction(scope), null), false); + null, null, dataGraph, UnorderedSelect.Mapper.SubjectScopedMapper.getFunction(scope), null), false, + connectionsGroup); } @Override public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNode parent) { - return new FilterTargetIsSubject(connectionsGroup.getBaseConnection(), dataGraph, parent) + return new FilterTargetIsSubject(connectionsGroup.getBaseConnection(), dataGraph, parent, connectionsGroup) .getTrueNode(UnBufferedPlanNode.class); } 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 30c06c3f9d0..df9d06e818d 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 @@ -126,29 +126,30 @@ public PlanNode extend(PlanNode source, ConnectionsGroup connectionsGroup, Resou if (varNames.size() == 1) { PlanNode parent = new TupleMapper(source, - new ActiveTargetTupleMapper(scope, includePropertyShapeValues, dataGraph)); + new ActiveTargetTupleMapper(scope, includePropertyShapeValues, dataGraph), connectionsGroup); if (filter != null) { parent = filter.apply(parent); } return connectionsGroup - .getCachedNodeFor(getTargetFilter(connectionsGroup, dataGraph, Unique.getInstance(parent, false))); + .getCachedNodeFor(getTargetFilter(connectionsGroup, dataGraph, + Unique.getInstance(parent, false, connectionsGroup))); } else { SparqlFragment query = getQueryFragment(includePropertyShapeValues); PlanNode parent = new BindSelect(connectionsGroup.getBaseConnection(), dataGraph, query, vars, source, varNames, scope, - 1000, direction, includePropertyShapeValues); + 1000, direction, includePropertyShapeValues, connectionsGroup); if (filter != null) { parent = connectionsGroup.getCachedNodeFor(parent); parent = filter.apply(parent); - parent = Unique.getInstance(parent, true); + parent = Unique.getInstance(parent, true, connectionsGroup); return parent; } else { return connectionsGroup.getCachedNodeFor( - Unique.getInstance(parent, true)); + Unique.getInstance(parent, true, connectionsGroup)); } } @@ -311,9 +312,19 @@ public PlanNode getPlanNode(ConnectionsGroup connectionsGroup, Resource[] dataGr } if (filter != null) { - return connectionsGroup.getCachedNodeFor(Unique.getInstance(filter.apply(targetsPlanNode), true)); + if (chain.size() > 1) { + return connectionsGroup.getCachedNodeFor( + Unique.getInstance(filter.apply(targetsPlanNode), true, connectionsGroup)); + } else { + return connectionsGroup.getCachedNodeFor(filter.apply(targetsPlanNode)); + } } else { - return connectionsGroup.getCachedNodeFor(Unique.getInstance(targetsPlanNode, true)); + if (chain.size() > 1) { + return connectionsGroup + .getCachedNodeFor(Unique.getInstance(targetsPlanNode, true, connectionsGroup)); + } else { + return connectionsGroup.getCachedNodeFor(targetsPlanNode); + } } } @@ -345,7 +356,7 @@ public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] da // TODO: this is a slow way to solve this problem! We should use bulk operations. return new ExternalFilterByQuery(connectionsGroup.getBaseConnection(), dataGraph, parent, sparqlFragment, last.var, - ValidationTuple::getActiveTarget, null) + ValidationTuple::getActiveTarget, null, connectionsGroup) .getTrueNode(UnBufferedPlanNode.class); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/RSXTargetShape.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/RSXTargetShape.java index 6965f476374..a8dd7c92920 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/RSXTargetShape.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/RSXTargetShape.java @@ -96,7 +96,7 @@ private PlanNode getAddedRemovedInner(ConnectionsGroup connectionsGroup, Resourc sparqlFragment, vars, scope, - false), false); + false), false, connectionsGroup); } @@ -113,7 +113,7 @@ public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] da // TODO: this is a slow way to solve this problem! We should use bulk operations. return new ExternalFilterByQuery(connectionsGroup.getBaseConnection(), dataGraph, parent, sparqlFragment, variable, - ValidationTuple::getActiveTarget, null).getTrueNode(UnBufferedPlanNode.class); + ValidationTuple::getActiveTarget, null, connectionsGroup).getTrueNode(UnBufferedPlanNode.class); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/SparqlTarget.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/SparqlTarget.java index da22b013fdb..d066d112cdc 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/SparqlTarget.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/SparqlTarget.java @@ -114,7 +114,7 @@ public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] da // TODO: this is a slow way to solve this problem! We should use bulk operations. return new ExternalFilterByQuery(connectionsGroup.getBaseConnection(), dataGraph, parent, sparqlFragment, StatementMatcher.Variable.THIS, - ValidationTuple::getActiveTarget, null).getTrueNode(UnBufferedPlanNode.class); + ValidationTuple::getActiveTarget, null, connectionsGroup).getTrueNode(UnBufferedPlanNode.class); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java index 3e4e06116c6..994bee85833 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java @@ -56,11 +56,11 @@ public IRI getPredicate() { @Override public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope); + return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope, connectionsGroup); } private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] dataGraph, - ConstraintComponent.Scope scope) { + ConstraintComponent.Scope scope, ConnectionsGroup connectionsGroup) { PlanNode planNode; if (targetClass.size() == 1) { Resource clazz = targetClass.stream().findAny().get(); @@ -74,7 +74,7 @@ private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] data "?a", b -> new ValidationTuple(b.getValue("a"), scope, false, dataGraph), dataGraph); } - return Unique.getInstance(planNode, false); + return Unique.getInstance(planNode, false, connectionsGroup); } String getQueryFragment(String subjectVariable, String objectVariable, @@ -116,20 +116,23 @@ public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] da FilterByPredicateObject typeFoundInAdded = new FilterByPredicateObject( connectionsGroup.getAddedStatements(), dataGraph, RDF.TYPE, targetClass, - bufferedSplitter.getPlanNode(), true, FilterByPredicateObject.FilterOn.activeTarget, false); + bufferedSplitter.getPlanNode(), true, FilterByPredicateObject.FilterOn.activeTarget, false, + connectionsGroup); FilterByPredicateObject typeNotFoundInAdded = new FilterByPredicateObject( connectionsGroup.getAddedStatements(), dataGraph, RDF.TYPE, targetClass, - bufferedSplitter.getPlanNode(), false, FilterByPredicateObject.FilterOn.activeTarget, false); + bufferedSplitter.getPlanNode(), false, FilterByPredicateObject.FilterOn.activeTarget, false, + connectionsGroup); FilterByPredicateObject filterAgainstBaseConnection = new FilterByPredicateObject( connectionsGroup.getBaseConnection(), dataGraph, RDF.TYPE, targetClass, typeNotFoundInAdded, true, - FilterByPredicateObject.FilterOn.activeTarget, true); + FilterByPredicateObject.FilterOn.activeTarget, true, connectionsGroup); - return new Sort(UnionNode.getInstance(typeFoundInAdded, filterAgainstBaseConnection)); + return new Sort(UnionNode.getInstance(connectionsGroup, typeFoundInAdded, filterAgainstBaseConnection), + connectionsGroup); } else { return new FilterByPredicateObject(connectionsGroup.getBaseConnection(), dataGraph, RDF.TYPE, - targetClass, parent, true, FilterByPredicateObject.FilterOn.activeTarget, true); + targetClass, parent, true, FilterByPredicateObject.FilterOn.activeTarget, true, connectionsGroup); } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetNode.java index 34c1045258a..2bb4ad9a5f1 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetNode.java @@ -57,7 +57,7 @@ public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph @Override public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNode parent) { - return new SetFilterNode(targetNodes, parent, 0, true); + return new SetFilterNode(targetNodes, parent, 0, true, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetObjectsOf.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetObjectsOf.java index 3d7504ba77a..2633682efce 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetObjectsOf.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetObjectsOf.java @@ -59,26 +59,26 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope); + return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope, connectionsGroup); } private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] dataGraph, - ConstraintComponent.Scope scope) { + ConstraintComponent.Scope scope, ConnectionsGroup connectionsGroup) { PlanNode planNode = targetObjectsOf.stream() .map(predicate -> (PlanNode) new UnorderedSelect(connection, null, predicate, null, dataGraph, UnorderedSelect.Mapper.ObjectScopedMapper.getFunction(scope), null)) - .reduce(UnionNode::getInstance) + .reduce((nodes, nodes2) -> UnionNode.getInstance(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); - return Unique.getInstance(planNode, false); + return Unique.getInstance(planNode, false, connectionsGroup); } @Override public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNode parent) { return new FilterByPredicate(connectionsGroup.getBaseConnection(), targetObjectsOf, parent, - FilterByPredicate.On.Object, dataGraph); + FilterByPredicate.On.Object, dataGraph, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetSubjectsOf.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetSubjectsOf.java index 72111f319c6..2d5e866f81f 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetSubjectsOf.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetSubjectsOf.java @@ -59,27 +59,27 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope); + return getAddedRemovedInner(connectionsGroup.getAddedStatements(), dataGraph, scope, connectionsGroup); } private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] dataGraph, - ConstraintComponent.Scope scope) { + ConstraintComponent.Scope scope, ConnectionsGroup connectionsGroup) { PlanNode planNode = targetSubjectsOf.stream() .map(predicate -> (PlanNode) new UnorderedSelect(connection, null, predicate, null, dataGraph, UnorderedSelect.Mapper.SubjectScopedMapper.getFunction(scope), null)) - .reduce(UnionNode::getInstance) + .reduce((nodes, nodes2) -> UnionNode.getInstance(connectionsGroup, nodes, nodes2)) .orElse(EmptyNode.getInstance()); - return Unique.getInstance(planNode, false); + return Unique.getInstance(planNode, false, connectionsGroup); } @Override public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNode parent) { return new FilterByPredicate(connectionsGroup.getBaseConnection(), targetSubjectsOf, parent, - FilterByPredicate.On.Subject, dataGraph); + FilterByPredicate.On.Subject, dataGraph, connectionsGroup); } @Override diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/EqualsJoinTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/EqualsJoinTest.java index ef00e2961f6..26775365afa 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/EqualsJoinTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/EqualsJoinTest.java @@ -41,7 +41,7 @@ public void testSimple01() { PlanNode left = new MockInputPlanNode(List.of("a")); PlanNode right = new MockInputPlanNode(List.of("a"), List.of("b")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, false); + EqualsJoin equalsJoin = new EqualsJoin(left, right, false, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); @@ -55,7 +55,7 @@ public void testSimple02() { PlanNode left = new MockInputPlanNode(List.of("a"), List.of("c")); PlanNode right = new MockInputPlanNode(List.of("a"), List.of("b"), List.of("c")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, false); + EqualsJoin equalsJoin = new EqualsJoin(left, right, false, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); @@ -69,7 +69,7 @@ public void testSimple03() { PlanNode right = new MockInputPlanNode(List.of("a"), List.of("c")); PlanNode left = new MockInputPlanNode(List.of("a"), List.of("b"), List.of("c")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, false); + EqualsJoin equalsJoin = new EqualsJoin(left, right, false, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); @@ -83,7 +83,7 @@ public void testSimple04() { PlanNode left = new MockInputPlanNode(List.of("b"), List.of("c")); PlanNode right = new MockInputPlanNode(List.of("a"), List.of("d"), List.of("e")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, false); + EqualsJoin equalsJoin = new EqualsJoin(left, right, false, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); @@ -97,7 +97,7 @@ public void testSimple05() { PlanNode left = new MockInputPlanNode(List.of("b"), List.of("c")); PlanNode right = new MockInputPlanNode(List.of("a"), List.of("d"), List.of("c")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, false); + EqualsJoin equalsJoin = new EqualsJoin(left, right, false, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); @@ -113,7 +113,7 @@ public void testSimple06() { PlanNode right = new MockInputPlanNode(Arrays.asList("a", "1"), Arrays.asList("b", "1"), Arrays.asList("b", "1"), Arrays.asList("c", "1")); - EqualsJoin equalsJoin = new EqualsJoin(left, right, true); + EqualsJoin equalsJoin = new EqualsJoin(left, right, true, null); List tuples = new MockConsumePlanNode(equalsJoin).asList(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/InnerJoinTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/InnerJoinTest.java index aeb1324dee5..da8d83be01b 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/InnerJoinTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/InnerJoinTest.java @@ -42,7 +42,7 @@ public void testSimple() { PlanNode left = new MockInputPlanNode(List.of("a")); PlanNode right = new MockInputPlanNode(Arrays.asList("a", "b")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -58,7 +58,7 @@ public void testSimple2() { PlanNode left = new MockInputPlanNode(List.of("a1"), List.of("a2")); PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -74,7 +74,7 @@ public void testSimple3() { PlanNode left = new MockInputPlanNode(List.of("a1"), List.of("a2")); PlanNode right = new MockInputPlanNode(Arrays.asList("a2", "b")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -90,7 +90,7 @@ public void testSimple4() { PlanNode left = new MockInputPlanNode(List.of("a1"), List.of("a2")); PlanNode right = new MockInputPlanNode(List.of()); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -106,7 +106,7 @@ public void testSimple5() { PlanNode left = new MockInputPlanNode(); PlanNode right = new MockInputPlanNode(List.of("a1"), List.of("a2")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -124,7 +124,7 @@ public void testSimple6() { PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2"), Arrays.asList("a3", "b3"), Arrays.asList("a4", "b4")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -141,7 +141,7 @@ public void testSimple7() { PlanNode left = new MockInputPlanNode(List.of("a1"), List.of("a2")); PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -158,7 +158,7 @@ public void testSimple8() { PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2"), Arrays.asList("a3", "b3")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -176,7 +176,7 @@ public void testSimple9() { PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2"), Arrays.asList("a2", "b22"), Arrays.asList("a3", "b3"), Arrays.asList("a4", "b4")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -195,7 +195,7 @@ public void testSimple10() { PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2"), Arrays.asList("a2", "b22"), Arrays.asList("a4", "b4")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -214,7 +214,7 @@ public void testSimple11() { PlanNode right = new MockInputPlanNode(Arrays.asList("a2", "b2"), Arrays.asList("a2", "b22"), Arrays.asList("a4", "b4")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -231,7 +231,7 @@ public void testSimple12() { List.of("a4")); PlanNode right = new MockInputPlanNode(Arrays.asList("a2", "b2"), Arrays.asList("a2", "b22")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); @@ -249,7 +249,7 @@ public void testSimple13() { PlanNode right = new MockInputPlanNode(Arrays.asList("a1", "b1"), Arrays.asList("a1", "b11"), Arrays.asList("a2", "b2"), Arrays.asList("a2", "b22")); - PlanNode innerJoin = new InnerJoin(left, right).getJoined(BufferedPlanNode.class); + PlanNode innerJoin = new InnerJoin(left, right, null).getJoined(BufferedPlanNode.class); List tuples = new MockConsumePlanNode(innerJoin).asList(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UniqueTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UniqueTest.java index 11d1347349e..16e04b43cc3 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UniqueTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UniqueTest.java @@ -82,7 +82,7 @@ public void compressPropertyShape2() { Arrays.asList("a", "a", "2") ); - PlanNode unique = Unique.getInstance(input, true); + PlanNode unique = Unique.getInstance(input, true, null); List tuples = new MockConsumePlanNode(unique).asList(); @@ -91,7 +91,7 @@ public void compressPropertyShape2() { } private void runTest(MockInputPlanNode input, boolean compress) { - PlanNode unique = Unique.getInstance(input, compress); + PlanNode unique = Unique.getInstance(input, compress, null); List tuples = new MockConsumePlanNode(unique).asList(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java index 5568410f292..1cf6d74fe2d 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java @@ -119,7 +119,7 @@ public static void main(String[] args) throws InterruptedException { complexLargeBenchmark.setUp(); for (int i = 0; i < 20; i++) { System.out.println(i); - complexLargeBenchmark.noPreloadingNonEmptyParallel(); + complexLargeBenchmark.noPreloadingNonEmptyParallelRemoved(); } complexLargeBenchmark.teardown(); } @@ -406,6 +406,7 @@ public void noPreloadingNonEmptyParallelRemoved() { Utils.getInitializedShaclSail("complexBenchmark/shacl.trig")); ((ShaclSail) repository.getSail()).setTransactionalValidationLimit(1000000); +// ((ShaclSail) repository.getSail()).setPerformanceLogging(true); try (SailRepositoryConnection connection = repository.getConnection()) { connection.begin(IsolationLevels.NONE, ShaclSail.TransactionSettings.ValidationApproach.Disabled); 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 new file mode 100644 index 00000000000..8464583871b --- /dev/null +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright (c) 2024 Eclipse RDF4J contributors. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Distribution License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * SPDX-License-Identifier: BSD-3-Clause + *******************************************************************************/ + +package org.eclipse.rdf4j.sail.shacl.benchmark; + +import java.net.URL; +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; +import org.eclipse.rdf4j.sail.shacl.ShaclSail; +import org.eclipse.rdf4j.sail.shacl.ShaclSailConnection; +import org.eclipse.rdf4j.sail.shacl.ShaclSailValidationException; +import org.eclipse.rdf4j.sail.shacl.Utils; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.slf4j.LoggerFactory; + +import ch.qos.logback.classic.Logger; + +/** + * @author Håvard Ottestad + */ +@State(Scope.Benchmark) +@Warmup(iterations = 5) +@BenchmarkMode({ Mode.AverageTime }) +@Fork(value = 1, jvmArgs = { "-Xmx64M" }) +//@Fork(value = 1, jvmArgs = { "-Xms8G", "-Xmx8G", "-XX:StartFlightRecording=delay=15s,duration=120s,filename=recording.jfr,settings=profile", "-XX:FlightRecorderOptions=samplethreads=true,stackdepth=1024", "-XX:+UnlockDiagnosticVMOptions", "-XX:+DebugNonSafepoints" }) +@Measurement(iterations = 5) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class SparqlConstraintsBenchmarkEmpty { + + private List> allStatements; + + @Setup(Level.Trial) + public void setUp() throws InterruptedException { + Logger root = (Logger) LoggerFactory.getLogger(ShaclSailConnection.class.getName()); + root.setLevel(ch.qos.logback.classic.Level.INFO); + + System.gc(); + Thread.sleep(100); + } + + @Benchmark + public void shacl() throws Exception { + + SailRepository repository = new SailRepository(Utils.getInitializedShaclSail("benchmark/sparql/shacl.trig")); + + try (SailRepositoryConnection connection = repository.getConnection()) { + for (int i = 0; i < 10; i++) { + connection.begin(); + URL data = SparqlConstraintsBenchmarkEmpty.class.getClassLoader() + .getResource("benchmark/sparql/data.ttl"); + connection.add(data, RDFFormat.TURTLE); + try { + connection.commit(); + } catch (Exception e) { + + Model statements = ((ShaclSailValidationException) e.getCause()).validationReportAsModel(); + for (Statement statement : statements) { + System.out.println(statement); + } + System.exit(0); + connection.rollback(); + } + } + } + repository.shutDown(); + + } + + @Benchmark + public void shaclBulk() throws Exception { + + SailRepository repository = new SailRepository(Utils.getInitializedShaclSail("benchmark/sparql/shacl.trig")); + + try (SailRepositoryConnection connection = repository.getConnection()) { + connection.begin(ShaclSail.TransactionSettings.ValidationApproach.Bulk); + for (int i = 0; i < 10; i++) { + URL data = SparqlConstraintsBenchmarkEmpty.class.getClassLoader() + .getResource("benchmark/sparql/data.ttl"); + connection.add(data, RDFFormat.TURTLE); + } + connection.commit(); + } + repository.shutDown(); + + } + +} diff --git a/core/sail/shacl/src/test/resources/benchmark/sparql/data.ttl b/core/sail/shacl/src/test/resources/benchmark/sparql/data.ttl new file mode 100644 index 00000000000..cc2cc40587c --- /dev/null +++ b/core/sail/shacl/src/test/resources/benchmark/sparql/data.ttl @@ -0,0 +1,1114 @@ +@prefix : . +@prefix ont: . +@prefix vocsh: . +@prefix so: . +@prefix affected: . +@prefix res: . +@prefix dct: . +@prefix gn: . +@prefix owl: . +@prefix puml: . +@prefix rdf: . +@prefix rdfs: . +@prefix skos: . +@prefix void: . +@prefix wgs84: . +@prefix xsd: . +@prefix sh: . +@prefix dash: . +@prefix rsx: . +@prefix ec: . +@prefix ecinst: . +@prefix rdf4j: . +@prefix ex: . + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + + + + +[] a ex:Country ; + ex:knows [] . + + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + + +[] a ex:Country ; + ex:knows [] . + diff --git a/core/sail/shacl/src/test/resources/benchmark/sparql/shacl.trig b/core/sail/shacl/src/test/resources/benchmark/sparql/shacl.trig new file mode 100644 index 00000000000..da7ca2c5dec --- /dev/null +++ b/core/sail/shacl/src/test/resources/benchmark/sparql/shacl.trig @@ -0,0 +1,53 @@ +@prefix : . +@prefix ont: . +@prefix vocsh: . +@prefix so: . +@prefix affected: . +@prefix res: . +@prefix dct: . +@prefix gn: . +@prefix owl: . +@prefix puml: . +@prefix rdf: . +@prefix rdfs: . +@prefix skos: . +@prefix void: . +@prefix wgs84: . +@prefix xsd: . +@prefix sh: . +@prefix dash: . +@prefix rsx: . +@prefix ec: . +@prefix ecinst: . +@prefix rdf4j: . +@prefix ex: . + +rdf4j:SHACLShapeGraph { + +ex: + sh:declare [ + sh:prefix "ex" ; + sh:namespace "http://example.com/ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "schema" ; + sh:namespace "http://schema.org/"^^xsd:anyURI ; + ] . + + ex:LanguageExamplePropertyShape + a sh:PropertyShape ; + sh:targetClass ex:Country ; + sh:path ex:knows ; + sh:sparql [ + a sh:SPARQLConstraint ; + sh:message "Values are blank nodes." ; + sh:prefixes ex: ; + sh:select """ + SELECT $this ?value + WHERE { + $this $PATH ?value . + FILTER (!isBlank(?value)) + } + """ ; + ] . +} From 10eb88ee625f25fdc66f8f2c117bbc8470297fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Avard=20Ottestad?= Date: Thu, 29 Aug 2024 14:54:46 +0200 Subject: [PATCH 2/3] wip --- .../rdf4j/sail/shacl/ShaclSailConnection.java | 5 +- .../rdf4j/sail/shacl/ShaclValidator.java | 4 +- .../sail/shacl/ShapeValidationContainer.java | 57 +++++++++++++- .../AbstractConstraintComponent.java | 2 +- .../ClassConstraintComponent.java | 2 +- .../ClosedConstraintComponent.java | 6 +- .../OrConstraintComponent.java | 2 +- .../sail/shacl/ast/planNodes/BindSelect.java | 14 ++-- .../shacl/ast/planNodes/BufferedSplitter.java | 28 +++++-- .../planNodes/BulkedExternalInnerJoin.java | 14 ++-- .../BulkedExternalLeftOuterJoin.java | 14 ++-- .../ast/planNodes/FilterByPredicate.java | 14 ++-- .../planNodes/FilterByPredicateObject.java | 74 ++++++++++++------- .../sail/shacl/ast/planNodes/Formatter.java | 34 +++++---- .../sail/shacl/ast/planNodes/NotValuesIn.java | 11 ++- .../sail/shacl/ast/planNodes/PlanNode.java | 20 +++++ .../shacl/ast/planNodes/PlanNodeHelper.java | 12 +-- .../shacl/ast/planNodes/ReduceTargets.java | 10 ++- .../sail/shacl/ast/planNodes/Select.java | 14 ++-- .../planNodes/SingleCloseablePlanNode.java | 2 +- .../rdf4j/sail/shacl/ast/planNodes/Sort.java | 17 +++-- .../shacl/ast/planNodes/TrimToTarget.java | 3 +- .../sail/shacl/ast/planNodes/Unique.java | 1 - .../shacl/ast/planNodes/UnorderedSelect.java | 14 ++-- .../ast/planNodes/ValidationReportNode.java | 3 + .../sail/shacl/ast/targets/TargetClass.java | 4 +- .../shacl/wrapper/data/ConnectionsGroup.java | 7 +- .../shacl/benchmark/ClassBenchmarkEmpty.java | 10 +++ .../benchmark/ComplexLargeBenchmark.java | 5 +- 29 files changed, 269 insertions(+), 134 deletions(-) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSailConnection.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSailConnection.java index 1e0416e76ad..829fdd91766 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSailConnection.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSailConnection.java @@ -524,8 +524,9 @@ private ValidationReport performValidation(List shapes, boolea sail.isPerformanceLogging())), sail.isGlobalLogValidationExecution(), sail.isLogValidationViolations(), sail.getEffectiveValidationResultsLimitPerConstraint(), sail.isPerformanceLogging(), - logger - )) + sail.isLogValidationPlans(), + logger, + connectionsGroup)) .filter(ShapeValidationContainer::hasPlanNode) .map(validationContainer -> validationContainer::performValidation); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclValidator.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclValidator.java index f6222b4117b..ed9442c0ef7 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclValidator.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclValidator.java @@ -115,8 +115,8 @@ private static ValidationReport performValidation(List shapes, () -> contextWithShape.getShape() .generatePlans(connectionsGroup, new ValidationSettings(contextWithShape.getDataGraph(), false, true, false)), - false, false, 1000, false, logger - ) + false, false, 1000, false, false, logger, + connectionsGroup) ) .filter(ShapeValidationContainer::hasPlanNode) .map(ShapeValidationContainer::performValidation) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java index 85b40bf1cf3..9f951a94bb1 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java @@ -11,11 +11,14 @@ package org.eclipse.rdf4j.sail.shacl; +import java.util.Arrays; import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; +import org.apache.commons.text.StringEscapeUtils; import org.eclipse.rdf4j.common.iteration.CloseableIteration; +import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.SailException; import org.eclipse.rdf4j.sail.shacl.ast.Shape; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; @@ -23,6 +26,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.ValidationExecutionLogger; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.ValidationTuple; import org.eclipse.rdf4j.sail.shacl.results.lazy.ValidationResultIterator; +import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.slf4j.Logger; class ShapeValidationContainer { @@ -36,7 +40,7 @@ class ShapeValidationContainer { public ShapeValidationContainer(Shape shape, Supplier planNodeSupplier, boolean logValidationExecution, boolean logValidationViolations, long effectiveValidationResultsLimitPerConstraint, - boolean performanceLogging, Logger logger) { + boolean performanceLogging, boolean logValidationPlans, Logger logger, ConnectionsGroup connectionsGroup) { this.shape = shape; this.logValidationViolations = logValidationViolations; this.effectiveValidationResultsLimitPerConstraint = effectiveValidationResultsLimitPerConstraint; @@ -44,6 +48,56 @@ public ShapeValidationContainer(Shape shape, Supplier planNodeSupplier this.logger = logger; try { PlanNode planNode = planNodeSupplier.get(); + + if (logValidationPlans) { + + StringBuilder planAsGraphvizDot = new StringBuilder(); + + planAsGraphvizDot.append( + "rank1 [style=invisible];\n" + + "rank2 [style=invisible];\n" + + "\n" + + "rank1 -> rank2 [color=white];\n"); + + planAsGraphvizDot.append("{\n") + .append("\trank = same;\n") + .append("\trank2 -> ") + .append(System.identityHashCode(connectionsGroup.getBaseConnection())) + .append(" -> ") + .append(System.identityHashCode(connectionsGroup.getAddedStatements())) + .append(" -> ") + .append(System.identityHashCode(connectionsGroup.getRemovedStatements())) + .append(" [ style=invis ];\n") + .append("\trankdir = LR;\n") + .append("}\n"); + + planAsGraphvizDot.append(System.identityHashCode(connectionsGroup.getBaseConnection())) + .append(" [label=\"") + .append("BaseConnection") + .append("\" fillcolor=\"#CACADB\", style=filled];") + .append("\n"); + + planAsGraphvizDot.append(System.identityHashCode(connectionsGroup.getAddedStatements())) + .append(" [label=\"") + .append("AddedStatements") + .append("\" fillcolor=\"#CEDBCA\", style=filled];") + .append("\n"); + + planAsGraphvizDot.append(System.identityHashCode(connectionsGroup.getRemovedStatements())) + .append(" [label=\"") + .append("RemovedStatements") + .append("\" fillcolor=\"#DBCFC9r\", style=filled];") + .append("\n"); + + planNode.getPlanAsGraphvizDot(planAsGraphvizDot); + + String[] split = planAsGraphvizDot.toString().split("\n"); + planAsGraphvizDot = new StringBuilder(); + Arrays.stream(split).map(s -> "\t" + s + "\n").forEach(planAsGraphvizDot::append); + + logger.info("Plan as Graphviz dot:\ndigraph G {\n{}}", planAsGraphvizDot); + } + this.validationExecutionLogger = ValidationExecutionLogger .getInstance(logValidationExecution); if (!(planNode.isGuaranteedEmpty())) { @@ -113,7 +167,6 @@ private void handlePostLogging(long before, ValidationResultIterator validationR } if (validationResults != null) { - if (performanceLogging) { long after = System.currentTimeMillis(); logger.info("Execution of plan took {} ms for:\n{}\n", 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 aab697c03fe..f3a6413a5cb 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 @@ -155,7 +155,7 @@ static PlanNode getAllTargetsIncludingThoseAddedByPath(ConnectionsGroup connecti ValidationSettings validationSettings, Scope scope, EffectiveTarget effectiveTarget, Path path, boolean includeTargetsAffectedByRemoval) { PlanNode allTargets; - BufferedSplitter addedTargets = new BufferedSplitter( + BufferedSplitter addedTargets = BufferedSplitter.getInstance( effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, includeTargetsAffectedByRemoval, null)); 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 abd4a1a0fa3..8dde6295aff 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 @@ -112,7 +112,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections } } else { - BufferedSplitter addedTargetsBufferedSplitter = new BufferedSplitter( + BufferedSplitter addedTargetsBufferedSplitter = BufferedSplitter.getInstance( effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, false, null)); addedTargets = addedTargetsBufferedSplitter.getPlanNode(); 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 7977bd2f559..64bf3dcc2f0 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 @@ -139,7 +139,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null); } else { - BufferedSplitter addedTargetsBufferedSplitter = new BufferedSplitter( + BufferedSplitter addedTargetsBufferedSplitter = BufferedSplitter.getInstance( effectiveTarget.getPlanNode(connectionsGroup, validationSettings.getDataGraph(), scope, false, null)); addedTargets = addedTargetsBufferedSplitter.getPlanNode(); @@ -336,7 +336,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] throw new IllegalStateException(); case nodeShape: - BufferedSplitter targets = new BufferedSplitter( + BufferedSplitter targets = BufferedSplitter.getInstance( effectiveTarget.getPlanNode(connectionsGroup, dataGraph, scope, false, null)); // get all subjects of all triples where the predicate is not in the allAllowedPredicates set @@ -386,7 +386,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] case propertyShape: Path path = getTargetChain().getPath().get(); - BufferedSplitter addedTargetsBufferedSplitter = new BufferedSplitter( + BufferedSplitter addedTargetsBufferedSplitter = BufferedSplitter.getInstance( effectiveTarget.getPlanNode(connectionsGroup, dataGraph, scope, false, null)); PlanNode addedTargets = addedTargetsBufferedSplitter.getPlanNode(); 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 89435c86954..db9c6744675 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 @@ -119,7 +119,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections if (overrideTargetNode != null) { planNodeProvider = overrideTargetNode; } else { - planNodeProvider = new BufferedSplitter( + planNodeProvider = BufferedSplitter.getInstance( getAllTargetsPlan(connectionsGroup, validationSettings.getDataGraph(), scope, stableRandomVariableProvider), false); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java index d48eb9a0779..c0ad89dfab0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BindSelect.java @@ -323,13 +323,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder - .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) - .append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder +// .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) +// .append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); +// } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BufferedSplitter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BufferedSplitter.java index df62ca822f0..ef571fc554f 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BufferedSplitter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BufferedSplitter.java @@ -41,18 +41,34 @@ public class BufferedSplitter implements PlanNodeProvider { private final boolean cached; private volatile List tuplesBuffer; private long id = -1; + private boolean printed; - public BufferedSplitter(PlanNode parent, boolean cached) { + private BufferedSplitter(PlanNode parent, boolean cached) { this.parent = parent; this.cached = cached; id = idCounter.incrementAndGet(); - } - public BufferedSplitter(PlanNode parent) { + private BufferedSplitter(PlanNode parent) { this(parent, true); } + public static BufferedSplitter getInstance(PlanNode parent) { + if (parent instanceof BufferedSplitterPlaneNode + && ((BufferedSplitterPlaneNode) parent).bufferedSplitter.cached == true) { + return ((BufferedSplitterPlaneNode) parent).bufferedSplitter; + } + return new BufferedSplitter(parent); + } + + public static BufferedSplitter getInstance(PlanNode parent, boolean cached) { + if (parent instanceof BufferedSplitterPlaneNode + && ((BufferedSplitterPlaneNode) parent).bufferedSplitter.cached == cached) { + return ((BufferedSplitterPlaneNode) parent).bufferedSplitter; + } + return new BufferedSplitter(parent, cached); + } + private synchronized void init() { if (tuplesBuffer == null) { tuplesBuffer = new ArrayList<>(); @@ -156,10 +172,10 @@ public int depth() { @Override public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { - if (printed) { + if (bufferedSplitter.printed) { return; } - printed = true; + bufferedSplitter.printed = true; stringBuilder.append(getId() + " [label=\"" + StringEscapeUtils.escapeJava(this.toString()) + "\"];") .append("\n"); stringBuilder.append(bufferedSplitter.parent.getId() + " -> " + getId()).append("\n"); @@ -173,7 +189,7 @@ public String getId() { @Override public String toString() { - return "BufferedSplitter"; + return "BufferedSplitter" + (cached ? " (cached)" : ""); } @Override 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 0863279f495..c48e3ee02c6 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 @@ -189,13 +189,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " - + getId() + " [label=\"right\"]").append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"right\"]") - .append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " +// + getId() + " [label=\"right\"]").append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"right\"]") + .append("\n"); +// } if (skipBasedOnPreviousConnection) { 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 b4c60a78a23..8ea6b629229 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 @@ -183,13 +183,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " - + getId() + " [label=\"right\"]").append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"right\"]") - .append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " +// + getId() + " [label=\"right\"]").append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"right\"]") + .append("\n"); +// } stringBuilder.append(leftNode.getId() + " -> " + getId() + " [label=\"left\"]").append("\n"); 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 028bf34a787..8c5b49b0218 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 @@ -175,13 +175,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " - + getId() + " [label=\"filter source\"]").append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"filter source\"]") - .append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " +// + getId() + " [label=\"filter source\"]").append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"filter source\"]") + .append("\n"); +// } parent.getPlanAsGraphvizDot(stringBuilder); } 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 5e44d8387da..9a44baba198 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 @@ -47,7 +47,7 @@ public class FilterByPredicateObject implements PlanNode { private ValidationExecutionLogger validationExecutionLogger; private final Resource[] dataGraph; - private final Cache cache = CacheBuilder.newBuilder().maximumSize(1000).build(); + private final Cache cache; public FilterByPredicateObject(SailConnection connection, Resource[] dataGraph, IRI filterOnPredicate, Set filterOnObject, PlanNode parent, boolean returnMatching, FilterOn filterOn, @@ -61,6 +61,13 @@ public FilterByPredicateObject(SailConnection connection, Resource[] dataGraph, this.filterOnObject = filterOnObject; this.filterOn = filterOn; this.returnMatching = returnMatching; + + if (connection instanceof MemoryStoreConnection) { + cache = null; + } else { + cache = CacheBuilder.newBuilder().maximumSize(10000).build(); + } + // this.stackTrace = Thread.currentThread().getStackTrace(); } @@ -203,26 +210,37 @@ private boolean matches(Value subject, IRI filterOnPredicate, Resource[] filterO } if (subject.isResource()) { - try { - return cache.get(((Resource) subject), () -> { - for (Resource object : filterOnObject) { - if (connection.hasStatement(((Resource) subject), filterOnPredicate, object, includeInferred, - dataGraph)) { - return true; - } - } - return false; - }); - } catch (ExecutionException e) { - if (e.getCause() != null) { - if (e.getCause() instanceof RuntimeException) { - throw ((RuntimeException) e.getCause()); - } - throw new SailException(e.getCause()); + + if (cache == null) { + return matchesUnCached((Resource) subject, filterOnPredicate, filterOnObject); + } else { + return matchesCached((Resource) subject, filterOnPredicate, filterOnObject); + } + + } + return false; + } + + private Boolean matchesCached(Resource subject, IRI filterOnPredicate, Resource[] filterOnObject) { + try { + return cache.get(subject, () -> matchesUnCached(subject, filterOnPredicate, filterOnObject)); + } catch (ExecutionException e) { + if (e.getCause() != null) { + if (e.getCause() instanceof RuntimeException) { + throw ((RuntimeException) e.getCause()); } - throw new SailException(e); + throw new SailException(e.getCause()); } + throw new SailException(e); + } + } + private boolean matchesUnCached(Resource subject, IRI filterOnPredicate, Resource[] filterOnObject) { + for (Resource object : filterOnObject) { + if (connection.hasStatement(subject, filterOnPredicate, object, includeInferred, + dataGraph)) { + return true; + } } return false; } @@ -244,13 +262,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " - + getId() + " [label=\"filter source\"]").append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"filter source\"]") - .append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder.append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " +// + getId() + " [label=\"filter source\"]").append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId() + " [label=\"filter source\"]") + .append("\n"); +// } parent.getPlanAsGraphvizDot(stringBuilder); } @@ -323,8 +341,10 @@ public int hashCode() { @Override public String toString() { - return "ExternalPredicateObjectFilter{" + "filterOnObject=" + filterOnObject + ", filterOnPredicate=" - + filterOnPredicate + ", filterOn=" + filterOn + ", parent=" + parent + ", returnMatching=" + return "ExternalPredicateObjectFilter{" + "filterOnObject=" + PlanNode.prefix(filterOnObject) + + ", filterOnPredicate=" + + PlanNode.prefix(filterOnPredicate) + ", filterOn=" + filterOn + ", returnMatching=" + returnMatching + '}'; } + } 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 9a40c914d73..6628f3d0988 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,11 +10,18 @@ *******************************************************************************/ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; +import java.util.List; + 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.DCAT; +import org.eclipse.rdf4j.model.vocabulary.FOAF; import org.eclipse.rdf4j.model.vocabulary.RDF; import org.eclipse.rdf4j.model.vocabulary.RDFS; import org.eclipse.rdf4j.model.vocabulary.SHACL; +import org.eclipse.rdf4j.model.vocabulary.XSD; public class Formatter { @@ -28,20 +35,19 @@ public static String prefix(Value in) { String namespace = ((IRI) in).getNamespace(); - if (namespace.equals(RDF.NAMESPACE)) { - return in.toString().replace(RDF.NAMESPACE, RDF.PREFIX + ":"); - } - if (namespace.equals(RDFS.NAMESPACE)) { - return in.toString().replace(RDFS.NAMESPACE, RDFS.PREFIX + ":"); - } - if (namespace.equals(SHACL.NAMESPACE)) { - return in.toString().replace(SHACL.NAMESPACE, SHACL.PREFIX + ":"); - } - if (namespace.equals("http://example.com/ns#")) { - return in.toString().replace("http://example.com/ns#", "ex:"); - } - if (namespace.equals("http://www.w3.org/2001/XMLSchema#")) { - return in.toString().replace("http://www.w3.org/2001/XMLSchema#", "xsd:"); + List namespaces = List.of( + RDF.NS, + SHACL.NS, + FOAF.NS, + DCAT.NS, + new SimpleNamespace("http://example.com/ns#", "ex"), + XSD.NS + ); + + for (Namespace ns : namespaces) { + if (namespace.equals(ns.getName())) { + return ns.getPrefix() + ":" + ((IRI) in).getLocalName(); + } } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java index 873455f431e..553ec6b88eb 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/NotValuesIn.java @@ -117,6 +117,12 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { .append(StringEscapeUtils.escapeJava(this.toString())) .append("\"];") .append("\n"); + + stringBuilder.append(parent.getId() + " -> " + getId()).append("\n"); + stringBuilder.append(notIn.getId() + " -> " + getId()).append("\n"); + parent.getPlanAsGraphvizDot(stringBuilder); + notIn.getPlanAsGraphvizDot(stringBuilder); + } @Override @@ -126,10 +132,7 @@ public String getId() { @Override public String toString() { - return "NotValuesIn{" + - "parent=" + parent + - ", notIn=" + notIn + - '}'; + return "NotValuesIn"; } @Override 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 9af9725b150..99cd22d3fa1 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,13 +11,33 @@ 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.IRI; +import org.eclipse.rdf4j.model.Resource; +import org.eclipse.rdf4j.model.Value; +import org.eclipse.rdf4j.model.vocabulary.FOAF; +import org.eclipse.rdf4j.model.vocabulary.RDF; /** * @author Håvard Mikkelsen Ottestad */ 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/PlanNodeHelper.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java index 716ea053d6c..7b98a31981d 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNodeHelper.java @@ -35,12 +35,12 @@ public static PlanNode handleSorting(PlanNode child, PlanNode parent, Connection public static PlanNode handleSorting(boolean requiresSorted, PlanNode parent, ConnectionsGroup connectionsGroup) { if (requiresSorted) { if (!parent.producesSorted()) { - if (connectionsGroup != null && (parent instanceof BufferedSplitter.BufferedSplitterPlaneNode || - parent instanceof UnorderedSelect)) { - parent = connectionsGroup.getCachedNodeFor(new Sort(parent, connectionsGroup)); - } else { - parent = new Sort(parent, connectionsGroup); - } +// if (connectionsGroup != null && (parent instanceof BufferedSplitter.BufferedSplitterPlaneNode || +// parent instanceof UnorderedSelect)) { +// parent = connectionsGroup.getCachedNodeFor(new Sort(parent, connectionsGroup)); +// } else { + parent = new Sort(parent, connectionsGroup); +// } } } return parent; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java index 1c494f7f9d8..4e1a52cb7d7 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ReduceTargets.java @@ -116,6 +116,11 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { .append(StringEscapeUtils.escapeJava(this.toString())) .append("\"];") .append("\n"); + stringBuilder.append(parentToReduce.getId() + " -> " + getId()).append("\n"); + stringBuilder.append(reductionSource.getId() + " -> " + getId()).append("\n"); + parentToReduce.getPlanAsGraphvizDot(stringBuilder); + reductionSource.getPlanAsGraphvizDot(stringBuilder); + } @Override @@ -142,10 +147,7 @@ public boolean requiresSorted() { @Override public String toString() { - return "ReduceTargets{" + - "parentToReduce=" + parentToReduce + - ", reductionSource=" + reductionSource + - '}'; + return "ReduceTargets"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Select.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Select.java index e51c28a7070..f8fb2a63bc5 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Select.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Select.java @@ -160,13 +160,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder - .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) - .append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder +// .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) +// .append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); +// } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java index c05dd3cfbd0..3d146736ae0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SingleCloseablePlanNode.java @@ -53,7 +53,7 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { @Override public String toString() { - return "SingleCloseablePlanNode{" + "parent=" + parent + '}'; + return "SingleCloseablePlanNode"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java index 5e63ad1a7c9..202610c1e9c 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Sort.java @@ -12,6 +12,7 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -70,13 +71,13 @@ protected void init() { } if (!alreadySorted && sortedTuples.size() > 1) { -// if (sortedTuples.size() > 8192) { // MIN_ARRAY_SORT_GRAN in Arrays.parallelSort(...) -// ValidationTuple[] objects = sortedTuples.toArray(new ValidationTuple[0]); -// Arrays.parallelSort(objects, ValidationTuple::compareActiveTarget); -// sortedTuples = Arrays.asList(objects); -// } else { - sortedTuples.sort(ValidationTuple::compareActiveTarget); -// } + if (sortedTuples.size() > 8192) { // MIN_ARRAY_SORT_GRAN in Arrays.parallelSort(...) + ValidationTuple[] objects = sortedTuples.toArray(new ValidationTuple[0]); + Arrays.parallelSort(objects, ValidationTuple::compareActiveTarget); + sortedTuples = Arrays.asList(objects); + } else { + sortedTuples.sort(ValidationTuple::compareActiveTarget); + } } sortedTuplesIterator = sortedTuples.iterator(); @@ -160,6 +161,6 @@ public boolean requiresSorted() { @Override public String toString() { - return "Sort{" + "parent=" + parent + '}'; + return "Sort"; } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java index 6ff501f063b..6bb77f1d193 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TrimToTarget.java @@ -124,8 +124,7 @@ public int hashCode() { @Override public String toString() { return "TrimToTarget{" + - "parent=" + parent + - ", keepPath=" + keepPath + + "keepPath=" + keepPath + '}'; } } 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 e5a0c4f17a5..1a0eb2d73b1 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 @@ -259,7 +259,6 @@ public int hashCode() { public String toString() { return "Unique{" + "compress=" + compress + - ", parent=" + parent + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnorderedSelect.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnorderedSelect.java index 78bc577697f..01b932c026e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnorderedSelect.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/UnorderedSelect.java @@ -124,13 +124,13 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { // added/removed connections are always newly minted per plan node, so we instead need to compare the underlying // sail - if (connection instanceof MemoryStoreConnection) { - stringBuilder - .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) - .append("\n"); - } else { - stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); - } +// if (connection instanceof MemoryStoreConnection) { +// stringBuilder +// .append(System.identityHashCode(((MemoryStoreConnection) connection).getSail()) + " -> " + getId()) +// .append("\n"); +// } else { + stringBuilder.append(System.identityHashCode(connection) + " -> " + getId()).append("\n"); +// } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java index 80dd1c42d59..21d4edf2a09 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValidationReportNode.java @@ -81,6 +81,9 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { .append(StringEscapeUtils.escapeJava(this.toString())) .append("\"];") .append("\n"); + stringBuilder.append(parent.getId() + " -> " + getId()).append("\n"); + + parent.getPlanAsGraphvizDot(stringBuilder); } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java index 994bee85833..d022824d379 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetClass.java @@ -66,7 +66,7 @@ private PlanNode getAddedRemovedInner(SailConnection connection, Resource[] data Resource clazz = targetClass.stream().findAny().get(); planNode = new UnorderedSelect(connection, null, RDF.TYPE, clazz, dataGraph, UnorderedSelect.Mapper.SubjectScopedMapper.getFunction(scope), null); - return planNode; +// return planNode; } else { planNode = new Select(connection, SparqlFragment.bgp(Set.of(), @@ -112,7 +112,7 @@ public PlanNode getTargetFilter(ConnectionsGroup connectionsGroup, Resource[] da PlanNode parent) { if (connectionsGroup.hasAddedStatements()) { - BufferedSplitter bufferedSplitter = new BufferedSplitter(parent); + BufferedSplitter bufferedSplitter = BufferedSplitter.getInstance(parent); FilterByPredicateObject typeFoundInAdded = new FilterByPredicateObject( connectionsGroup.getAddedStatements(), dataGraph, RDF.TYPE, targetClass, 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 55ee9b26455..5e8ecba0743 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 @@ -16,6 +16,7 @@ import org.eclipse.rdf4j.common.annotation.InternalUseOnly; import org.eclipse.rdf4j.common.transaction.IsolationLevels; +import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.sail.Sail; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ShaclSailConnection; @@ -27,6 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.cache.Cache; + /** * @apiNote since 3.0. This feature is for internal use only: its existence, signature or behavior may change without * warning from one release to the next. @@ -130,7 +133,7 @@ public PlanNode getCachedNodeFor(PlanNode planNode) { BufferedSplitter bufferedSplitter = nodeCache.computeIfAbsent(planNode, parent -> { matchedCache[0] = false; - return new BufferedSplitter(parent, true); + return BufferedSplitter.getInstance(parent); }); logger.debug("Found in cache: {} {} - {} : {}", matchedCache[0] ? " TRUE" : "FALSE", @@ -138,7 +141,7 @@ public PlanNode getCachedNodeFor(PlanNode planNode) { return bufferedSplitter.getPlanNode(); } else { - return nodeCache.computeIfAbsent(planNode, BufferedSplitter::new).getPlanNode(); + return nodeCache.computeIfAbsent(planNode, BufferedSplitter::getInstance).getPlanNode(); } } diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ClassBenchmarkEmpty.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ClassBenchmarkEmpty.java index 5271639b657..e02b47859ce 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ClassBenchmarkEmpty.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ClassBenchmarkEmpty.java @@ -72,13 +72,23 @@ public void setUp() throws InterruptedException { Thread.sleep(100); } + public static void main(String[] args) throws Exception { + ClassBenchmarkEmpty classBenchmarkEmpty = new ClassBenchmarkEmpty(); + classBenchmarkEmpty.setUp(); + classBenchmarkEmpty.shacl(); + + } + @Benchmark public void shacl() throws Exception { SailRepository repository = new SailRepository(Utils.getInitializedShaclSail("shaclClassBenchmark.trig")); +// ((ShaclSail) repository.getSail()).setLogValidationPlans(true); + try (SailRepositoryConnection connection = repository.getConnection()) { for (List statements : allStatements) { +// System.out.println("."); connection.begin(); connection.add(statements); connection.commit(); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java index 1cf6d74fe2d..a40d5bc191b 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/ComplexLargeBenchmark.java @@ -117,7 +117,7 @@ public void teardown() { public static void main(String[] args) throws InterruptedException { ComplexLargeBenchmark complexLargeBenchmark = new ComplexLargeBenchmark(); complexLargeBenchmark.setUp(); - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 100; i++) { System.out.println(i); complexLargeBenchmark.noPreloadingNonEmptyParallelRemoved(); } @@ -406,7 +406,6 @@ public void noPreloadingNonEmptyParallelRemoved() { Utils.getInitializedShaclSail("complexBenchmark/shacl.trig")); ((ShaclSail) repository.getSail()).setTransactionalValidationLimit(1000000); -// ((ShaclSail) repository.getSail()).setPerformanceLogging(true); try (SailRepositoryConnection connection = repository.getConnection()) { connection.begin(IsolationLevels.NONE, ShaclSail.TransactionSettings.ValidationApproach.Disabled); @@ -417,7 +416,7 @@ public void noPreloadingNonEmptyParallelRemoved() { ((ShaclSail) repository.getSail()).setParallelValidation(true); ((ShaclSail) repository.getSail()).setCacheSelectNodes(true); - ((ShaclSail) repository.getSail()).setPerformanceLogging(false); +// ((ShaclSail) repository.getSail()).setPerformanceLogging(true); try (SailRepositoryConnection connection = repository.getConnection()) { connection.begin(IsolationLevels.NONE); From 537ee67c09c9009f500446cacca6431c90cbf0bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20M=2E=20Ottestad?= Date: Wed, 18 Sep 2024 10:07:34 +0200 Subject: [PATCH 3/3] Update merge_main_to_develop.yml --- .github/workflows/merge_main_to_develop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/merge_main_to_develop.yml b/.github/workflows/merge_main_to_develop.yml index d5d3d80d5aa..f4f12b53ba7 100644 --- a/.github/workflows/merge_main_to_develop.yml +++ b/.github/workflows/merge_main_to_develop.yml @@ -17,4 +17,4 @@ jobs: destination_branch: "develop" # If blank, default: main pr_title: "Merge main into develop" pr_body: "Automatically generated PR to keep develop in sync with main.\n\n **USE MERGE COMMIT TO MERGE THIS PR**.\n\nSee [merge_main_to_develop.yml](/eclipse/rdf4j/.github/workflows/merge_main_to_develop.yml)." # Full markdown support, requires pr_title to be set - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ github.token }}