<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_discrel(self, discrel):
 """ Add a discourse relation to the document graph. Parameters add_discrel : etree.Element etree representation of a <discRel> element which describes the relation between two EDUs. The ID of the other EDU is given in the arg2 attribute. Note, that arg2 can either reference an EDU (e.g. edu_9_3_2 or an EDU range, e.g. edus9_3_1-5_0). Example ------- <edu xml:id="edu_9_3_0"> <discRel relation="Explanation-Speechact" marking="-" arg2="edus9_3_1-5_0"/> <node xml:id="s128_504" cat="SIMPX" func="--"> </node> <word xml:id="s128_3" form=":" pos="$." lemma=":" func="--" deprel="ROOT"/> </edu> <edu xml:id="edu_9_3_1"> <discRel relation="Continuation" marking="-" arg2="edu_9_3_2"/> <node xml:id="s128_506" cat="VF" func="-" parent="s128_525"> </node> </edu> """

        if self.ignore_relations is False:
            arg1_id = self.get_element_id(discrel)
            arg2_id = discrel.attrib['arg2']
            reltype = discrel.attrib['relation']
            discrel_attribs = self.element_attribs_to_dict(discrel)
            self.node[arg1_id].update(discrel_attribs)
            self.add_layer(arg1_id, self.ns+':discourse')
            self.add_layer(arg1_id, self.ns+':relation')
            self.add_edge(arg1_id, arg2_id,
                          layers={self.ns, self.ns+':discourse', self.ns+':relation'},
                          edge_type=dg.EdgeTypes.pointing_relation,
                          relation=reltype,
                          label='discourse:'+reltype)