From 82d42981b12e47237fe6b71f46c951ad39f700b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ha=CC=8Avard=20Ottestad?= Date: Thu, 19 Sep 2024 14:34:39 +0200 Subject: [PATCH] GH-5130 zeroOrMorePath and oneOrMorePath mostly implemented --- .../eclipse/rdf4j/sail/shacl/ShaclSail.java | 2 + .../sail/shacl/ShapeValidationContainer.java | 2 - .../rdf4j/sail/shacl/ast/SparqlFragment.java | 11 +- .../AbstractConstraintComponent.java | 3 + .../AbstractPairwiseConstraintComponent.java | 2 +- .../AbstractSimpleConstraintComponent.java | 5 +- .../ClassConstraintComponent.java | 3 +- .../ClosedConstraintComponent.java | 13 +- .../DashHasValueInConstraintComponent.java | 3 +- .../HasValueConstraintComponent.java | 7 +- .../MaxCountConstraintComponent.java | 5 +- .../MinCountConstraintComponent.java | 11 +- .../QualifiedMaxCountConstraintComponent.java | 5 +- .../QualifiedMinCountConstraintComponent.java | 5 +- .../UniqueLangConstraintComponent.java | 6 +- .../sail/shacl/ast/paths/AlternativePath.java | 7 +- .../sail/shacl/ast/paths/InversePath.java | 2 +- .../sail/shacl/ast/paths/OneOrMorePath.java | 123 ++- .../rdf4j/sail/shacl/ast/paths/Path.java | 56 +- .../sail/shacl/ast/paths/SequencePath.java | 8 +- .../sail/shacl/ast/paths/SimplePath.java | 20 +- .../sail/shacl/ast/paths/ZeroOrMorePath.java | 133 ++- .../planNodes/AbstractBulkJoinPlanNode.java | 19 +- .../planNodes/BulkedExternalInnerJoin.java | 7 +- .../BulkedExternalLeftOuterJoin.java | 7 +- .../shacl/ast/planNodes/EqualsJoinValue.java | 4 +- .../ast/planNodes/FilterByPredicate.java | 4 +- .../planNodes/FilterByPredicateObject.java | 4 +- .../ast/planNodes/FilterTargetIsObject.java | 5 - .../ast/planNodes/FilterTargetIsSubject.java | 5 - .../sail/shacl/ast/planNodes/Formatter.java | 100 +- .../shacl/ast/planNodes/GroupByFilter.java | 2 +- .../sail/shacl/ast/planNodes/InnerJoin.java | 2 +- .../sail/shacl/ast/planNodes/PlanNode.java | 20 - .../shacl/ast/planNodes/SetFilterNode.java | 3 +- .../sail/shacl/ast/planNodes/TupleMapper.java | 2 +- .../sail/shacl/ast/planNodes/Unique.java | 2 + .../shacl/ast/planNodes/ValueInFilter.java | 4 +- .../shacl/ast/planNodes/ValuesBackedNode.java | 2 +- .../sail/shacl/ast/planNodes/sort-after.txt | 896 ------------------ .../sail/shacl/ast/planNodes/sort-before.txt | 896 ------------------ .../shacl/ast/targets/EffectiveTarget.java | 72 +- .../ast/targets/TargetChainRetriever.java | 32 +- .../shacl/wrapper/data/ConnectionsGroup.java | 3 - .../rdf4j/sail/shacl/AbstractShaclTest.java | 2 +- .../rdf4j/sail/shacl/UnknownShapesTest.java | 7 +- .../rdf4j/sail/shacl/W3cComplianceTest.java | 6 +- .../SparqlConstraintsBenchmarkEmpty.java | 4 - .../shacl/src/test/resources/complexPath.trig | 6 + .../shacl/src/test/resources/logback-test.xml | 2 +- .../oneOrMorePath/invalid/case1/query1.rq | 12 + .../oneOrMorePath/invalid/case1/report.ttl | 31 + .../oneOrMorePath/invalid/case2/query1.rq | 14 + .../oneOrMorePath/invalid/case2/query2.rq | 10 + .../oneOrMorePath/invalid/case2/report.ttl | 31 + .../oneOrMorePath/invalid/case3/query1.rq | 12 + .../oneOrMorePath/invalid/case3/query2.rq | 11 + .../oneOrMorePath/invalid/case3/report.ttl | 31 + .../minCount/oneOrMorePath/shacl.trig | 18 + .../oneOrMorePath/valid/case1/query1.rq | 14 + .../oneOrMorePath/valid/case1/report.ttl | 12 + .../oneOrMorePath/valid/case2/query1.rq | 14 + .../oneOrMorePath/valid/case2/query2.rq | 11 + .../oneOrMorePath/valid/case2/report.ttl | 12 + .../oneOrMorePath/valid/case3/query1.rq | 12 + .../oneOrMorePath/valid/case3/query2.rq | 12 + .../oneOrMorePath/valid/case3/report.ttl | 12 + .../oneOrMorePath/valid/case4/query1.rq | 12 + .../oneOrMorePath/valid/case4/query2.rq | 11 + .../oneOrMorePath/valid/case4/query3.rq | 11 + .../oneOrMorePath/valid/case4/report.ttl | 12 + .../oneOrMorePath/valid/case5/query1.rq | 11 + .../oneOrMorePath/valid/case5/query2.rq | 13 + .../oneOrMorePath/valid/case5/report.ttl | 12 + .../sequencePath/invalid/case1/query1.rq | 18 + .../sequencePath/invalid/case1/report.ttl | 30 + .../sequencePath/invalid/case2/query1.rq | 18 + .../sequencePath/invalid/case2/query2.rq | 13 + .../sequencePath/invalid/case2/report.ttl | 30 + .../minCount/sequencePath/shacl.trig | 18 + .../sequencePath/valid/case1/query1.rq | 18 + .../sequencePath/valid/case1/report.ttl | 12 + .../sequencePath/valid/case2/query1.rq | 17 + .../sequencePath/valid/case2/query2.rq | 11 + .../sequencePath/valid/case2/report.ttl | 12 + .../zeroOrMorePath/invalid/case1/query1.rq | 12 + .../zeroOrMorePath/invalid/case1/report.ttl | 27 + .../zeroOrMorePath/invalid/case2/query1.rq | 14 + .../zeroOrMorePath/invalid/case2/query2.rq | 10 + .../zeroOrMorePath/invalid/case2/report.ttl | 28 + .../zeroOrMorePath/invalid/case3/query1.rq | 12 + .../zeroOrMorePath/invalid/case3/query2.rq | 11 + .../zeroOrMorePath/invalid/case3/report.ttl | 27 + .../minCount/zeroOrMorePath/shacl.trig | 17 + .../zeroOrMorePath/valid/case1/query1.rq | 14 + .../zeroOrMorePath/valid/case1/report.ttl | 12 + .../zeroOrMorePath/valid/case2/query1.rq | 14 + .../zeroOrMorePath/valid/case2/query2.rq | 11 + .../zeroOrMorePath/valid/case2/report.ttl | 12 + .../zeroOrMorePath/valid/case3/query1.rq | 12 + .../zeroOrMorePath/valid/case3/query2.rq | 12 + .../zeroOrMorePath/valid/case3/report.ttl | 12 + .../zeroOrMorePath/valid/case4/query1.rq | 12 + .../zeroOrMorePath/valid/case4/query2.rq | 11 + .../zeroOrMorePath/valid/case4/query3.rq | 11 + .../zeroOrMorePath/valid/case4/report.ttl | 12 + .../zeroOrMorePath/valid/case5/query1.rq | 11 + .../zeroOrMorePath/valid/case5/query2.rq | 13 + .../zeroOrMorePath/valid/case5/report.ttl | 12 + .../invalid/case1/query1.rq | 15 + .../invalid/case1/report.ttl | 27 + .../invalid/case2/query1.rq | 14 + .../invalid/case2/query2.rq | 10 + .../invalid/case2/report.ttl | 27 + .../invalid/case3/query1.rq | 15 + .../invalid/case3/query2.rq | 11 + .../invalid/case3/report.ttl | 27 + .../invalid/case4/query1.rq | 14 + .../invalid/case4/query2.rq | 10 + .../invalid/case4/report.ttl | 27 + .../invalid/case5/query1.rq | 14 + .../invalid/case5/query2.rq | 11 + .../invalid/case5/report.ttl | 27 + .../invalid/case6/query1.rq | 15 + .../invalid/case6/report.ttl | 27 + .../nodeKind/oneOrMorePathComplex/shacl.trig | 19 + .../valid/case1/query1.rq | 15 + .../valid/case1/report.ttl | 12 + .../valid/case2/query1.rq | 14 + .../valid/case2/query2.rq | 10 + .../valid/case2/report.ttl | 12 + .../invalid/case1/query1.rq | 13 + .../invalid/case1/report.ttl | 27 + .../invalid/case2/query1.rq | 10 + .../invalid/case2/query2.rq | 12 + .../invalid/case2/report.ttl | 27 + .../nodeKind/oneOrMorePathSimple/shacl.trig | 18 + .../oneOrMorePathSimple/valid/case1/query1.rq | 13 + .../valid/case1/report.ttl | 12 + .../oneOrMorePathSimple/valid/case2/query1.rq | 12 + .../oneOrMorePathSimple/valid/case2/query2.rq | 11 + .../valid/case2/report.ttl | 12 + .../oneOrMorePathSimple/valid/case3/query1.rq | 11 + .../oneOrMorePathSimple/valid/case3/query2.rq | 13 + .../valid/case3/report.ttl | 12 + .../oneOrMorePathSimple/valid/case4/query1.rq | 12 + .../valid/case4/report.ttl | 12 + .../oneOrMorePathSimple/valid/case5/query1.rq | 12 + .../valid/case5/report.ttl | 12 + .../invalid/case1/query1.rq | 15 + .../invalid/case1/report.ttl | 27 + .../invalid/case2/query1.rq | 14 + .../invalid/case2/query2.rq | 10 + .../invalid/case2/report.ttl | 27 + .../invalid/case3/query1.rq | 15 + .../invalid/case3/query2.rq | 11 + .../invalid/case3/report.ttl | 27 + .../invalid/case4/query1.rq | 14 + .../invalid/case4/query2.rq | 10 + .../invalid/case4/report.ttl | 27 + .../invalid/case5/query1.rq | 14 + .../invalid/case5/query2.rq | 11 + .../invalid/case5/report.ttl | 27 + .../invalid/case6/query1.rq | 11 + .../invalid/case6/report.ttl | 27 + .../nodeKind/zeroOrMorePathComplex/shacl.trig | 19 + .../valid/case1/query1.rq | 15 + .../valid/case1/report.ttl | 12 + .../valid/case2/query1.rq | 14 + .../valid/case2/query2.rq | 10 + .../valid/case2/report.ttl | 12 + .../valid/case3/query1.rq | 11 + .../valid/case3/report.ttl | 12 + 173 files changed, 2485 insertions(+), 1968 deletions(-) delete mode 100644 core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt delete 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/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq create mode 100644 core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSail.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSail.java index f2b75e528ed..8f992f8d161 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSail.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShaclSail.java @@ -314,6 +314,8 @@ public static List getSupportedShaclPredicates() { SHACL.TARGET_PROP, SHACL.INVERSE_PATH, SHACL.ALTERNATIVE_PATH, + SHACL.ONE_OR_MORE_PATH, + SHACL.ZERO_OR_MORE_PATH, SHACL.NODE, SHACL.QUALIFIED_MAX_COUNT, SHACL.QUALIFIED_MIN_COUNT, diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ShapeValidationContainer.java index 9f951a94bb1..9545135c8e9 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 @@ -16,9 +16,7 @@ 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; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java index e3812aca1a2..c0bc9d2179d 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/SparqlFragment.java @@ -24,7 +24,6 @@ import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; @@ -337,8 +336,10 @@ public String getNamespacesForSparql() { return ShaclPrefixParser.toSparqlPrefixes(namespaces); } - public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, - Path path, StatementMatcher currentStatementMatcher, List currentStatements) { + public Stream getRoot(ConnectionsGroup connectionsGroup, + Resource[] dataGraph, + Path path, StatementMatcher currentStatementMatcher, + List currentStatements) { assert traceBackFunction != null; return traceBackFunction.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements); } @@ -411,12 +412,12 @@ public int hashCode() { public interface TraceBack { - Stream getRoot( + Stream getRoot( ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, StatementMatcher currentStatementMatcher, - List currentStatements); + List currentStatements); } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractConstraintComponent.java index f3a6413a5cb..0b0f0266f67 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 @@ -171,6 +171,9 @@ static PlanNode getAllTargetsIncludingThoseAddedByPath(ConnectionsGroup connecti null); allTargets = UnionNode.getInstance(connectionsGroup, addedTargets.getPlanNode(), addedByPath); + + allTargets = Unique.getInstance(new TrimToTarget(allTargets, connectionsGroup), false, connectionsGroup); + return allTargets; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractPairwiseConstraintComponent.java index 8b7dcde0f50..0e98dafb020 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 @@ -252,7 +252,7 @@ public PlanNode getAllTargetsPlan(ConnectionsGroup connectionsGroup, Resource[] } - return Unique.getInstance(allTargetsPlan, false, connectionsGroup); + return Unique.getInstance(new TrimToTarget(allTargetsPlan, connectionsGroup), false, connectionsGroup); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java index c9f0c119ba7..27794706e63 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/AbstractSimpleConstraintComponent.java @@ -28,6 +28,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; @@ -135,7 +136,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getPreviousStateConnection(), b -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); top = UnionNode.getInstance(connectionsGroup, top, bulkedExternalInnerJoin); @@ -218,7 +219,7 @@ private PlanNode getPlanNodeForOverrideTargetNode(ConnectionsGroup connectionsGr Set.of()), false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); planNode = connectionsGroup.getCachedNodeFor(planNode); } } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java index 8dde6295aff..4b1173d5251 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClassConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedSplitter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; @@ -171,7 +172,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); if (connectionsGroup.getAddedStatements() != null) { // filter by type against the added statements diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java index 64bf3dcc2f0..c5deca68eed 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/ClosedConstraintComponent.java @@ -39,6 +39,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; import org.eclipse.rdf4j.sail.shacl.ast.paths.SimplePath; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BufferedSplitter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.ExternalFilterByQuery; @@ -192,7 +193,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); StatementMatcher.Variable subjectVariable = stableRandomVariableProvider.next(); StatementMatcher.Variable predicateVariable = stableRandomVariableProvider.next(); @@ -317,7 +318,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections } return validationTuple; }, - connectionsGroup); + connectionsGroup, + List.of(AbstractBulkJoinPlanNode.DEFAULT_VARS.get(0), AbstractBulkJoinPlanNode.DEFAULT_VARS.get(1), + predicateVariable) + ); return bulkedExternalInnerJoin; } @@ -529,11 +533,6 @@ private String getFilter(StatementMatcher.Variable target, return sparqlFragment.getFragment(); } - @Override - public ValidationApproach getPreferredValidationApproach(ConnectionsGroup connectionsGroup) { - return super.getPreferredValidationApproach(connectionsGroup); - } - @Override public ValidationApproach getOptimalBulkValidationApproach() { return ValidationApproach.SPARQL; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java index 450b0ce4ecd..c0d0f2840c0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/DashHasValueInConstraintComponent.java @@ -31,6 +31,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher.Variable; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByFilter; @@ -113,7 +114,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group.stream().map(ValidationTuple::getValue).noneMatch(hasValueIn::contains); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java index 7dbfea97a80..471cafc2bb3 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/HasValueConstraintComponent.java @@ -30,6 +30,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByFilter; @@ -98,16 +99,18 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections EffectiveTarget.Extend.left, false, null); addedTargets = UnionNode.getInstance(connectionsGroup, addedByPath, addedTargets); - addedTargets = Unique.getInstance(addedTargets, false, connectionsGroup); } + addedTargets = Unique.getInstance(new TrimToTarget(addedTargets, connectionsGroup), false, + connectionsGroup); + PlanNode joined = new BulkedExternalLeftOuterJoin(addedTargets, connectionsGroup.getBaseConnection(), validationSettings.getDataGraph(), path.getTargetQueryFragment(new Variable<>("a"), new Variable<>("c"), connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode invalidTargets = new GroupByFilter(joined, group -> { return group diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java index b9564ba2e35..b4b3c74c907 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MaxCountConstraintComponent.java @@ -32,6 +32,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; @@ -113,7 +114,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } else { relevantTargetsWithPath = new BulkedExternalLeftOuterJoin( mergeNode, @@ -126,7 +127,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java index 19ebb4c0787..1f16d608d96 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/MinCountConstraintComponent.java @@ -29,6 +29,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; @@ -82,6 +83,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); + + // we don't need to compress here because we are anyway going to trim to target later on + addedByPath = Unique.getInstance(addedByPath, false, connectionsGroup); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } @@ -97,6 +102,10 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections PlanNode addedByPath = getTargetChain().getPath() .get() .getAnyAdded(connectionsGroup, validationSettings.getDataGraph(), null); + + // we don't need to compress here because we are anyway going to trim to target later on + addedByPath = Unique.getInstance(addedByPath, false, connectionsGroup); + LeftOuterJoin leftOuterJoin = new LeftOuterJoin(target, addedByPath, connectionsGroup); target = new GroupByCountFilter(leftOuterJoin, count -> count < minCount, connectionsGroup); } @@ -110,7 +119,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); relevantTargetsWithPath = connectionsGroup.getCachedNodeFor(relevantTargetsWithPath); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMaxCountConstraintComponent.java index 6394c2f9114..870fcedde84 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 @@ -33,6 +33,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.Shape; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.LeftOuterJoin; @@ -182,7 +183,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); @@ -226,7 +227,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va connectionsGroup.getRdfsSubClassOfReasoner(), stableRandomVariableProvider, Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java index 69c499a0fbc..8f241009774 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/QualifiedMinCountConstraintComponent.java @@ -34,6 +34,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.Shape; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AllTargetsPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalLeftOuterJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.GroupByCountFilter; @@ -189,7 +190,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); return new TupleMapper(relevantTargetsWithPath, t -> { List targetChain = t.getTargetChain(true); @@ -240,7 +241,7 @@ public PlanNode negated(ConnectionsGroup connectionsGroup, ValidationSettings va Set.of()), (b) -> new ValidationTuple(b.getValue("a"), b.getValue("c"), scope, true, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); } invalid = new NotValuesIn(allTargetsPlan, invalid, connectionsGroup); 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 453ff412372..8b11807c8f2 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/constraintcomponents/UniqueLangConstraintComponent.java @@ -27,6 +27,7 @@ import org.eclipse.rdf4j.sail.shacl.ast.ValidationApproach; import org.eclipse.rdf4j.sail.shacl.ast.ValidationQuery; import org.eclipse.rdf4j.sail.shacl.ast.paths.Path; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.AbstractBulkJoinPlanNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.BulkedExternalInnerJoin; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.EmptyNode; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.InnerJoin; @@ -142,7 +143,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); return Unique.getInstance(new TrimToTarget(nonUniqueTargetLang, connectionsGroup), false, connectionsGroup); @@ -189,8 +190,7 @@ public PlanNode generateTransactionalValidationPlan(ConnectionsGroup connections false, null, BulkedExternalInnerJoin.getMapper("a", "c", scope, validationSettings.getDataGraph()), - - connectionsGroup); + connectionsGroup, AbstractBulkJoinPlanNode.DEFAULT_VARS); PlanNode nonUniqueTargetLang = new NonUniqueTargetLang(relevantTargetsWithPath, connectionsGroup); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java index 2d40f5430f0..b57c043de9b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/AlternativePath.java @@ -19,7 +19,6 @@ import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.model.vocabulary.SHACL; import org.eclipse.rdf4j.sail.shacl.ast.ShaclAstLists; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; @@ -128,12 +127,12 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, return SparqlFragment.union(sparqlFragments, (ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, - StatementMatcher currentStatementMatcher, List currentStatements) -> { - + StatementMatcher currentStatementMatcher, + List currentStatements) -> { return sparqlFragments.stream() .flatMap(sparqlFragment -> sparqlFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements)) - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements); + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); } ); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java index eb2b3f72be4..4dab52a839b 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/InversePath.java @@ -94,7 +94,7 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { return path.getTargetQueryFragment(object, subject, rdfsSubClassOfReasoner, - stableRandomVariableProvider, Set.of()); + stableRandomVariableProvider, inheritedVarNames); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java index 1427206756b..2eed7917b05 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/OneOrMorePath.java @@ -11,21 +11,35 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.ArrayList; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; +import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.vocabulary.SHACL; -import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; +import org.eclipse.rdf4j.query.BindingSet; +import org.eclipse.rdf4j.query.algebra.TupleExpr; +import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; +import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; +import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.SingletonBindingSet; +import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; +import org.eclipse.rdf4j.sail.shacl.ast.targets.TargetChainRetriever; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.data.RdfsSubClassOfReasoner; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import com.google.common.collect.Sets; + public class OneOrMorePath extends Path { private final Path path; @@ -42,7 +56,7 @@ public OneOrMorePath(Resource id, Path path) { @Override public String toString() { - return "ZeroOrOnePath{ " + path + " }"; + return "OneOrMorePath{ " + path + " }"; } @Override @@ -54,7 +68,25 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNodeWrapper planNodeWrapper) { - throw new ShaclUnsupportedException(); + var variables = List.of(new StatementMatcher.Variable<>("subject"), + new StatementMatcher.Variable<>("value")); + + SparqlFragment targetQueryFragment = getTargetQueryFragment(variables.get(0), variables.get(1), + connectionsGroup.getRdfsSubClassOfReasoner(), new StatementMatcher.StableRandomVariableProvider(), + Set.of()); + + PlanNode targetChainRetriever = new TargetChainRetriever(connectionsGroup, dataGraph, + targetQueryFragment.getStatementMatchers(), List.of(), null, targetQueryFragment, + variables, + ConstraintComponent.Scope.propertyShape, true); + + targetChainRetriever = connectionsGroup.getCachedNodeFor(targetChainRetriever); + + if (planNodeWrapper != null) { + targetChainRetriever = planNodeWrapper.apply(targetChainRetriever); + } + + return connectionsGroup.getCachedNodeFor(targetChainRetriever); } @Override @@ -65,7 +97,7 @@ public PlanNode getAnyAdded(ConnectionsGroup connectionsGroup, Resource[] dataGr @Override public boolean isSupported() { - return false; + return true; } @Override @@ -81,7 +113,88 @@ public String toSparqlPathString() { public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { - throw new ShaclUnsupportedException(); + + if (inheritedVarNames.isEmpty()) { + inheritedVarNames = Set.of(subject.getName()); + } else { + inheritedVarNames = Sets.union(inheritedVarNames, Set.of(subject.getName())); + } + + String variablePrefix = getVariablePrefix(subject, object); + + String sparqlPathString = path.toSparqlPathString(); + + StatementMatcher.Variable pathStart = new StatementMatcher.Variable(subject, variablePrefix + "start"); + StatementMatcher.Variable pathEnd = new StatementMatcher.Variable(subject, variablePrefix + "end"); + + SparqlFragment targetQueryFragmentMiddle = path.getTargetQueryFragment(pathStart, pathEnd, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + SparqlFragment targetQueryFragmentExactlyOne = path.getTargetQueryFragment(subject, object, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + String oneOrMore = subject.asSparqlVariable() + " (" + sparqlPathString + ")* " + pathStart.asSparqlVariable() + + " .\n" + + targetQueryFragmentMiddle.getFragment() + "\n" + + pathEnd.asSparqlVariable() + " (" + sparqlPathString + ")* " + object.asSparqlVariable() + " .\n"; + + SparqlFragment oneOrMoreBgp = SparqlFragment.bgp(List.of(), oneOrMore, + targetQueryFragmentMiddle.getStatementMatchers()); + + var temp = inheritedVarNames; + + return SparqlFragment.union(List.of(targetQueryFragmentExactlyOne, oneOrMoreBgp), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + + Stream statementsAndMatcherStream1 = targetQueryFragmentExactlyOne + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); + + Stream peek = targetQueryFragmentMiddle + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) + .map(a -> { + SailConnection baseConnection = connectionsGroup.getBaseConnection(); + + String subjectName = a.getStatementMatcher().getSubjectName(); + assert subjectName.equals(pathStart.getName()); + + String query = "select distinct " + subject.asSparqlVariable() + " where {\n" + + subject.asSparqlVariable() + " (" + sparqlPathString + ")+ " + + pathStart.asSparqlVariable() + "\n}"; + + TupleExpr tupleExpr = SparqlQueryParserCache.get(query); + + List statements = new ArrayList<>(); + + for (EffectiveTarget.SubjectObjectAndMatcher.SubjectObject statement : a + .getStatements()) { + try (CloseableIteration evaluate = baseConnection.evaluate( + tupleExpr, PlanNodeHelper.asDefaultGraphDataset(dataGraph), + new SingletonBindingSet(subjectName, statement.getSubject()), true)) { + while (evaluate.hasNext()) { + BindingSet next = evaluate.next(); + statements.add(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject( + ((Resource) next.getValue(subject.getName())), null)); + } + } + } + + StatementMatcher statementMatcher = new StatementMatcher(subject, null, null, path, + temp); + + EffectiveTarget.SubjectObjectAndMatcher effectiveTarget = new EffectiveTarget.SubjectObjectAndMatcher( + statements, statementMatcher); + + return effectiveTarget; + }); + + return Stream.concat(statementsAndMatcherStream1, peek); + + }); + } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java index 988e8bd7853..7ea5363f276 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/Path.java @@ -11,6 +11,7 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -19,6 +20,8 @@ import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.Statement; +import org.eclipse.rdf4j.model.vocabulary.RDF; +import org.eclipse.rdf4j.sail.shacl.ShaclSailConnection; import org.eclipse.rdf4j.sail.shacl.ast.Exportable; import org.eclipse.rdf4j.sail.shacl.ast.Identifiable; import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; @@ -28,9 +31,13 @@ import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class Path implements Identifiable, Exportable, Targetable { + private static final Logger logger = LoggerFactory.getLogger(ShaclSailConnection.class); + Resource id; public Path(Resource id) { @@ -49,31 +56,66 @@ static public Path buildPath(ShapeSource shapeSource, Resource id) { if (id.isBNode()) { List collect = shapeSource.getAllStatements(id) + .filter(statement -> !statement.getPredicate().equals(RDF.TYPE)) .collect(Collectors.toList()); + Path ret = null; + for (Statement statement : collect) { IRI pathType = statement.getPredicate(); switch (pathType.toString()) { case "http://www.w3.org/ns/shacl#inversePath": - return new InversePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new InversePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#alternativePath": - return new AlternativePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new AlternativePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#zeroOrMorePath": - return new ZeroOrMorePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new ZeroOrMorePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#oneOrMorePath": - return new OneOrMorePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new OneOrMorePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/ns/shacl#zeroOrOnePath": - return new ZeroOrOnePath(id, (Resource) statement.getObject(), shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new ZeroOrOnePath(id, (Resource) statement.getObject(), shapeSource); + break; case "http://www.w3.org/1999/02/22-rdf-syntax-ns#first": - return new SequencePath(id, shapeSource); + if (ret != null) { + logger.error("Multiple path types not supported! {}", Arrays.toString(collect.toArray())); + } + ret = new SequencePath(id, shapeSource); + break; default: break; } } - throw new ShaclUnsupportedException(); + if (ret != null) { + return ret; + } else { + if (collect.size() == 1) { + throw new ShaclUnsupportedException("Unknown path type: " + collect.get(0)); + } else { + throw new ShaclUnsupportedException("Unknown path type: " + Arrays.toString(collect.toArray())); + } + } } else { return new SimplePath((IRI) id); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java index 0580f9a1e7b..ce6baae67fa 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SequencePath.java @@ -21,7 +21,6 @@ import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; -import org.eclipse.rdf4j.model.Statement; import org.eclipse.rdf4j.sail.shacl.ast.ShaclAstLists; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; @@ -159,8 +158,9 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, return SparqlFragment.join(sparqlFragments, (ConnectionsGroup connectionsGroup, Resource[] dataGraph, Path path, - StatementMatcher currentStatementMatcher, List currentStatements) -> { - Stream currentRoot = null; + StatementMatcher currentStatementMatcher, + List currentStatements) -> { + Stream currentRoot = null; for (int i = sparqlFragments.size() - 1; i >= 0; i--) { SparqlFragment sparqlFragment = sparqlFragments.get(i); @@ -169,7 +169,7 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, .flatMap(root -> sparqlFragment.getRoot(connectionsGroup, dataGraph, path, root.getStatementMatcher(), root.getStatements())) - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements); + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); } else { currentRoot = sparqlFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java index ce143ab05e0..271c6f50d95 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/SimplePath.java @@ -80,16 +80,20 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher statementMatcher = new StatementMatcher(subject, new StatementMatcher.Variable(predicate), object, this, inheritedVarNames); + return SparqlFragment.bgp(List.of(), subject.asSparqlVariable() + " <" + predicate + "> " + object.asSparqlVariable() + " .", statementMatcher, (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { if (currentStatementMatcher.getOrigin() == this) { - assert currentStatementMatcher == statementMatcher; + if (currentStatementMatcher != statementMatcher) { + return null; + } return Stream.of( - new EffectiveTarget.StatementsAndMatcher(currentStatements, currentStatementMatcher)); + new EffectiveTarget.SubjectObjectAndMatcher(currentStatements, + currentStatementMatcher)); } else { if (currentStatementMatcher.hasSubject(object)) { - List newStatements = currentStatements.stream() + var newStatements = currentStatements.stream() .map(currentStatement -> { try (CloseableIteration statements = connectionsGroup .getBaseConnection() @@ -99,10 +103,12 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, } }) .flatMap(List::stream) + .map(EffectiveTarget.SubjectObjectAndMatcher.SubjectObject::new) .collect(Collectors.toList()); - return Stream.of(new EffectiveTarget.StatementsAndMatcher(newStatements, statementMatcher)); + return Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher(newStatements, statementMatcher)); } else if (currentStatementMatcher.hasObject(object)) { - List newStatements = currentStatements.stream() + var newStatements = currentStatements.stream() .map(currentStatement -> { try (CloseableIteration statements = connectionsGroup .getBaseConnection() @@ -112,8 +118,10 @@ public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, } }) .flatMap(List::stream) + .map(EffectiveTarget.SubjectObjectAndMatcher.SubjectObject::new) .collect(Collectors.toList()); - return Stream.of(new EffectiveTarget.StatementsAndMatcher(newStatements, statementMatcher)); + return Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher(newStatements, statementMatcher)); } return null; diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java index a1f691920eb..ae662dce828 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/paths/ZeroOrMorePath.java @@ -11,21 +11,36 @@ package org.eclipse.rdf4j.sail.shacl.ast.paths; +import java.util.ArrayList; +import java.util.List; import java.util.Set; +import java.util.stream.Stream; +import org.apache.commons.lang3.NotImplementedException; +import org.eclipse.rdf4j.common.iteration.CloseableIteration; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Resource; import org.eclipse.rdf4j.model.vocabulary.SHACL; -import org.eclipse.rdf4j.sail.shacl.ast.ShaclUnsupportedException; +import org.eclipse.rdf4j.query.BindingSet; +import org.eclipse.rdf4j.query.algebra.TupleExpr; +import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlFragment; +import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; +import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.ConstraintComponent; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNode; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper; import org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeWrapper; +import org.eclipse.rdf4j.sail.shacl.ast.planNodes.SingletonBindingSet; +import org.eclipse.rdf4j.sail.shacl.ast.targets.EffectiveTarget; +import org.eclipse.rdf4j.sail.shacl.ast.targets.TargetChainRetriever; import org.eclipse.rdf4j.sail.shacl.wrapper.data.ConnectionsGroup; import org.eclipse.rdf4j.sail.shacl.wrapper.data.RdfsSubClassOfReasoner; import org.eclipse.rdf4j.sail.shacl.wrapper.shape.ShapeSource; +import com.google.common.collect.Sets; + public class ZeroOrMorePath extends Path { private final Path path; @@ -54,7 +69,25 @@ public void toModel(Resource subject, IRI predicate, Model model, Set @Override public PlanNode getAllAdded(ConnectionsGroup connectionsGroup, Resource[] dataGraph, PlanNodeWrapper planNodeWrapper) { - throw new ShaclUnsupportedException(); + var variables = List.of(new StatementMatcher.Variable<>("subject"), + new StatementMatcher.Variable<>("value")); + + SparqlFragment targetQueryFragment = getTargetQueryFragment(variables.get(0), variables.get(1), + connectionsGroup.getRdfsSubClassOfReasoner(), new StatementMatcher.StableRandomVariableProvider(), + Set.of()); + + PlanNode targetChainRetriever = new TargetChainRetriever(connectionsGroup, dataGraph, + targetQueryFragment.getStatementMatchers(), List.of(), null, targetQueryFragment, + variables, + ConstraintComponent.Scope.propertyShape, true); + + targetChainRetriever = connectionsGroup.getCachedNodeFor(targetChainRetriever); + + if (planNodeWrapper != null) { + targetChainRetriever = planNodeWrapper.apply(targetChainRetriever); + } + + return connectionsGroup.getCachedNodeFor(targetChainRetriever); } @Override @@ -65,7 +98,7 @@ public PlanNode getAnyAdded(ConnectionsGroup connectionsGroup, Resource[] dataGr @Override public boolean isSupported() { - return false; + return true; } @Override @@ -81,7 +114,99 @@ public String toSparqlPathString() { public SparqlFragment getTargetQueryFragment(StatementMatcher.Variable subject, StatementMatcher.Variable object, RdfsSubClassOfReasoner rdfsSubClassOfReasoner, StatementMatcher.StableRandomVariableProvider stableRandomVariableProvider, Set inheritedVarNames) { - throw new ShaclUnsupportedException(); + + if (inheritedVarNames.isEmpty()) { + inheritedVarNames = Set.of(subject.getName()); + } else { + inheritedVarNames = Sets.union(inheritedVarNames, Set.of(subject.getName())); + } + + String variablePrefix = getVariablePrefix(subject, object); + + String sparqlPathString = path.toSparqlPathString(); + + StatementMatcher.Variable pathStart = new StatementMatcher.Variable(subject, variablePrefix + "start"); + StatementMatcher.Variable pathEnd = new StatementMatcher.Variable(subject, variablePrefix + "end"); + + SparqlFragment targetQueryFragmentMiddle = path.getTargetQueryFragment(pathStart, pathEnd, + rdfsSubClassOfReasoner, stableRandomVariableProvider, + inheritedVarNames); + + SparqlFragment targetQueryFragmentZeroOrOne = SparqlFragment.bgp(List.of(), + subject.asSparqlVariable() + " (" + sparqlPathString + ")? " + object.asSparqlVariable(), + List.of(new StatementMatcher(subject, null, object, this, inheritedVarNames)), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + // TODO: We don't have any tests that cover this! Maybe take a look at minCount/oneOrMorePath? + if (currentStatementMatcher.hasSubject(subject)) { + System.out.println(); + throw new NotImplementedException("This should not happen!"); + } + + return Stream.empty(); + } + ); + + String oneOrMore = subject.asSparqlVariable() + " (" + sparqlPathString + ")* " + pathStart.asSparqlVariable() + + " .\n" + + targetQueryFragmentMiddle.getFragment() + "\n" + + pathEnd.asSparqlVariable() + " (" + sparqlPathString + ")* " + object.asSparqlVariable() + " .\n"; + + SparqlFragment oneOrMoreBgp = SparqlFragment.bgp(List.of(), oneOrMore, + targetQueryFragmentMiddle.getStatementMatchers()); + + var temp = inheritedVarNames; + + return SparqlFragment.union(List.of(targetQueryFragmentZeroOrOne, oneOrMoreBgp), + (connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) -> { + + Stream statementsAndMatcherStream1 = targetQueryFragmentZeroOrOne + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements); + + Stream peek = targetQueryFragmentMiddle + .getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, currentStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) + .map(a -> { + SailConnection baseConnection = connectionsGroup.getBaseConnection(); + + String subjectName = a.getStatementMatcher().getSubjectName(); + assert subjectName.equals(pathStart.getName()); + + String query = "select distinct " + subject.asSparqlVariable() + " where {\n" + + subject.asSparqlVariable() + " (" + sparqlPathString + ")* " + + pathStart.asSparqlVariable() + "\n}"; + + TupleExpr tupleExpr = SparqlQueryParserCache.get(query); + + List statements = new ArrayList<>(); + + for (EffectiveTarget.SubjectObjectAndMatcher.SubjectObject statement : a + .getStatements()) { + try (CloseableIteration evaluate = baseConnection.evaluate( + tupleExpr, PlanNodeHelper.asDefaultGraphDataset(dataGraph), + new SingletonBindingSet(subjectName, statement.getSubject()), true)) { + while (evaluate.hasNext()) { + BindingSet next = evaluate.next(); + System.out.println(next); + statements.add(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject( + ((Resource) next.getValue(subject.getName())), null)); + } + } + } + + StatementMatcher statementMatcher = new StatementMatcher(subject, null, null, path, + temp); + + EffectiveTarget.SubjectObjectAndMatcher effectiveTarget = new EffectiveTarget.SubjectObjectAndMatcher( + statements, statementMatcher); + + return effectiveTarget; + }); + + return Stream.concat(statementsAndMatcherStream1, peek); + + }); + } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java index dab0aac9d7e..5ca6b5ca029 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/AbstractBulkJoinPlanNode.java @@ -28,18 +28,28 @@ import org.eclipse.rdf4j.query.impl.EmptyBindingSet; import org.eclipse.rdf4j.sail.SailConnection; import org.eclipse.rdf4j.sail.shacl.ast.SparqlQueryParserCache; +import org.eclipse.rdf4j.sail.shacl.ast.StatementMatcher; import org.eclipse.rdf4j.sail.shacl.ast.constraintcomponents.AbstractConstraintComponent; public abstract class AbstractBulkJoinPlanNode implements PlanNode { + public static final List DEFAULT_VARS = List.of(new StatementMatcher.Variable("a"), + new StatementMatcher.Variable("c")); public static final String BINDING_NAME = "a"; protected static final int BULK_SIZE = 1000; - private StackTraceElement[] stackTrace; + private final List vars; + private final String varsQueryString; + StackTraceElement[] stackTrace; protected Function mapper; ValidationExecutionLogger validationExecutionLogger; - public AbstractBulkJoinPlanNode() { -// this.stackTrace = Thread.currentThread().getStackTrace(); + public AbstractBulkJoinPlanNode(List vars) { + this.vars = vars; + this.varsQueryString = vars.stream() + .map(StatementMatcher.Variable::asSparqlVariable) + .reduce((a, b) -> a + " " + b) + .orElseThrow(); + this.stackTrace = Thread.currentThread().getStackTrace(); } TupleExpr parseQuery(String query) { @@ -47,7 +57,8 @@ TupleExpr parseQuery(String query) { // #VALUES_INJECTION_POINT# is an annotation in the query where there is a "new scope" due to the bottom up // semantics of SPARQL but where we don't actually want a new scope. query = query.replace(AbstractConstraintComponent.VALUES_INJECTION_POINT, "\nVALUES (?a) {}\n"); - String completeQuery = "select * where {\nVALUES (?a) {}\n" + query + "\n}"; + + String completeQuery = "select distinct " + varsQueryString + " where {\nVALUES (?a) {}\n" + query + "\n}"; return SparqlQueryParserCache.get(completeQuery); } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalInnerJoin.java index c48e3ee02c6..d732f092e18 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 @@ -13,6 +13,7 @@ import java.util.ArrayDeque; import java.util.LinkedHashMap; +import java.util.List; import java.util.Objects; import java.util.function.Function; @@ -25,7 +26,6 @@ import org.eclipse.rdf4j.query.algebra.TupleExpr; import org.eclipse.rdf4j.query.algebra.evaluation.iterator.PeekMarkIterator; import org.eclipse.rdf4j.sail.SailConnection; -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.ast.constraintcomponents.ConstraintComponent; @@ -61,8 +61,9 @@ public class BulkedExternalInnerJoin extends AbstractBulkJoinPlanNode { public BulkedExternalInnerJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, boolean skipBasedOnPreviousConnection, SailConnection previousStateConnection, - Function mapper, ConnectionsGroup connectionsGroup) { - super(); + Function mapper, ConnectionsGroup connectionsGroup, + List vars) { + super(vars); assert !skipBasedOnPreviousConnection || previousStateConnection != null; this.leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/BulkedExternalLeftOuterJoin.java index 8ea6b629229..2b44471a9bc 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 @@ -12,6 +12,7 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; import java.util.ArrayDeque; +import java.util.List; import java.util.Objects; import java.util.function.Function; @@ -23,7 +24,6 @@ import org.eclipse.rdf4j.query.algebra.TupleExpr; import org.eclipse.rdf4j.query.algebra.evaluation.iterator.PeekMarkIterator; import org.eclipse.rdf4j.sail.SailConnection; -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; @@ -46,8 +46,9 @@ public class BulkedExternalLeftOuterJoin extends AbstractBulkJoinPlanNode { public BulkedExternalLeftOuterJoin(PlanNode leftNode, SailConnection connection, Resource[] dataGraph, SparqlFragment query, - Function mapper, ConnectionsGroup connectionsGroup) { - super(); + Function mapper, ConnectionsGroup connectionsGroup, + List vars) { + super(vars); leftNode = PlanNodeHelper.handleSorting(this, leftNode, connectionsGroup); this.leftNode = leftNode; this.query = query.getNamespacesForSparql() diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/EqualsJoinValue.java index a8ee407df5a..b91933c5aab 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 @@ -165,7 +165,9 @@ public String getId() { @Override public String toString() { - return "EqualsJoin{" + "useAsFilter=" + useAsFilter + '}'; + return "EqualsJoinValue{" + + "useAsFilter=" + useAsFilter + + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicate.java index 8c5b49b0218..3139614bee2 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 @@ -188,8 +188,8 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { @Override public String toString() { - return "ExternalFilterByPredicate{" + "filterOnPredicates=" - + Arrays.toString(filterOnPredicates.stream().map(Formatter::prefix).toArray()) + return "FilterByPredicate{" + "filterOnPredicates=" + + Formatter.prefix(filterOnPredicates) + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterByPredicateObject.java index 9a44baba198..b17de785b51 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 @@ -341,9 +341,9 @@ public int hashCode() { @Override public String toString() { - return "ExternalPredicateObjectFilter{" + "filterOnObject=" + PlanNode.prefix(filterOnObject) + return "FilterByPredicateObject{" + "filterOnObject=" + Formatter.prefix(filterOnObject) + ", filterOnPredicate=" - + PlanNode.prefix(filterOnPredicate) + ", filterOn=" + filterOn + ", returnMatching=" + + Formatter.prefix(filterOnPredicate) + ", filterOn=" + filterOn + ", returnMatching=" + returnMatching + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java index bdf07046958..bdb80fb8779 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsObject.java @@ -42,11 +42,6 @@ boolean checkTuple(Reference t) { return connection.hasStatement(null, null, target, true, dataGraph); } - @Override - public String toString() { - return "ExternalFilterTargetIsObject{" + '}'; - } - @Override public boolean equals(Object o) { if (this == o) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java index 02acb30e90f..3124e6f076e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/FilterTargetIsSubject.java @@ -49,11 +49,6 @@ boolean checkTuple(Reference t) { } - @Override - public String toString() { - return "ExternalFilterTargetIsSubject{}"; - } - @Override public boolean equals(Object o) { if (this == o) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java index 6628f3d0988..62b5cdbc5d2 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Formatter.java @@ -10,21 +10,76 @@ *******************************************************************************/ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; +import java.util.Arrays; import java.util.List; +import java.util.Set; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Namespace; import org.eclipse.rdf4j.model.Value; import org.eclipse.rdf4j.model.impl.SimpleNamespace; +import org.eclipse.rdf4j.model.vocabulary.AFN; +import org.eclipse.rdf4j.model.vocabulary.APF; +import org.eclipse.rdf4j.model.vocabulary.CONFIG; +import org.eclipse.rdf4j.model.vocabulary.DASH; +import org.eclipse.rdf4j.model.vocabulary.DC; import org.eclipse.rdf4j.model.vocabulary.DCAT; +import org.eclipse.rdf4j.model.vocabulary.DCTERMS; +import org.eclipse.rdf4j.model.vocabulary.DOAP; +import org.eclipse.rdf4j.model.vocabulary.EARL; +import org.eclipse.rdf4j.model.vocabulary.FN; import org.eclipse.rdf4j.model.vocabulary.FOAF; +import org.eclipse.rdf4j.model.vocabulary.GEO; +import org.eclipse.rdf4j.model.vocabulary.GEOF; +import org.eclipse.rdf4j.model.vocabulary.HYDRA; +import org.eclipse.rdf4j.model.vocabulary.LDP; +import org.eclipse.rdf4j.model.vocabulary.LIST; +import org.eclipse.rdf4j.model.vocabulary.LOCN; +import org.eclipse.rdf4j.model.vocabulary.ODRL2; +import org.eclipse.rdf4j.model.vocabulary.ORG; +import org.eclipse.rdf4j.model.vocabulary.OWL; +import org.eclipse.rdf4j.model.vocabulary.PROV; import org.eclipse.rdf4j.model.vocabulary.RDF; +import org.eclipse.rdf4j.model.vocabulary.RDF4J; import org.eclipse.rdf4j.model.vocabulary.RDFS; +import org.eclipse.rdf4j.model.vocabulary.ROV; +import org.eclipse.rdf4j.model.vocabulary.RSX; +import org.eclipse.rdf4j.model.vocabulary.SD; +import org.eclipse.rdf4j.model.vocabulary.SESAME; +import org.eclipse.rdf4j.model.vocabulary.SESAMEQNAME; import org.eclipse.rdf4j.model.vocabulary.SHACL; +import org.eclipse.rdf4j.model.vocabulary.SKOS; +import org.eclipse.rdf4j.model.vocabulary.SKOSXL; +import org.eclipse.rdf4j.model.vocabulary.SP; +import org.eclipse.rdf4j.model.vocabulary.SPIF; +import org.eclipse.rdf4j.model.vocabulary.SPIN; +import org.eclipse.rdf4j.model.vocabulary.SPINX; +import org.eclipse.rdf4j.model.vocabulary.SPL; +import org.eclipse.rdf4j.model.vocabulary.TIME; +import org.eclipse.rdf4j.model.vocabulary.VANN; +import org.eclipse.rdf4j.model.vocabulary.VCARD4; +import org.eclipse.rdf4j.model.vocabulary.VOID; +import org.eclipse.rdf4j.model.vocabulary.WGS84; import org.eclipse.rdf4j.model.vocabulary.XSD; public class Formatter { + public static String prefix(Set set) { + if (set.size() == 1) { + return prefix(set.iterator().next()); + } + + return Arrays.toString(set.stream().map(Formatter::prefix).toArray()); + } + + public static String prefix(List list) { + if (list.size() == 1) { + return prefix(list.iterator().next()); + } + + return Arrays.toString(list.stream().map(Formatter::prefix).toArray()); + } + public static String prefix(Value in) { if (in == null) { @@ -36,12 +91,51 @@ public static String prefix(Value in) { String namespace = ((IRI) in).getNamespace(); List namespaces = List.of( + AFN.NS, + APF.NS, + CONFIG.NS, + DASH.NS, + DC.NS, + DCAT.NS, + DCTERMS.NS, + DOAP.NS, + EARL.NS, + FN.NS, + FOAF.NS, + GEO.NS, + GEOF.NS, + HYDRA.NS, + LDP.NS, + LIST.NS, + LOCN.NS, + ODRL2.NS, + ORG.NS, + OWL.NS, + PROV.NS, RDF.NS, + RDF4J.NS, + RDFS.NS, + ROV.NS, + RSX.NS, + SD.NS, + SESAME.NS, + SESAMEQNAME.NS, SHACL.NS, - FOAF.NS, - DCAT.NS, + SKOS.NS, + SKOSXL.NS, + SP.NS, + SPIF.NS, + SPIN.NS, + SPINX.NS, + SPL.NS, + TIME.NS, + VANN.NS, + VCARD4.NS, + VOID.NS, + WGS84.NS, + XSD.NS, new SimpleNamespace("http://example.com/ns#", "ex"), - XSD.NS + new SimpleNamespace("http://example.com/ns/", "ex") ); for (Namespace ns : namespaces) { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java index 765faab3ba0..038e561f4d0 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/GroupByFilter.java @@ -135,7 +135,7 @@ public void getPlanAsGraphvizDot(StringBuilder stringBuilder) { @Override public String toString() { - return "GroupByCountFilter"; + return "GroupByFilter"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java index d6265e37251..517ebd9468e 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/InnerJoin.java @@ -300,7 +300,7 @@ public String getId() { @Override public String toString() { - return "InnerJoin(" + left.toString() + " : " + right.toString() + ")"; + return "InnerJoin"; } private String leadingSpace() { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/PlanNode.java index 99cd22d3fa1..9af9725b150 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,33 +11,13 @@ 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/SetFilterNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java index ad64b910bac..c6564b4b0ab 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/SetFilterNode.java @@ -11,7 +11,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; -import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -113,7 +112,7 @@ public String getId() { @Override public String toString() { return "SetFilterNode{" + "targetNodeList=" - + Arrays.toString(targetNodeList.stream().map(Formatter::prefix).toArray()) + ", index=" + index + + Formatter.prefix(targetNodeList) + ", index=" + index + ", returnValid=" + returnValid + '}'; } diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java index f9f3e0bfb92..127093c4a39 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/TupleMapper.java @@ -85,7 +85,7 @@ public String getId() { @Override public String toString() { - return "ModifyValidationTuple"; + return "TupleMapper"; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java index 1a0eb2d73b1..d412a74b1a8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/Unique.java @@ -112,6 +112,8 @@ private void calculateNext() { Set tuples = new HashSet<>(); if (propertyShapeWithValue) { + if (parentIterator.hasNext()) + parentIterator.peek(); while (parentIterator.hasNext() && parentIterator.peek().getValue().equals(temp.getValue()) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java index dff0a687f15..dd134c695b9 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValueInFilter.java @@ -11,7 +11,6 @@ package org.eclipse.rdf4j.sail.shacl.ast.planNodes; -import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -37,8 +36,7 @@ boolean checkTuple(Reference t) { @Override public String toString() { - return "ValueInFilter{" + "valueSet=" + Arrays.toString(valueSet.stream().map(Formatter::prefix).toArray()) - + '}'; + return "ValueInFilter{" + "valueSet=" + Formatter.prefix(valueSet) + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java index 3a92d9c2a04..14fb12af7c8 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/ValuesBackedNode.java @@ -97,7 +97,7 @@ public String getId() { @Override public String toString() { - return "ValuesBackedNode{" + "values=" + values + '}'; + return "ValuesBackedNode{" + "values=" + Formatter.prefix(values) + '}'; } @Override diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt deleted file mode 100644 index c089cefe02e..00000000000 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-after.txt +++ /dev/null @@ -1,896 +0,0 @@ -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:129) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt deleted file mode 100644 index 6ae9ee9f5c3..00000000000 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/planNodes/sort-before.txt +++ /dev/null @@ -1,896 +0,0 @@ -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.targets.TargetClass.getTargetFilter(TargetClass.java:128) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) -org.eclipse.rdf4j.sail.shacl.ast.planNodes.PlanNodeHelper.handleSorting(PlanNodeHelper.java:37) diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/EffectiveTarget.java index df9d06e818d..46f53beb1c0 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 @@ -115,11 +115,7 @@ public PlanNode extend(PlanNode source, ConnectionsGroup connectionsGroup, Resou return allTargets; } - var vars = getVars(); - if (includePropertyShapeValues) { - vars = new ArrayList<>(vars); - vars.add(optional.var); - } + var vars = getVars(includePropertyShapeValues); List varNames = vars.stream().map(StatementMatcher.Variable::getName).collect(Collectors.toList()); @@ -155,7 +151,11 @@ public PlanNode extend(PlanNode source, ConnectionsGroup connectionsGroup, Resou } } - private List> getVars() { + private List> getVars(boolean optional) { + if (optional) { + return Stream.concat(chain.stream(), Stream.of(this.optional)).map(t -> t.var).collect(Collectors.toList()); + } + return chain.stream().map(t -> t.var).collect(Collectors.toList()); } @@ -223,7 +223,7 @@ public boolean couldMatch(ConnectionsGroup connectionsGroup, Resource[] dataGrap public PlanNode getAllTargets(ConnectionsGroup connectionsGroup, Resource[] dataGraph, ConstraintComponent.Scope scope) { - return new AllTargetsPlanNode(connectionsGroup.getBaseConnection(), dataGraph, chain, getVars(), scope); + return new AllTargetsPlanNode(connectionsGroup.getBaseConnection(), dataGraph, chain, getVars(false), scope); } public PlanNode getPlanNode(ConnectionsGroup connectionsGroup, Resource[] dataGraph, @@ -289,7 +289,7 @@ public PlanNode getPlanNode(ConnectionsGroup connectionsGroup, Resource[] dataGr statementMatchersRemoval, optional, fragment, - getVars(), + getVars(false), scope, false); } else { @@ -300,14 +300,14 @@ public PlanNode getPlanNode(ConnectionsGroup connectionsGroup, Resource[] dataGr null, null, fragment, - getVars(), + getVars(false), scope, false); } } else { targetsPlanNode = new AllTargetsPlanNode(connectionsGroup.getBaseConnection(), dataGraph, chain, - getVars(), scope); + getVars(false), scope); } @@ -449,10 +449,13 @@ public EffectiveTargetFragment(Variable var, Targetable target, Effective rootStatementMatcher = null; } else { rootStatementMatcher = queryFragment.getStatementMatchers().get(0); - assert rootStatementMatcher.getSubjectName() == var.getName() || - rootStatementMatcher.getObjectName() == var.getName() || - rootStatementMatcher.getSubjectName() == prev.var.getName() || - rootStatementMatcher.getObjectName() == prev.var.getName(); + if (rootStatementMatcher.getSubjectName() != var.getName() && + rootStatementMatcher.getObjectName() != var.getName() && + rootStatementMatcher.getSubjectName() != prev.var.getName() && + rootStatementMatcher.getObjectName() != prev.var.getName()) { + throw new AssertionError("rootStatementMatcher: " + rootStatementMatcher + ", var: " + var + + ", prev.var: " + prev.var); + } } } @@ -460,7 +463,7 @@ public SparqlFragment getQueryFragment() { return queryFragment; } - public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, + public Stream getRoot(ConnectionsGroup connectionsGroup, Resource[] dataGraph, StatementMatcher currentStatementMatcher, Statement currentStatement) { if (currentStatementMatcher == rootStatementMatcher) { @@ -489,13 +492,9 @@ public Stream getRoot(ConnectionsGroup connectionsGroup, R if (target instanceof Path) { Path path = (Path) target; assert !(path instanceof InversePath); - Stream root = queryFragment.getRoot(connectionsGroup, dataGraph, path, + return queryFragment.getRoot(connectionsGroup, dataGraph, path, currentStatementMatcher, - List.of(currentStatement)); - - List collect = root.collect(Collectors.toList()); - - return collect.stream(); + List.of(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject(currentStatement))); } throw new UnsupportedOperationException(); @@ -503,20 +502,20 @@ public Stream getRoot(ConnectionsGroup connectionsGroup, R } } - public static class StatementsAndMatcher { - private final List statements; + public static class SubjectObjectAndMatcher { + private final List statements; private final StatementMatcher statementMatcher; // We should support some sort of stream instead, so that we can scale without keeping all the // intermediary statements in memeory! It's very hard to implement though since the list of statements is // iterated over several times in different branches, so we can't just pass in an iterator since it would be // consumed by one branch and then the other branch would only see an empty iterator. - public StatementsAndMatcher(List statements, StatementMatcher statementMatcher) { + public SubjectObjectAndMatcher(List statements, StatementMatcher statementMatcher) { this.statements = statements; this.statementMatcher = statementMatcher; } - public List getStatements() { + public List getStatements() { return statements; } @@ -527,6 +526,29 @@ public StatementMatcher getStatementMatcher() { public boolean hasStatements() { return !statements.isEmpty(); } + + public static class SubjectObject { + private final Resource subject; + private final Value object; + + public SubjectObject(Resource subject, Value object) { + this.subject = subject; + this.object = object; + } + + public SubjectObject(Statement statement) { + this.subject = statement.getSubject(); + this.object = statement.getObject(); + } + + public Resource getSubject() { + return subject; + } + + public Value getObject() { + return object; + } + } } static class ActiveTargetTupleMapper implements Function { diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java index eaa5af256e1..bc062f2d003 100644 --- a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java +++ b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/ast/targets/TargetChainRetriever.java @@ -80,6 +80,7 @@ public class TargetChainRetriever implements PlanNode { private final EffectiveTarget.EffectiveTargetFragment removedStatementTarget; private final boolean hasValue; private final Set varNamesInQueryFragment; + private final String queryStr; private StackTraceElement[] stackTrace; private ValidationExecutionLogger validationExecutionLogger; @@ -112,9 +113,11 @@ public TargetChainRetriever(ConnectionsGroup connectionsGroup, .get(QueryLanguage.SPARQL) .get(); + this.queryStr = "select * where {\n" + this.queryFragment + "\n}"; + this.varNamesInQueryFragment = Set.of(ArrayBindingBasedQueryEvaluationContext .findAllVariablesUsedInQuery(((QueryRoot) queryParserFactory.getParser() - .parseQuery("select * where {\n" + this.queryFragment + "\n}", null) + .parseQuery(queryStr, null) .getTupleExpr()))); assert !varNamesInQueryFragment.isEmpty(); @@ -285,10 +288,12 @@ private List readStatementsInBulk(Set varNames) { while (bulk.size() < BULK_SIZE && statements.hasNext()) { Statement next = statements.next(); - Stream rootStatements = Stream - .of(new EffectiveTarget.StatementsAndMatcher(List.of(next), currentStatementMatcher)); + Stream rootStatements = Stream + .of(new EffectiveTarget.SubjectObjectAndMatcher( + List.of(new EffectiveTarget.SubjectObjectAndMatcher.SubjectObject(next)), + currentStatementMatcher)); if (removedStatement && removedStatementTarget != null) { - Stream root = removedStatementTarget.getRoot( + Stream root = removedStatementTarget.getRoot( connectionsGroup, dataGraph, currentStatementMatcher, next); @@ -298,7 +303,7 @@ private List readStatementsInBulk(Set varNames) { } rootStatements - .filter(EffectiveTarget.StatementsAndMatcher::hasStatements) + .filter(EffectiveTarget.SubjectObjectAndMatcher::hasStatements) .flatMap(statementsAndMatcher -> { StatementMatcher newCurrentStatementMatcher = statementsAndMatcher .getStatementMatcher(); @@ -306,9 +311,13 @@ private List readStatementsInBulk(Set varNames) { return statementsAndMatcher.getStatements() .stream() .map(temp -> { - Binding[] bindings = new Binding[varNames.size()]; + Binding[] bindings = new Binding[currentVarNames.size()]; int j = 0; + assert newCurrentStatementMatcher.getPredicateValue() != null + || !currentVarNames + .contains(newCurrentStatementMatcher.getPredicateName()); + if (newCurrentStatementMatcher.getSubjectValue() == null && currentVarNames .contains(newCurrentStatementMatcher.getSubjectName())) { @@ -317,14 +326,6 @@ private List readStatementsInBulk(Set varNames) { temp.getSubject()); } - if (newCurrentStatementMatcher.getPredicateValue() == null - && currentVarNames - .contains(newCurrentStatementMatcher.getPredicateName())) { - bindings[j++] = new SimpleBinding( - newCurrentStatementMatcher.getPredicateName(), - temp.getPredicate()); - } - if (newCurrentStatementMatcher.getObjectValue() == null && currentVarNames .contains(newCurrentStatementMatcher.getObjectName())) { @@ -333,6 +334,9 @@ private List readStatementsInBulk(Set varNames) { temp.getObject()); } if (bindings.length == 1) { + if (bindings[0] == null) { + throw new IllegalStateException("Binding is null!"); + } return new SingletonBindingSet(bindings[0].getName(), bindings[0].getValue()); diff --git a/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java b/core/sail/shacl/src/main/java/org/eclipse/rdf4j/sail/shacl/wrapper/data/ConnectionsGroup.java index 5e8ecba0743..38461cb1edf 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,7 +16,6 @@ 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; @@ -28,8 +27,6 @@ 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. diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java index 9392cbf043d..95f23ca2388 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/AbstractShaclTest.java @@ -115,7 +115,7 @@ abstract public class AbstractShaclTest { "test-cases/path/zeroOrOnePath" ); - public static final Set ISOLATION_LEVELS = Set.of( + public static final List ISOLATION_LEVELS = List.of( IsolationLevels.NONE, IsolationLevels.SNAPSHOT, IsolationLevels.SERIALIZABLE diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java index 44175008568..679d1d6e8dd 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/UnknownShapesTest.java @@ -104,13 +104,10 @@ public void testComplexPath() throws IOException { } } - Set relevantLog = getRelevantLog(4); + Set relevantLog = getRelevantLog(1); Set expected = Set.of( - "Unsupported SHACL feature detected: InversePath{ ZeroOrMorePath{ SimplePath{ } } }. Shape ignored! a sh:PropertyShape; sh:path [ sh:inversePath [ sh:zeroOrMorePath ] ]; sh:datatype xsd:int .", - "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrOnePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:oneOrMorePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", - "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrOnePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:zeroOrOnePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI .", - "Unsupported SHACL feature detected: InversePath{ ZeroOrMorePath{ SimplePath{ } } }. Shape ignored! a sh:PropertyShape; sh:path [ sh:inversePath [ sh:zeroOrMorePath ] ]; sh:minCount 1 ." + "Unsupported SHACL feature detected: AlternativePath{ [SimplePath{ }, ZeroOrOnePath{ SimplePath{ } }, SimplePath{ }] }. Shape ignored! a sh:PropertyShape; sh:path [ sh:alternativePath ( [ sh:zeroOrOnePath ] ) ]; sh:nodeKind sh:BlankNodeOrIRI ." ); Assertions.assertEquals(expected, relevantLog); diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java index cd428fceae4..965569a6ec6 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/W3cComplianceTest.java @@ -56,13 +56,11 @@ public class W3cComplianceTest { private final static Set TESTS_FAILING_DUE_TO_MISSING_FEATURES_FROM_THE_SPEC = Set.of( "/core/node/xone-001.ttl", "/core/node/xone-duplicate.ttl", - "/core/path/path-complex-001.ttl", - "/core/path/path-oneOrMore-001.ttl", - "/core/path/path-zeroOrMore-001.ttl", "/core/path/path-zeroOrOne-001.ttl", "/core/property/qualifiedMinCountDisjoint-001.ttl", "/core/property/qualifiedValueShapesDisjoint-001.ttl", - "/core/property/uniqueLang-002.ttl"); + "/core/property/uniqueLang-002.ttl" + ); public static Stream data() { return getTestFiles().stream() diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java index 8464583871b..1ecdcc16330 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/benchmark/SparqlConstraintsBenchmarkEmpty.java @@ -15,12 +15,8 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.model.Statement; -import org.eclipse.rdf4j.model.impl.SimpleValueFactory; -import org.eclipse.rdf4j.model.vocabulary.RDF; -import org.eclipse.rdf4j.model.vocabulary.RDFS; import org.eclipse.rdf4j.repository.sail.SailRepository; import org.eclipse.rdf4j.repository.sail.SailRepositoryConnection; import org.eclipse.rdf4j.rio.RDFFormat; diff --git a/core/sail/shacl/src/test/resources/complexPath.trig b/core/sail/shacl/src/test/resources/complexPath.trig index 6156512fe4d..ab26e8df364 100644 --- a/core/sail/shacl/src/test/resources/complexPath.trig +++ b/core/sail/shacl/src/test/resources/complexPath.trig @@ -20,6 +20,7 @@ ex:PersonShape ex:alternativePath , ex:nestedSequencePath , ex:alternativePathZeroOrOne , + ex:alternativePathZeroOrMore , ex:alternativePathOneOrMore . ex:inverseOfWithComplex @@ -47,6 +48,11 @@ ex:alternativePathZeroOrOne sh:path [ sh:alternativePath (ex:father [sh:zeroOrOnePath ex:parent] ex:mother ) ] ; sh:nodeKind sh:BlankNodeOrIRI . +ex:alternativePathZeroOrMore + sh:path [ sh:alternativePath (ex:father [sh:zeroOrMorePath ex:parent] ex:mother ) ] ; + sh:nodeKind sh:BlankNodeOrIRI . + + ex:alternativePathOneOrMore sh:path [ sh:alternativePath (ex:father [sh:oneOrMorePath ex:parent] ex:mother ) ] ; sh:nodeKind sh:BlankNodeOrIRI . diff --git a/core/sail/shacl/src/test/resources/logback-test.xml b/core/sail/shacl/src/test/resources/logback-test.xml index 990f3bb2551..40ced8210b0 100644 --- a/core/sail/shacl/src/test/resources/logback-test.xml +++ b/core/sail/shacl/src/test/resources/logback-test.xml @@ -7,7 +7,7 @@ - + diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..5242e77e52d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..17b75d04990 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case1/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac982; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac982 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac982 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..6194108fba0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..d5fbf1d42da --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case2/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson2; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac9829; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac9829 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac9829 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq new file mode 100644 index 00000000000..b66cba3559b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl new file mode 100644 index 00000000000..1f65bb9b558 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/invalid/case3/report.ttl @@ -0,0 +1,31 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac9848; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:4e2d4e9d107d42408848b92cc2bcac9848 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac9848 sh:oneOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig new file mode 100644 index 00000000000..0cfb7bf0586 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath [sh:alternativePath (ex:ssn ex:socialSecurityNumber) ]]; + sh:minCount 2 ; + sh:message "Requires at least 2 social security numbers", "Trenger minst 2 fødselsnummer"@no-nb, "Requires at least 2 social security numbers"@en ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq new file mode 100644 index 00000000000..5503d3a67c0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq new file mode 100644 index 00000000000..d83a28ac680 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person; + ex:ssn "456". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq new file mode 100644 index 00000000000..dcc7172407e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq new file mode 100644 index 00000000000..9e6f58ccaf9 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq new file mode 100644 index 00000000000..72033356446 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/query3.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq new file mode 100644 index 00000000000..f0f7dff41af --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +[] ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq new file mode 100644 index 00000000000..10551edc99b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +insert { + ?a a ex:Person; + ex:ssn "456". +} where{ + ?a ex:ssn ?b. +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/oneOrMorePath/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..cd0f2c009fe --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..4994d318dcb --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case1/report.ttl @@ -0,0 +1,30 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:8235d18495e54f40834e0436a979b57f2; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:8235d18495e54f40834e0436a979b57f2 + ] + ] . + +_:8235d18495e54f40834e0436a979b57f2 rdf:first ex:ssnObject1; + rdf:rest (ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..52a62cd1dd1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..3c21c84f463 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { + + ex:o2 ex:ssnObject3 ex:o3. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..b1cf96d6afa --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/invalid/case2/report.ttl @@ -0,0 +1,30 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultMessage "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:resultPath _:8235d18495e54f40834e0436a979b57f32; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:message "Requires at least 2 social security numbers"@en, "Trenger minst 2 fødselsnummer"@no-nb, + "Requires at least 2 social security numbers"; + sh:minCount 2; + sh:path _:8235d18495e54f40834e0436a979b57f32 + ] + ] . + +_:8235d18495e54f40834e0436a979b57f32 rdf:first ex:ssnObject1; + rdf:rest (ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig new file mode 100644 index 00000000000..0047f6c1720 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path (ex:ssnObject1 ex:ssnObject2 ex:ssnObject3 ex:ssnObject4 ex:ssn) ; + sh:minCount 2 ; + sh:message "Requires at least 2 social security numbers", "Trenger minst 2 fødselsnummer"@no-nb, "Requires at least 2 social security numbers"@en ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq new file mode 100644 index 00000000000..52a62cd1dd1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/query1.rq @@ -0,0 +1,18 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq new file mode 100644 index 00000000000..a807e16f57d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query1.rq @@ -0,0 +1,17 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:ssnObject1 ex:o1. + +ex:o1 ex:ssnObject2 ex:o2. +ex:o2 ex:ssnObject3 ex:o3. +ex:o3 ex:ssnObject4 ex:o4. + +ex:o4 ex:ssn "123", "234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq new file mode 100644 index 00000000000..703e8569ff7 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/sequencePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq new file mode 100644 index 00000000000..5242e77e52d --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl new file mode 100644 index 00000000000..b451e1d95b2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98108; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98108 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98108 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq new file mode 100644 index 00000000000..6194108fba0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl new file mode 100644 index 00000000000..f98c8a79bab --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case2/report.ttl @@ -0,0 +1,28 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson2; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98127; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape _:4e2d4e9d107d42408848b92cc2bcac98126 + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98126 a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98127 . + +_:4e2d4e9d107d42408848b92cc2bcac98127 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq new file mode 100644 index 00000000000..b66cba3559b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl new file mode 100644 index 00000000000..cfcb429db2f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:shapesGraph rdf4j:SHACLShapeGraph; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98148; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:MinCountConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:minCount 3; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98148 + ] + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98148 sh:zeroOrMorePath [ + sh:alternativePath (ex:ssn ex:socialSecurityNumber) + ] . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig new file mode 100644 index 00000000000..3667e5751bf --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/shacl.trig @@ -0,0 +1,17 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + + rdf4j:SHACLShapeGraph { + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:zeroOrMorePath [sh:alternativePath (ex:ssn ex:socialSecurityNumber) ]]; + sh:minCount 3 ; + ] . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq new file mode 100644 index 00000000000..5503d3a67c0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq new file mode 100644 index 00000000000..7354a2d0833 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +ex:validPerson2 ex:ssn "123". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq new file mode 100644 index 00000000000..d83a28ac680 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 a ex:Person; + ex:ssn "456". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq new file mode 100644 index 00000000000..dcc7172407e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq new file mode 100644 index 00000000000..4f6ec8cb08a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:ssn "123", "456". + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq new file mode 100644 index 00000000000..9e6f58ccaf9 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 a ex:Person . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq new file mode 100644 index 00000000000..72033356446 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/query3.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +DELETE DATA { +ex:validPerson1 ex:ssn "123" . + +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq new file mode 100644 index 00000000000..f0f7dff41af --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +[] ex:ssn "123". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq new file mode 100644 index 00000000000..10551edc99b --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +insert { + ?a a ex:Person; + ex:ssn "456". +} where{ + ?a ex:ssn ?b. +} \ No newline at end of file diff --git a/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/minCount/zeroOrMorePath/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq new file mode 100644 index 00000000000..4ea35e63b00 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq new file mode 100644 index 00000000000..f81594b3c82 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq new file mode 100644 index 00000000000..ab32ba39da6 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq new file mode 100644 index 00000000000..04cccdf69c8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq new file mode 100644 index 00000000000..047e7654284 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq new file mode 100644 index 00000000000..30a45209ba2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p3 ex:knows3 "1234". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case4/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq new file mode 100644 index 00000000000..f14604ec8c3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case5/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq new file mode 100644 index 00000000000..b83e90e0b9c --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 [ex:knows2 [ex:knows3 [ex:knows1 ex:p2]]]. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl new file mode 100644 index 00000000000..d51742a3640 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/invalid/case6/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:2efb3d13c1264a1e82f94864ebbc900614999; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:2efb3d13c1264a1e82f94864ebbc900614999 + ]; + sh:value "1234" + ] . + +_:2efb3d13c1264a1e82f94864ebbc900614999 sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig new file mode 100644 index 00000000000..cd477663bfe --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/shacl.trig @@ -0,0 +1,19 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath (ex:knows1 ex:knows2 ex:knows3) ]; + sh:nodeKind sh:BlankNodeOrIRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq new file mode 100644 index 00000000000..9bdc8b449b3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq new file mode 100644 index 00000000000..5f2bab7c138 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathComplex/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq new file mode 100644 index 00000000000..747c66e1ad5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/query1.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows [ ex:knows [ ex:knows "1234" ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl new file mode 100644 index 00000000000..1d245d9721c --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:e6bc97aad3a0460c9710ad6f22a9570d15019; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:e6bc97aad3a0460c9710ad6f22a9570d15019 + ]; + sh:value "1234" + ] . + +_:e6bc97aad3a0460c9710ad6f22a9570d15019 sh:oneOrMorePath ex:knows . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq new file mode 100644 index 00000000000..7f561a7eec0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query1.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows [ ex:knows [ ex:knows "1234" ]]. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq new file mode 100644 index 00000000000..2ab72640fb0 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/query2.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person . + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl new file mode 100644 index 00000000000..4c04954e16e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:e6bc97aad3a0460c9710ad6f22a9570d15035; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:BlankNodeOrIRI; + sh:path _:e6bc97aad3a0460c9710ad6f22a9570d15035 + ]; + sh:value "1234" + ] . + +_:e6bc97aad3a0460c9710ad6f22a9570d15035 sh:oneOrMorePath ex:knows . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig new file mode 100644 index 00000000000..da372bfd09e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/shacl.trig @@ -0,0 +1,18 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:oneOrMorePath ex:knows ]; + sh:nodeKind sh:BlankNodeOrIRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq new file mode 100644 index 00000000000..205c7e8bd8e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/query1.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows [ ex:knows [ ex:knows [] ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq new file mode 100644 index 00000000000..76d499c1432 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows [ ex:knows [ ex:knows [] ]]. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq new file mode 100644 index 00000000000..c5a47bc073e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq new file mode 100644 index 00000000000..c0c6f6083d1 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 ex:knows []. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq new file mode 100644 index 00000000000..ffc6f52d22f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/query2.rq @@ -0,0 +1,13 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson2 + ex:knows ex:pete ; + a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq new file mode 100644 index 00000000000..6a2561ee83a --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows ex:peter. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case4/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq new file mode 100644 index 00000000000..04b61deb1f8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/query1.rq @@ -0,0 +1,12 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { +ex:validPerson1 a ex:Person ; + ex:knows []. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/oneOrMorePathSimple/valid/case5/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq new file mode 100644 index 00000000000..4ea35e63b00 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl new file mode 100644 index 00000000000..87404bf49b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case1/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98186; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98186 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98186 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq new file mode 100644 index 00000000000..f81594b3c82 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl new file mode 100644 index 00000000000..5d39bc0a08f --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case2/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98207; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98207 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98207 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq new file mode 100644 index 00000000000..ab32ba39da6 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq new file mode 100644 index 00000000000..04cccdf69c8 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl new file mode 100644 index 00000000000..4c7ca7153b7 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case3/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98228; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98228 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98228 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq new file mode 100644 index 00000000000..047e7654284 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq new file mode 100644 index 00000000000..30a45209ba2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p3 ex:knows3 "1234". +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl new file mode 100644 index 00000000000..03dd41ecd87 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case4/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98249; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98249 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98249 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq new file mode 100644 index 00000000000..f14604ec8c3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 "1234". + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/query2.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl new file mode 100644 index 00000000000..32204f7992e --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case5/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode ex:validPerson1; + sh:resultPath _:4e2d4e9d107d42408848b92cc2bcac98270; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:4e2d4e9d107d42408848b92cc2bcac98270 + ]; + sh:value "1234" + ] . + +_:4e2d4e9d107d42408848b92cc2bcac98270 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq new file mode 100644 index 00000000000..e328f8f9053 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + [] a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl new file mode 100644 index 00000000000..8f7d3a5a6cd --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/invalid/case6/report.ttl @@ -0,0 +1,27 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms false; + sh:result [ a sh:ValidationResult; + rsx:dataGraph rdf4j:nil; + rsx:shapesGraph rdf4j:nil; + sh:focusNode _:3d9086d5ce836d2b; + sh:resultPath _:c796ffb912304daa9258cc6b992eef4b2; + sh:resultSeverity sh:Violation; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent; + sh:sourceShape [ a sh:PropertyShape; + sh:nodeKind sh:IRI; + sh:path _:c796ffb912304daa9258cc6b992eef4b2 + ]; + sh:value _:3d9086d5ce836d2b + ] . + +_:c796ffb912304daa9258cc6b992eef4b2 sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig new file mode 100644 index 00000000000..1d1ecfa22eb --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/shacl.trig @@ -0,0 +1,19 @@ +@prefix ex: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . +@prefix rdf4j: . + +{ + ex:PersonShape a sh:NodeShape; + sh:targetClass ex:Person; + sh:property [ + sh:path [ sh:zeroOrMorePath (ex:knows1 ex:knows2 ex:knows3) ]; + sh:nodeKind sh:IRI + ] . + rdf4j:nil sh:shapesGraph rdf4j:nil. + + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq new file mode 100644 index 00000000000..9bdc8b449b3 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/query1.rq @@ -0,0 +1,15 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p2 ex:knows2 ex:p3. + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case1/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq new file mode 100644 index 00000000000..5f2bab7c138 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query1.rq @@ -0,0 +1,14 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person ; + ex:knows1 ex:p2. + + ex:p3 ex:knows3 ex:p4. + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq new file mode 100644 index 00000000000..99c705005d2 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/query2.rq @@ -0,0 +1,10 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:p2 ex:knows2 ex:p3. +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case2/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true . diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq new file mode 100644 index 00000000000..ce022f32e86 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/query1.rq @@ -0,0 +1,11 @@ +PREFIX ex: +PREFIX owl: +PREFIX rdf: +PREFIX rdfs: +PREFIX sh: +PREFIX xsd: + +INSERT DATA { + ex:validPerson1 a ex:Person . + +} diff --git a/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl new file mode 100644 index 00000000000..c0518dc88b5 --- /dev/null +++ b/core/sail/shacl/src/test/resources/test-cases/nodeKind/zeroOrMorePathComplex/valid/case3/report.ttl @@ -0,0 +1,12 @@ +@prefix ex: . +@prefix foaf: . +@prefix xsd: . +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix rsx: . +@prefix rdf4j: . + +[] a sh:ValidationReport; + rdf4j:truncated false; + sh:conforms true .