Load the provenance of this document

        .. note::
           This method is called automatically if needed when the :py:meth:`prov` property is accessed. Manual use of
           this method is unusual.

        :param document_id: (optional) set the document id if this is an :py:meth:`abstract` document
        :return: :py:class:`prov.model.ProvDocument

def read_prov(self, document_id=None):
        """
        Load the provenance of this document

        .. note::
           This method is called automatically if needed when the :py:meth:`prov` property is accessed. Manual use of
           this method is unusual.

        :param document_id: (optional) set the document id if this is an :py:meth:`abstract` document
        :return: :py:class:`prov.model.ProvDocument
        """
        if document_id:
            if not self.abstract:
                raise ImmutableDocumentException()
            self._id = document_id

        if self.abstract:
            raise AbstractDocumentException()

        self._prov = self._api.get_document_prov(self.id)
        return self._prov