docs: def set(self, key: URIRef, value: Union[Literal, BNode, URIRef, str, int], lang: Optional[str]=None):
          """ Set the VALUE for KEY predicate in the Metadata Graph
  
          :param key: Predicate to be set (eg. DCT.creator)
          :param value: Value to be stored (eg. "Cicero")
          :param lang: [Optional] Language of the value (eg. "la")
          """
          if not isinstance(value, Literal) and lang is not None:
              value = Literal(value, lang=lang)
          elif not isinstance(value, (BNode, URIRef)):
              value, _type = term._castPythonToLiteral(value)
              if _type is None:
                  value = Literal(value)
              else:
                  value = Literal(value, datatype=_type)
          self.graph.set((self.asNode(), key, value))