diff --git a/dictionary/ajax_lemma_view.py b/dictionary/ajax_lemma_view.py
index 87de5a9..4a42a1b 100644
--- a/dictionary/ajax_lemma_view.py
+++ b/dictionary/ajax_lemma_view.py
@@ -43,6 +43,7 @@ from dictionary.validation import find_similar_frames, get_all_test_missing_fram
                                   get_wrong_aspect_frames, validate_B_frames, get_deriv_miss_frames_message, \
                                   validate_phraseology_binded_frames, validate_rule_5, \
                                   validate_examples_and_mark_errors, validate_schemas_and_mark_errors, \
+                                  validate_schemata_for_semantics_and_mark_errors, \
                                   get_missing_aspects_msg, validate_same_positions_schemata
 
 from semantics.models import LexicalUnitExamples
@@ -2387,10 +2388,12 @@ def validate_new_frames(request, data, id, examples, lemma_examples,
   
   status_need_validation = False
   status_need_examples_check = False
+  status_need_semantic_check = False
   try:
       status_obj = Lemma_Status.objects.get(id=status_id)
       status_need_validation = status_obj.validate
       status_need_examples_check = status_obj.check_examples
+      status_need_semantic_check = status_obj.check_semantics
   except Lemma_Status.DoesNotExist:
       status_obj = None
 
@@ -2402,6 +2405,8 @@ def validate_new_frames(request, data, id, examples, lemma_examples,
       serialized_frames, error = validate_examples_and_mark_errors(old_object, status_obj, selected_frame_id)
   elif status_need_validation or not status_obj:
       serialized_frames, error = validate_schemas_and_mark_errors(old_object, status_obj, selected_frame_id)
+  elif status_need_semantic_check:
+      serialized_frames, error = validate_schemata_for_semantics_and_mark_errors(old_object, status_obj, selected_frame_id)
   
   if error:
     return {'id'             : '',
diff --git a/dictionary/validation.py b/dictionary/validation.py
index db12685..6736fbe 100644
--- a/dictionary/validation.py
+++ b/dictionary/validation.py
@@ -480,6 +480,27 @@ def are_examples_approved(lemma, schema, serialized_schema):
         error = True
     return error
 
+################### schemata validation for semantic statuses ##########
+def validate_schemata_for_semantics_and_mark_errors(lemma, status, selected_schema_id):
+    error = False
+    serialized_schemata = []
+    for schema_obj in lemma.frames.all():
+        serialized_schema = frameObjToSerializableDict(lemma, schema_obj, True)
+        if selected_schema_id and schema_obj.id != selected_schema_id:
+            serialized_schemata.append(serialized_schema)
+            continue 
+        if check_schema_for_semantics_and_mark_errors(lemma, status, schema_obj, serialized_schema):
+            error = True
+        serialized_schemata.append(serialized_schema)
+    return serialized_schemata, error
+
+def check_schema_for_semantics_and_mark_errors(lemma, status, schema, serialized_schema):
+    error = False
+    # WALIDACJA 34: Pod schematem z refl nie mogą być przykłady niepodpięte pod refl
+    if check_and_mark_examples_must_use_refl_rule(lemma, schema, serialized_schema):
+        error = True
+    return error
+    
 ###################### schemas validation ##############################  
 def validate_schemas_and_mark_errors(lemma, status, selected_frame_id):
     error = False