class_docstr: Initialise a XMLBIFWriter object.
  
  Parameters
  ----------
  model: BayesianNetwork Instance
      Model to write
  
  encoding: str (optional)
      Encoding for text data
  
  prettyprint: Bool(optional)
      Indentation in output XML if true
  
  Examples
  --------
  >>> from pgmpy.readwrite import XMLBIFWriter
  >>> from pgmpy.utils import get_example_model
  >>> model = get_example_model('asia')
  >>> writer = XMLBIFWriter(model)
  >>> writer.write_xmlbif('asia.xml')
  
  Reference
  ---------
  [1] https://www.cs.cmu.edu/afs/cs/user/fgcozman/www/Research/InterchangeFormat/
docstr: Add Definition to XMLBIF
  
  Return
  ------
  dict: dict of type {variable: definition tag}
  
  Examples
  --------
  >>> writer = XMLBIFWriter(model)
  >>> writer.get_definition()
  {'hear-bark': <Element DEFINITION at 0x7f1d48977408>,
   'family-out': <Element DEFINITION at 0x7f1d489773c8>,
   'dog-out': <Element DEFINITION at 0x7f1d48977388>,
   'bowel-problem': <Element DEFINITION at 0x7f1d48977348>,
   'light-on': <Element DEFINITION at 0x7f1d48977448>}
docstr_tok: ["Add","Definition","to","XMLBIF","Return","--","--","--","dict",":","dict","of","type","{","variable",":","definition","tag","}","Examples","--","--","--","--",">",">",">","writer","=","XMLBIFWriter","(","model",")",">",">",">","writer.get_definition","(",")","{","'hear-bark","'",":","<","Element","DEFINITION","at","0x7f1d48977408",">",",","'family-out","'",":","<","Element","DEFINITION","at","0x7f1d489773c8",">",",","'dog-out","'",":","<","Element","DEFINITION","at","0x7f1d48977388",">",",","'bowel-problem","'",":","<","Element","DEFINITION","at","0x7f1d48977348",">",",","'light-on","'",":","<","Element","DEFINITION","at","0x7f1d48977448",">","}"]
code: def get_definition(self):
      """
      Add Definition to XMLBIF
  
      Return
      ------
      dict: dict of type {variable: definition tag}
  
      Examples
      --------
      >>> writer = XMLBIFWriter(model)
      >>> writer.get_definition()
      {'hear-bark': <Element DEFINITION at 0x7f1d48977408>,
       'family-out': <Element DEFINITION at 0x7f1d489773c8>,
       'dog-out': <Element DEFINITION at 0x7f1d48977388>,
       'bowel-problem': <Element DEFINITION at 0x7f1d48977348>,
       'light-on': <Element DEFINITION at 0x7f1d48977448>}
      """
      cpds = self.model.get_cpds()
      cpds.sort(key=lambda x: x.variable)
      definition_tag = {}
      for cpd in cpds:
          definition_tag[cpd.variable] = etree.SubElement(
              self.network, "DEFINITION"
          )
          etree.SubElement(
              definition_tag[cpd.variable], "FOR"
          ).text = cpd.variable
          for parent in cpd.variables[1:]:
              etree.SubElement(
                  definition_tag[cpd.variable], "GIVEN"
              ).text = parent
  
      return definition_tag
  
imports: import xml.etree.ElementTree
  from io import BytesIO
  from itertools import chain
  import numpy
  import pyparsing
  from pgmpy.factors.discrete import State, TabularCPD
  from pgmpy.models import BayesianNetwork
  from pgmpy.utils import compat_fns
label_desc: Use image node_id 8 for calling the XMLBIFWriter obj's underlying member method code with example usage: obj.get_definition() and returns: definition_tag