code: def declare_string(self, value):
          # type: (Union[Text, str]) -> Tuple[ProvEntity,Text]
          
          byte_s = BytesIO(str(value).encode(ENCODING))
          data_file = self.research_object.add_data_file(byte_s, content_type=TEXT_PLAIN)
          checksum = posixpath.basename(data_file)
          # FIXME: Don't naively assume add_data_file uses hash in filename!
          data_id = "data:%s" % posixpath.split(data_file)[1]
          entity = self.document.entity(
              data_id, {provM.PROV_TYPE: WFPROV["Artifact"],
                        provM.PROV_VALUE: str(value)})  # type: ProvEntity
          return entity, checksum
docs: Save as string in UTF-8.