Ejemplo n.º 1
0
    def make_var(self, name):
        '''
        Make a term that represents a variable in a rule or query.
        It is not added to the session.
        Its name has the original trailing digits.

        '''
        try:
            return self.get_term(name)
        except exceptions.TermNotFound:
            pass
        m = patterns.varpat.match(name)
        if m.group(2):
            basename = m.group(1).lower()
            bases = self.get_term(basename)
            var = self.make_subterm(name, bases)
        else:
            tname = m.group(1).lower()
            if len(tname) == 1:
                tvar = self.number
            else:
                tvar = self.get_term(tname)
            if isa(tvar, self.verb) or tvar == self.number:
                var = Term(name, ttype=tvar)
            else:
                var = self.make_term(name, tvar)
        var.var = True
        self.session.add(var)
        return var
Ejemplo n.º 2
0
 def initialize(cls, session):
     '''
     Create basic terms.
     '''
     word = Term('word', _bootstrap=True)
     session.add(word)
     session.commit()
     word.term_type = word
     session.commit()
     verb = Term('verb', ttype=word, bases=(word,))
     session.add(verb)
     noun = Term('noun', ttype=word, bases=(word,))
     session.add(noun)
     number = Term('number', ttype=word, bases=(word,))
     session.add(number)
     exist = Term('exist', ttype=verb, bases=(word,),
                   objs={'subj': word})
     session.add(exist)
     endure = Term('endure', ttype=verb, bases=(exist,),
                    objs={'since_': number, 'till_': number})
     session.add(endure)
     exclusive_endure = Term('exclusive-endure', ttype=verb, bases=(endure,))
     session.add(exclusive_endure)
     occur = Term('occur', ttype=verb, bases=(exist,),
                objs={'at_': number})
     session.add(occur)
     happen = Term('happen', ttype=verb, bases=(occur,))
     session.add(happen)
     time = Term('time', ttype=verb, bases=(exist,),
                 objs={'subj': number})
     session.add(time)
     thing = Term('thing', ttype=noun, bases=(word,))
     session.add(thing)
     finish = Term('finish', ttype=verb, bases=(occur,),
                   objs={'subj': thing, 'what': exist})
     session.add(finish)
     time = Time()
     session.add(time)
     session.commit()
Ejemplo n.º 3
0
 def make_number(self, num):
     num = str(0 + eval(str(num), {}, {}))
     number = Term(num, ttype=self.number)
     number.number = True
     return number