Parameters
        ----------
        topic : etree.Element
            etree representation of a <topic> element
            (topic annotation of a text span, e.g. a sentence, edu or edu-range)

        Example
        -------
            <topic xml:id="topic_9_0" description="Kuli">
                <sentence xml:id="s128">

            ...

            <topic xml:id="topic_37_1" description="Die Pläne der AG">
                <edu-range xml:id="edus37_8_0-8_1">
                    <discRel relation="Restatement" marking="-" arg2="edu_37_9_0"/>
                        <sentence xml:id="s660">

def add_topic(self, topic):
        """
        Parameters
        ----------
        topic : etree.Element
            etree representation of a <topic> element
            (topic annotation of a text span, e.g. a sentence, edu or edu-range)

        Example
        -------
            <topic xml:id="topic_9_0" description="Kuli">
                <sentence xml:id="s128">

            ...

            <topic xml:id="topic_37_1" description="Die Pläne der AG">
                <edu-range xml:id="edus37_8_0-8_1">
                    <discRel relation="Restatement" marking="-" arg2="edu_37_9_0"/>
                        <sentence xml:id="s660">
        """
        topic_id = self.get_element_id(topic)
        self.add_node(topic_id, layers={self.ns, self.ns+':topic'},
                      description=topic.attrib['description'])
        topic_tokens = []
        for word in topic.iterdescendants('word'):
            word_id = self.get_element_id(word)
            topic_tokens.append(word_id)
            self.add_edge(topic_id, word_id, layers={self.ns, self.ns+':topic'},
                          edge_type=dg.EdgeTypes.spanning_relation)
        self.node[topic_id]['tokens'] = topic_tokens