code: def parse_wd_json(self, wd_json):
          
          wd_data = {x: wd_json[x] for x in ('labels', 'descriptions', 'claims', 'aliases') if x in wd_json}
          wd_data['sitelinks'] = dict()
          self.entity_metadata = {x: wd_json[x] for x in wd_json if x not in
                                  ('labels', 'descriptions', 'claims', 'aliases', 'sitelinks')}
          self.sitelinks = wd_json.get('sitelinks', dict())
  
          self.statements = []
          for prop in wd_data['claims']:
              for z in wd_data['claims'][prop]:
                  data_type = [x for x in WDBaseDataType.__subclasses__() if x.DTYPE == z['mainsnak']['datatype']][0]
                  statement = data_type.from_json(z)
                  self.statements.append(statement)
  
          self.wd_json_representation = wd_data
          self.original_statements = copy.deepcopy(self.statements)
  
          return wd_data
docs: Parses a WD entity json and generates the datatype objects, sets self.wd_json_representation
          :param wd_json: the json of a WD entity
          :type wd_json: A Python Json representation of a WD item
          :return: returns the json representation containing 'labels', 'descriptions', 'claims', 'aliases', 'sitelinks'.