JENA-1797: Shapes with class-based targets (sh:targetClass) are not applied to subclass instances
diff --git a/jena-shacl/src/main/java/org/apache/jena/shacl/validation/ValidationProc.java b/jena-shacl/src/main/java/org/apache/jena/shacl/validation/ValidationProc.java
index 12e1027..c6c3562 100644
--- a/jena-shacl/src/main/java/org/apache/jena/shacl/validation/ValidationProc.java
+++ b/jena-shacl/src/main/java/org/apache/jena/shacl/validation/ValidationProc.java
@@ -273,16 +273,14 @@
         Node targetObj = target.getObject();
         switch(target.getTargetType()) {
             case targetClass:
-                return G.listPO(data, RDF.Nodes.type, targetObj);
+            case implicitClass:
+                return G.listAllNodesOfType(data, targetObj);
             case targetNode:
                 return Collections.singletonList(targetObj);
             case targetObjectsOf:
                 return G.setSP(data, null, targetObj);
             case targetSubjectsOf:
                 return G.setPO(data, targetObj, null);
-            case implicitClass:
-                // Instances of the class and its subtypes.
-                return G.listAllNodesOfType(data, targetObj);
             default:
                 return Collections.emptyList();
         }
@@ -298,15 +296,14 @@
         Node targetObject = target.getObject();
         switch (target.getTargetType()) {
             case targetClass:
-                return hasType(data, node, targetObject);
+            case implicitClass:
+                return isOfType(data, node, targetObject);
             case targetNode:
                 return targetObject.equals(node);
             case targetObjectsOf:
                 return data.contains(null, targetObject, node);
             case targetSubjectsOf:
                 return data.contains(node, targetObject, null);
-            case implicitClass:
-                return isOfType(data, node, targetObject);
             default:
                 return false;
         }
diff --git a/jena-shacl/src/test/resources/std/core/targets/targetClass-001.ttl b/jena-shacl/src/test/resources/std/core/targets/targetClass-001.ttl
index 99ccc30..6de6425 100644
--- a/jena-shacl/src/test/resources/std/core/targets/targetClass-001.ttl
+++ b/jena-shacl/src/test/resources/std/core/targets/targetClass-001.ttl
@@ -13,9 +13,18 @@
   ex:myProperty "A" ;
   ex:myProperty "B" ;
 .
+ex:InvalidInstance2
+    rdf:type ex:MySubClass ;
+    ex:myProperty "A" ;
+    ex:myProperty "B" ;
+.
 ex:MyClass
   rdf:type rdfs:Class ;
 .
+ex:MySubClass
+    rdf:type rdfs:Class ;
+    rdfs:subClassOf ex:MyClass ;
+.
 ex:MyShape
   rdf:type sh:NodeShape ;
   sh:property ex:MyShape-myProperty ;
@@ -33,6 +42,10 @@
   ex:myProperty "A" ;
   ex:myProperty "B" ;
 .
+ex:ValidInstance3
+    rdf:type ex:MySubClass ;
+    ex:myProperty "A" ;
+.
 <>
   rdf:type mf:Manifest ;
   mf:entries (
@@ -57,6 +70,14 @@
           sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
           sh:sourceShape ex:MyShape-myProperty ;
         ] ;
+      sh:result [
+          rdf:type sh:ValidationResult ;
+          sh:focusNode ex:InvalidInstance2 ;
+          sh:resultPath ex:myProperty ;
+          sh:resultSeverity sh:Violation ;
+          sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
+          sh:sourceShape ex:MyShape-myProperty ;
+        ] ;
     ] ;
   mf:status sht:approved ;
 .