def buildElement(self, token):
    
    element = None
    
    # arg, arg_mod, ncmod, det, xmod(vp, ap), xcomp (np, vp)
    if token.relation == 'aux':
      element = Element(sintax = 'AUX', element = "AUX[%s]" % (token.word), argument = 'AUXILIARY', relevance = 1)
    elif token.relation.endswith('subj'):
      element = Element(sintax = 'SUBJ', element = 'SUBJ', argument = 'SUBJECT', relevance = 1)
    elif token.relation in ['dobj', 'obj2', 'obj']:
      element = Element(sintax = 'NP', element = 'NP', argument = 'DIRECT.OBJECT', relevance = 1)
    elif token.relation in ['iobj', 'pcomp', 'pmod']:
      element = Element(sintax = 'PP', element = "PP[%s]"% (token.word), argument = 'INDIRECT.OBJECT', relevance = 1)
    elif token.morpho.startswith('R'):
      element = Element(sintax = 'ADVP', element = "ADVP", argument = 'ADJUNCT.ADVERBIAL', relevance = 1)
    elif token.morpho.startswith('J'):
      element = Element(sintax = 'ADJP', element = "ADJP", argument = 'ADJP', relevance = 1)
    elif token.morpho.startswith('M') or token.morpho.startswith('N') or token.morpho.startswith('P'):
      element = Element(sintax = 'NP', element = "NP", argument = 'NP', relevance = 1)
    elif token.morpho.startswith('V'):
      element = Element(sintax = 'VP', element = "VP", argument = 'SINF', relevance = 1)
    #else:
      #element = Element(sintax = token.relation, element = token.relation+"["+token.word+"]" , argument = token.relation, relevance = 1)

    if not element:
      return element
    
    element.position = token.id
    raw, begin, end = token.getPhrasalCore() 
    element.begin = begin
    element.end = end
    element.raw = raw
    
    return element
  def buildElement(self, argument):
    
    element = None

    sintax = argument.sintax
    if not sintax:
      return None

    if sintax.startswith('SUBJECT'):
      element = Element(argument = sintax.replace('SUBJECT', 'SUJ'), relevance = 1)
    elif sintax.startswith('REFLEXIVE.OBJECT'):
      element = Element(argument = sintax.replace('REFLEXIVE.OBJECT', 'REFL'), relevance = 3)
    elif sintax.startswith('DIRECT.OBJECT'):
      element = Element(argument = sintax.replace('DIRECT.OBJECT', 'OD'), relevance = 2)
    elif sintax.startswith('INDIRECT.OBJECT'):
      element = Element(argument = sintax.replace('INDIRECT.OBJECT', 'OI'), relevance = 4)
    elif sintax.startswith('ADJUNCT.ADVERBIAL'):
      element = Element(argument = sintax.replace('ADJUNCT.ADVERBIAL', 'AADV'), relevance = 5)
    elif sintax.startswith('PRONOMINAL.INDIRECT.OBJECT'):
      element = Element(argument = sintax.replace('PRONOMINAL.INDIRECT.OBJECT', 'OIP'), relevance = 2)
    elif sintax.startswith('CLAUSAL.DIRECT.OBJECT'):
      element = Element(argument = sintax.replace('CLAUSAL.DIRECT.OBJECT', 'ODO'), relevance = 2)
    elif sintax.startswith('PREDICATIVE'):
      element = Element(argument = sintax.replace('PREDICATIVE', 'PRED'), relevance = 2)
    elif sintax.startswith('PASSIVE.AGENT'):
      element = Element(argument = sintax.replace('PASSIVE.AGENT', 'AP'), relevance = 2)
    elif sintax == 'N' or sintax == 'NUM':
      element = Element(argument = sintax, relevance = 6)
    elif sintax == 'ADJ':
      element = Element(argument = sintax, relevance = 6)
    elif sintax == 'V':
      element = Element(argument = sintax, relevance = 7)
    
    if not element:
      return element

    element.semantic = argument.semantic 
    element.position = argument.position 

    return element
  def buildElement(self, token):
    
    element = None
      
    if token.function in ["SUBJ", "ICL-SUBJ", "FS-SUBJ"]:
      element = Element(sintax = 'SUBJ', element = 'SUBJ[NP]', argument = 'SUBJECT', relevance = 1)
    elif "ACC-PASS" in token.function or 'refl' in token.semantics:
      element = Element(sintax = 'REFL', element = 'REFL', argument = 'REFLEXIVE.OBJECT', relevance = 2)
    elif "ACC" == token.function:
      element = Element(sintax = 'NP', element = 'NP', argument = 'DIRECT.OBJECT', relevance = 3)
    elif token.function in ['PIV', 'SA', 'PASS']:
      element = Element(sintax = 'PP', element = "PP[%s]" % (token.lemma), argument = 'INDIRECT.OBJECT', relevance = 4)
      if token.function == 'PASS':
        element.argument = 'PASSIVE.AGENT'
    elif "ADVL" == token.function and not "ADV" in token.morphos:
      element = Element(sintax = 'PP', element = "PP[%s]" % (token.lemma), argument = 'ADVERBIAL.ADJUNCT', relevance = 4)
    elif "DAT" == token.function:
      element = Element(sintax = 'DAT', element = "DAT", argument = 'PRONOMINAL.INDIRECT.OBJECT', relevance = 2)
    elif token.function in ["FS-ACC", 'ICL-ACC']:
      element = Element(sintax = 'OCL', element = "OCL", argument = 'CLAUSAL.DIRECT.OBJECT', relevance = 3)
    elif token.function in ["SC", 'ICL-SC', 'FS-SC', 'OC', 'ICL-OC', 'FS-OC']:
      element = Element(sintax = 'PR', element = "PR", argument = 'PREDICATIVE', relevance = 4)
      if "PRP" in token.morphos:
        element.element = "PR[%s]" % (token.lemma)
    elif token.morphos and token.morphos[0]:
      if  'N' in token.morphos or  'NUM' in token.morphos:
        element = Element(sintax = 'NP', element = "NP", argument = None, relevance = 3)
      elif "ADJ" in token.morphos:
        element = Element(sintax = 'ADJP', element = "ADJP", argument = None, relevance = 5)
      elif "V" in token.morphos:
        element = Element(sintax = 'SINF', element = "SINF", argument = None, relevance = 5)

    if not element:
      return element
    
    element.position = token.id
    raw, begin, end = token.getPhrasalCore() 
    element.begin = begin
    element.end = end
    element.raw = raw

    return element