def METHOD_NAME(self):
    """
    currently links nodes through 'is_a', 'has_role'
    without any distinction between the two
    """
    logging.info('Loading CheBI ontology into a graph...')
    self._g = nx.DiGraph()
    self._nodes_by_id = {}
    self._ids_by_name = {}
    metabolite = None
    for term in oboTerms(self.filename):
        if 'id' not in term:
            continue
        if term.get('name') == 'metabolite':
            metabolite = term['id']
        if 'is_a' in term:
            for parent in term['is_a']:
                self._g.add_edge(parent, term['id'])
        if 'relationship' in term:
            for parent in term['relationship']:
                if parent.startswith('has_role'):
                    role = parent.split(' ', 1)[1]
                    self._g.add_edge(role, term['id'])
        for synonym in term.get('synonym', []):
            if 'RELATED FORMULA' in synonym:
                s = synonym.split('"')[1]
                term['sum_formula'] = s
                try:
                    sf = pyisocalc.parseSumFormula(s)
                    term['_sf'] = sf
                except:
                    pass
            elif 'RELATED InChI ' in synonym:
                term['InChI'] = synonym.split('"')[1]
            elif 'RELATED InChIKey' in synonym:
                term['InChIKey'] = synonym.split('"')[1]
        self._nodes_by_id[term['id']] = term
        self._ids_by_name[term['name']] = term['id']
    logging.info('Found {} terms.'.format(len(self._nodes_by_id)))