def create_relationship(self, relationship_form=None):
if relationship_form is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>if not isinstance(relationship_form, abc_relationship_objects.RelationshipForm):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if relationship_form.is_for_update():<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>try:<EOL><INDENT>if self._forms[relationship_form.get_id().get_identifier()] == CREATED:<EOL><INDENT>raise IllegalState('<STR_LIT>')<EOL><DEDENT><DEDENT>except KeyError:<EOL><INDENT>raise Unsupported('<STR_LIT>')<EOL><DEDENT>if not relationship_form.is_valid():<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>url_path = ('<STR_LIT>' +<EOL>self._catalog_idstr + '<STR_LIT>')<EOL>try:<EOL><INDENT>result = self._post_request(url_path, relationship_form._my_map)<EOL><DEDENT>except Exception:<EOL><INDENT>raise  <EOL><DEDENT>self._forms[relationship_form.get_id().get_identifier()] = CREATED<EOL>return objects.Relationship(result)<EOL>
Creates a new ``Relationship``.

        arg:    relationship_form (osid.relationship.RelationshipForm):
                the form for this ``Relationship``
        return: (osid.relationship.Relationship) - the new
                ``Relationship``
        raise:  IllegalState - ``relationship_form`` already used in a
                create transaction
        raise:  InvalidArgument - one or more of the form elements is
                invalid
        raise:  NullArgument - ``relationship_form`` is ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure
        raise:  Unsupported - ``relationship_form`` did not originate
                from ``get_relationship_form_for_create()``
        *compliance: mandatory -- This method must be implemented.*