docs: def validate(
          self, nanopub: Mapping[str, Any]
      ) -> Tuple[bool, List[Tuple[str, str]]]:
          """Validates using the nanopub schema
  
          Args:
              nanopub (Mapping[str, Any]): nanopub dict
  
          Returns:
              Tuple[bool, List[Tuple[str, str]]]:
                  bool: Is valid?  Yes = True, No = False
                  List[Tuple[str, str]]: Validation issues, empty if valid, tuple is ('ERROR|WARNING', msg)
                      e.g. [('WARNING', "Context ID not found")]        """
  
          # Validate nanopub
          (is_valid, messages) = validate_to_schema(nanopub, self.nanopub_schema)
          if not is_valid:
              return messages
  
          # Extract BEL Version
          if nanopub["nanopub"]["type"]["name"].upper() == "BEL":
              bel_version = nanopub["nanopub"]["type"]["version"]
          else:
              is_valid = False
              return (
                  is_valid,
                  f"Not a BEL Nanopub according to nanopub.type.name: {nanopub['nanopub']['type']['name']}",
              )
  
          all_messages = []
          # Validate BEL Statements
          bel_obj = bel.lang.belobj.BEL(bel_version, self.endpoint)
          for edge in nanopub["nanopub"]["edges"]:
              bel_statement = f"{edge['subject']} {edge['relation']} {edge['object']}"
              parse_obj = bel_obj.parse(bel_statement)
              if not parse_obj.valid:
                  all_messages.extend(
                      (
                          "ERROR",
                          f"BEL statement parse error {parse_obj.error}, {parse_obj.err_visual}",
                      )
                  )
  
          # Validate nanopub.context
          for context in nanopub["nanopub"]["context"]:
              (is_valid, messages) = self.validate_context(context)
              all_messages.extend(messages)
  
          is_valid = True
          for _type, msg in all_messages:
              if _type == "ERROR":
                  is_valid = False
  
          return (is_valid, all_messages)