def __add_relation(self, relation):
        """
            <parRelation id="maz3377.1000" type="sequential">
              <nucleus id="maz3377.1"/>
              <nucleus id="maz3377.2"/>
            </parRelation>
        """
        rel_id = self.ns + ':' + relation.attrib['id']
        rel_name = relation.attrib['type']
        rel_type = relation.tag
        self.add_node(rel_id, layers={self.ns, self.ns+':relation'},
                      attr_dict={self.ns+':rel_name': rel_name,
                                 self.ns+':rel_type': rel_type})

        rel_attrs = {self.ns+':rel_name': rel_name,
                     self.ns+':rel_type': rel_type,
                     'label': self.ns+':'+rel_name}

        if rel_type == 'parRelation':  # relation between two or more nucleii
            for nucleus in relation:
                nucleus_id = self.ns + ':' + nucleus.attrib['id']
                self.add_edge(rel_id, nucleus_id, layers={self.ns},
                              attr_dict=rel_attrs,
                              edge_type=EdgeTypes.spanning_relation)

        elif rel_type == 'hypRelation': # between nucleus and satellite
            hyp_error = ("<hypRelation> can only contain one nucleus and one"
                         "satellite: {}".format(etree.tostring(relation)))

            rel_elems = {elem.tag: elem.attrib['id'] for elem in relation}
            assert len(relation) == 2, hyp_error
            assert set(rel_elems.keys()) == {'nucleus', 'satellite'}, hyp_error

            # add dominance from relation root node to nucleus
            nucleus_id = self.ns + ':' + rel_elems['nucleus']
            self.add_edge(rel_id, nucleus_id, layers={self.ns},
                          attr_dict=rel_attrs,
                          edge_type=EdgeTypes.dominance_relation)

            # add dominance from nucleus to satellite
            satellite_id = self.ns + ':' + rel_elems['satellite']
            self.add_edge(nucleus_id, satellite_id,
                          layers={self.ns}, attr_dict=rel_attrs,
                          edge_type=EdgeTypes.dominance_relation)

        else:  # <relation>, <span>
            raise NotImplementedError