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
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()
def make_number(self, num): num = str(0 + eval(str(num), {}, {})) number = Term(num, ttype=self.number) number.number = True return number