docs: def validate_to_schema(nanopub, schema) -> Tuple[bool, List[Tuple[str, str]]]:
      """Validate nanopub against jsonschema for nanopub
  
      Args:
          nanopub (Mapping[str, Any]): nanopub dict
          schema (Mapping[str, Any]): nanopub schema
  
      Returns:
          Tuple[bool, List[str]]:
              bool: Is valid?  Yes = True, No = False
              List[Tuple[str, str]]: Validation issues, empty if valid, tuple is ('Error|Warning', msg)
                  e.g. [('ERROR', "'subject' is a required property")]
      """
  
      v = jsonschema.Draft4Validator(schema)
      messages = []
      errors = sorted(v.iter_errors(nanopub), key=lambda e: e.path)
      for error in errors:
          for suberror in sorted(error.context, key=lambda e: e.schema_path):
              print(list(suberror.schema_path), suberror.message, sep=", ")
              messages.append(("ERROR", suberror.message))
  
      is_valid = True
      if errors:
          is_valid = False
  
      return (is_valid, messages)