class_docstr: MCCLK is a knowledge-based recommendation model.
  It focuses on the contrastive learning in KG-aware recommendation and proposes a novel multi-level cross-view
  contrastive learning mechanism. This model comprehensively considers three different graph views for KG-aware
  recommendation, including global-level structural view, local-level collaborative and semantic views. It hence
  performs contrastive learning across three views on both local and global levels, mining comprehensive graph
  feature and structure information in a self-supervised manner.
class_docstr_tok: ["MCCLK","is","a","knowledge-based","recommendation","model",".","It","focuses","on","the","contrastive","learning","in","KG-aware","recommendation","and","proposes","a","novel","multi-level","cross-view","contrastive","learning","mechanism",".","This","model","comprehensively","considers","three","different","graph","views","for","KG-aware","recommendation",",","including","global-level","structural","view",",","local-level","collaborative","and","semantic","views",".","It","hence","performs","contrastive","learning","across","three","views","on","both","local","and","global","levels",",","mining","comprehensive","graph","feature","and","structure","information","in","a","self-supervised","manner","."]
code: def forward(self):
      user_emb = self.user_embedding.weight
      entity_emb = self.entity_embedding.weight
      # Construct a k-Nearest-Neighbor item-item semantic graph and Structural View Encoder
      entity_gcn_emb, user_gcn_emb, item_adj = self.gcn(
          user_emb, entity_emb
      )
      # Semantic View Encoder
      item_semantic_emb = [entity_emb]
      item_agg_emb = entity_emb
      for i in range(self.item_agg_layer):
          item_agg_emb = torch.sparse.mm(item_adj, item_agg_emb)
          item_semantic_emb.append(item_agg_emb)
      item_semantic_emb = torch.stack(item_semantic_emb, dim=1)
      item_semantic_emb = item_semantic_emb.mean(dim=1, keepdim=False)
      # item_semantic_emb = F.normalize(item_semantic_emb, p=2, dim=1)
  
      # Collaborative View Encoder
      user_lightgcn_emb, item_lightgcn_emb = self.light_gcn(
          user_emb, entity_emb, self.inter_graph
      )
  
      return (
          item_semantic_emb,
          user_lightgcn_emb,
          item_lightgcn_emb,
          user_gcn_emb,
          entity_gcn_emb,
      )
  
imports: import numpy
  import scipy.sparse
  import torch
  import torch.nn
  import torch.nn.functional
  from recbole.model.abstract_recommender import KnowledgeRecommender
  from recbole.model.init import xavier_normal_initialization
  from recbole.model.layers import SparseDropout
  from recbole.model.loss import BPRLoss, EmbLoss
  from recbole.utils import InputType
label_desc: Use image node_id 4 for calling the MCCLK obj's underlying member method code with example usage: obj.forward() and returns: item_semantic_emb,  user_lightgcn_emb,  item_lightgcn_emb,  user_gcn_emb,  entity_gcn_emb