 
 `{:name "goa-cc"
   :head (
-         (?/loc rdfs/subClassOf obo/GO_0051179) ;localization
-
-         (?/protein rdfs/subClassOf ?/bioentity)
-         (?/gocc rdfs/subClassOf ?/go)
-         
-         (?/of1 rdf/type owl/Restriction)
-         (?/of1 owl/onProperty obo/RO_0002313) ;transports or maintains localization of
-         (?/of1 owl/someValuesFrom ?/protein)
-
-         (?/to1 rdf/type owl/Restriction)
-         (?/to1 owl/onProperty obo/RO_0002339) ; has target end location
-         (?/to1 owl/someValuesFrom ?/gocc)
-
-         ;;make the interaction be necessarily part of these 3 restrictions
-         ;;still need to add a sufficient definition
-         (?/loc rdfs/subClassOf ?/of1)
-         (?/loc rdfs/subClassOf ?/to1))
-    
-  :body ((?/go [rdfs/subClassOf *] obo/GO_0005575) ;cellular_component
-         (?/goid obo/IAO_0000219 ?/go) ; denotes
-         (?/fv0 obo/IAO_0000219 ?/goid) ; denotes
-         (?/fv0 kiao/hasTemplate  iaogoa/GoaGaf2FileRecord_ontologyTermIdDataField1)
-
-         (?/record obo/BFO_0000051 ?/fv0) ; has_part 
-         (?/record obo/BFO_0000051 ?/fv1) ; has_part
-
-         (?/fv1 kiao/hasTemplate iaogoa/GoaGaf2FileRecord_dbObjectIdDataField1)
-         (?/fv1 obo/IAO_0000219 ?/gp) ; denotes
-         (?/gp obo/IAO_0000219 ?/bioentity) ; denotes
-
-         
-         ;; ;;filter out the negations
+         ;; create a subclass of GO localization
+          (?/localization_sc rdfs/subClassOf obo/GO_0051179) ; GO:localization
+         ;; create a subclass of the participating bioentity 
+         (?/bioentity_sc rdfs/subClassOf ?/bioentity)
+         ;; create a subclass of cellular component
+         (?/component_sc rdfs/subClassOf ?/go_cc)
+ 
+         ;; create a transports_or_maintains_localization_of restriction
+         (?/trans_main_loc_restriction rdf/type owl/Restriction)
+         (?/trans_main_loc_restriction owl/onProperty obo/RO_0002313) ; RO:transports_or_maintains_localization_of
+         (?/trans_main_loc_restriction owl/someValuesFrom ?/bioentity_sc)
+
+         ;; create a has_target_end_location restriction
+         (?/target_end_restriction rdf/type owl/Restriction)
+         (?/target_end_restriction owl/onProperty obo/RO_0002339) ; RO:has_target_end_location
+         (?/target_end_restriction owl/someValuesFrom ?/component_sc)
+
+         ;; connect the localization subclass to the transports_or_maintains_localization_of and has_target_end restrictions
+         (?/localization_sc rdfs/subClassOf ?/trans_main_loc_restriction)
+         (?/localization_sc rdfs/subClassOf ?/target_end_restriction)
+  
+         ;; provenance: connect the record to the localization subclass
+         (?/record obo/IAO_0000219 ?/localization_sc)) ; IAO:denotes
+    
+  :body ((?/go_ice_id [rdfs/subClassOf *] ccp/IAO_EXT_0000200) ; ccp:GO_CC_concept_identifier
+         (?/go_ice_id obo/IAO_0000219 ?/go) ; IAO:denotes
+         (?/id_field_value rdf/type ?/go_ice_id)
+         (?/id_field_value rdf/type ccp/IAO_EXT_0000014) ; ccp:GAF_ontology_identifier_field_value
+         (?/record obo/BFO_0000051 ?/id_field_value) ; BFO:has_part
+         (?/record rdf/type ccp/IAO_EXT_0000007) ; ccp:GAF_record_v2.0
+
+         ;; retrieve the process participant identifier
+         (?/record obo/BFO_0000051 ?/bioentity_field_value) ; BFO:has_part
+         (?/bioentity_field_value rdf/type ccp/IAO_EXT_0000010) ; ccp:database_object_identifier_field_value
+         (?/bioentity_field_value rdf/type ?/bioentity_ice_id) 
+         (?/bioentity_ice_id obo/IAO_0000219 ?/participating_bioentity) ; IAO:denotes
+
+         ;; filter out the negations
           (:optional
-           ((?/record obo/BFO_0000051 ?/qualfv) ; has_part
-            (?/qualfv kiao/hasTemplate iaogoa/GoaGaf2FileRecord_qualifierDataField1)
-            (?/qualfv obo/IAO_0000219 ?/qualifier)))
+           ((?/record obo/BFO_0000051 ?/qualifier_fv) ; BFO:has_part
+            (?/qualifier_fv rdf/type ccp/IAO_EXT_0000013) ; ccp:GAF_qualifier_field_value
+            (?/qualifier_fv rdfs/label ?/qualifier))) ; IAO:denotes
           (:or (:not (:bound ?/qualifier))
                (:not (:regex ?/qualifier "^NOT" "i")))
 
-         ;;is it always a protein, or do we need to go up to GorGP?  
-         ;;(_/gp obo/IAO_0000219 ?/bioentity))
-
-         ;; (_/geneid obo/IAO_0000219 ?/gene)
-         ;; (?/gene [rdfs/subClassOf *] ?/gorgporv) 
-         ;; (?/gorgporv rdf/type kbio/GeneSpecificGorGPorVClass))
-
          )
-  :reify ([?/loc {:ln (:sha-1 obo/GO_0051179 ?/of1 ?/to1)
-                 :ns "kbio" :prefix "LOC_"}]
-          [?/of1 {:ln (:restriction)
-                 :ns "kbio" :prefix "R_"}]
-          [?/to1 {:ln (:restriction)
-                 :ns "kbio" :prefix "R_"}]
-          [?/protein {:ln (:sha-1 ?/go ?/bioentity)
-                     :ns "kbio" :prefix "P_"}]
-          [?/gocc {:ln (:sha-1 ?/go ?/bioentity)
-                   :ns "kbio" :prefix "CC_"}]
+  :reify ([?/localization_sc {:ln (:sha-1 obo/GO_0051179 ?/trans_main_loc_restriction ?/target_end_restriction)
+                             :ns "ccp" :prefix "LOC_"}]
+          [?/trans_main_loc_restriction {:ln (:restriction)
+                 :ns "ccp" :prefix "R_"}]
+          [?/target_end_restriction {:ln (:restriction)
+                 :ns "ccp" :prefix "R_"}]
+          [?/bioentity_sc {:ln (:sha-1 ?/go_cc ?/bioentity)
+                     :ns "kbio" :prefix "BE_"}]
+          [?/component_sc {:ln (:sha-1 ?/go_cc ?/bioentity)
+                    :ns "kbio" :prefix "CC_"}]
           )
 
   :options {:magic-prefixes [["franzOption_clauseReorderer" "franz:identity"]]}

         (?/bioentity_field_value rdf/type ?/bioentity_ice_id) 
         (?/bioentity_ice_id obo/IAO_0000219 ?/participating_bioentity) ; IAO:denotes

         ;;filter out the negations
          (:optional
           ((?/record obo/BFO_0000051 ?/qualifier_fv) ; has_part
            (?/qualifier_fv rdf/type ccp/IAO_EXT_0000013) ; ccp:GAF_qualifier_field_value
            (?/qualifier_fv rdfs/label ?/qualifier))) ; denotes
          (:or (:not (:bound ?/qualifier))
               (:not (:regex ?/qualifier "^NOT" "i")))
         )
  
  :reify ([?/bp {:ln (:sha-1 ?/process ?/hr1)
                 :ns "ccp" :prefix "BP_"}]
          [?/bioentity_sc {:ln (:sha-1 ?/process ?/participating_bioentity)
                    :ns "ccp" :prefix "BE_"}]


         ;; create a has_participant restriction
         (?/participation_restriction rdf/type owl/Restriction)
         (?/participation_restriction owl/onProperty obo/RO_0000057) ; RO:has_participant
         (?/participation_restriction  owl/someValuesFrom ?/bioentity_sc)

         ;; connect the process subclass to the participation restriction
