 
 
 `{:name "irefweb-n-ary-interactions"
-  :description "interactions with >2 participants. IRefWeb refers to them as complexes,
-  but these interactions don't necessarily form complexes."
+  :description "IRefWeb distinguishes among three different categories of protein interactions:
+  those that involve a single protein interacting with itself (intra-molecular),
+  those that involve two proteins (binary), and those that involve >2 proteins (n-ary).
+  This rule generates bio-representations for all n-ary protein interactions cataloged by
+  IRefWeb, where n>2. N-ary interactions are indicated by an 'C' in the 'edge type' column of
+  IRefWeb records. The 'C' is referred to as 'complex' in the IRefWeb documentation, however this
+  is misleading as many of the n-ary interactions are only associations determined from an assay,
+  and are not necessarily protein complexes (as defined by the GO:protein_complex concept [GO:0043234]:
+  'A stable macromolecular complex composed (only) of two or more polypeptide subunits...').
+  For each n-ary interaction, this rule creates a subclass of the 'interaction type' (MI Ontology concept),
+  and that subclass is restricted using ro:has_participant to one of the n interacting proteins. N-ary
+  interactions are composed from multiple IRefWeb records as each record catalogs only a single
+  participant in the n-ary interaction. IRefWeb records involved in an n-ary interaction share a unique
+  interaction identifier which is used by the rule to connect all n participants for a given n-ary interaction.
+  The rule also places a minimum-cardinality restriction of 2 on the interaction subclass for the
+  ro:has_participant property."
   :head ((?/interaction rdfs/subClassOf ?/int_type_id) ;interaction
+         (?/interaction rdfs/label ?/int_type_label) ; transfer label to the subclass
 
          ;; create subclasses of the proteins
          (?/protein1_sc rdfs/subClassOf ?/protein1)
+         ;; TODO: UNCOMMENT below once kabob proteins have labels
+         ;;(?/protein1_sc rdfs/label ?/protein1_label) ; transfer label to the subclass
 
          (?/r1 rdf/type owl/Restriction)
          (?/r1 owl/onProperty obo/RO_0000057) ; has_participant
          (?/r1 owl/someValuesFrom ?/protein1_sc)
 
-           ;; create a cardinality restriction of >2 on the has_participant property
+         ;; create a cardinality restriction of >2 on the has_participant property
          (?/rcard rdf/type owl/Restriction)
          (?/rcard owl/onProperty obo/RO_0000057) ; has_participant
          (?/rcard owl/minCardinality 3) ;; n-ary interactions must have >2 participant.

                          :ns "kbio" :prefix "I_"}]
          [?/r1 {:ln (:restriction)
                 :ns "kbio" :prefix "R_"}]
          [?/protein1_sc {:ln (:sha-1 ?/interaction ?/protein1)
                          :ns "kbio" :prefix "P_"}])


   (?/id_field1 kiao/hasTemplate iaoirefweb/IRefWebInteractor_uniqueIdDataField1)
   (?/id_field1 obo/IAO_0000219 ?/id1) ;; iao/denotes
   (!= ?/id1 ?/unique_interaction_id)
   (?/id1 obo/IAO_0000219 ?/protein1) ;; iao/denotes
   ;; TODO: UNCOMMENT below once kabob proteins have labels
   ;;(?/protein1 rdfs:label ?/protein1_label) ;; get the protein label so that it can be
   ;; transfered to the generated protein subclass
   )

  ;; we take advantage of the fact that IRefWeb has
  ;; created a unique id for the interaction. This will allow us to reproducibly create
