def populate(engine): This_rule_base = engine.get_create('subway_rules') bc_rule.bc_rule('at_station', This_rule_base, 'at_station', at_station, None, (contexts.variable('station'),), (), (contexts.variable('from'), contexts.variable('line'), contexts.variable('station'), pattern.pattern_tuple((contexts.variable('line'),), None), contexts.anonymous('_'),)) bc_rule.bc_rule('travel_on_same_line', This_rule_base, 'take_line', travel_on_same_line, None, (contexts.variable('from'), contexts.variable('line'), contexts.variable('to'),), (), (contexts.variable('from'), pattern.pattern_tuple((contexts.variable('line'),), None), contexts.anonymous('_'), contexts.variable('to'),)) bc_rule.bc_rule('connected_stations', This_rule_base, 'connected', connected_stations, None, (contexts.variable('from'), contexts.variable('to'),), (), (contexts.variable('from'), contexts.variable('line'), contexts.anonymous('_'), contexts.variable('to'),))
def p_anonymous_var(p): ''' variable : ANONYMOUS_VAR_TOK ''' if goal_mode: p[0] = contexts.anonymous(p[1]) else: p[0] = "contexts.anonymous(%s)" % p[1]
def as_pattern(data): if isinstance(data, tuple) and is_pattern(data): if is_rest_var(data[-1]): name = data[-1][2:] if name[0] == '_': rest_var = contexts.anonymous(name) else: rest_var = contexts.variable(name) return pattern.pattern_tuple( tuple(as_pattern(element) for element in data[:-1]), rest_var) return pattern.pattern_tuple( tuple(as_pattern(element) for element in data)) if isinstance(data, (str, )) and is_pattern(data): name = data[1:] if name[0] == '_': return contexts.anonymous(name) return contexts.variable(name) return pattern.pattern_literal(data)
def as_pattern(data): if isinstance(data, tuple) and is_pattern(data): if is_rest_var(data[-1]): name = data[-1][2:] if name[0] == '_': rest_var = contexts.anonymous(name) else: rest_var = contexts.variable(name) return pattern.pattern_tuple(tuple(as_pattern(element) for element in data[:-1]), rest_var) return pattern.pattern_tuple(tuple(as_pattern(element) for element in data)) if isinstance(data, types.StringTypes) and is_pattern(data): name = data[1:] if name[0] == '_': return contexts.anonymous(name) return contexts.variable(name) return pattern.pattern_literal(data)
def populate(engine): This_rule_base = engine.get_create('fc_example') fc_rule.fc_rule('son_of', This_rule_base, son_of, (('family', 'son_of', (contexts.variable('child'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('child'), contexts.variable('father'), pattern.pattern_literal('father'), pattern.pattern_literal('son'), contexts.variable('mother'), pattern.pattern_literal('mother'),)) fc_rule.fc_rule('daughter_of', This_rule_base, daughter_of, (('family', 'daughter_of', (contexts.variable('child'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('child'), contexts.variable('father'), pattern.pattern_literal('father'), pattern.pattern_literal('daughter'), contexts.variable('mother'), pattern.pattern_literal('mother'),)) fc_rule.fc_rule('brothers', This_rule_base, brothers, (('family', 'son_of', (contexts.variable('brother1'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'son_of', (contexts.variable('brother2'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('brother1'), contexts.variable('brother2'), pattern.pattern_literal('brother'),)) fc_rule.fc_rule('sisters', This_rule_base, sisters, (('family', 'daughter_of', (contexts.variable('sister1'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'daughter_of', (contexts.variable('sister2'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('sister1'), contexts.variable('sister2'), pattern.pattern_literal('sister'),)) fc_rule.fc_rule('brother_and_sister', This_rule_base, brother_and_sister, (('family', 'son_of', (contexts.variable('brother'), contexts.variable('father'), contexts.variable('mother'),), False), ('family', 'daughter_of', (contexts.variable('sister'), contexts.variable('father'), contexts.variable('mother'),), False),), (contexts.variable('brother'), contexts.variable('sister'), pattern.pattern_literal('sister'), pattern.pattern_literal('brother'),)) fc_rule.fc_rule('facts_for_bc_rules', This_rule_base, facts_for_bc_rules, (), (pattern.pattern_literal('brother'), pattern.pattern_literal('uncle'), pattern.pattern_literal('sister'), pattern.pattern_literal('aunt'), pattern.pattern_literal('son'), pattern.pattern_literal('nephew'), pattern.pattern_literal('daughter'), pattern.pattern_literal('niece'),)) fc_rule.fc_rule('niece_or_nephew_and_aunt_or_uncle', This_rule_base, niece_or_nephew_and_aunt_or_uncle, (('family', 'child_parent', (contexts.variable('nn'), contexts.variable('parent'), contexts.variable('depth'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'siblings', (contexts.variable('parent'), contexts.variable('au'), contexts.variable('sibling_type'), contexts.anonymous('_'),), False), ('family', 'as_au', (contexts.variable('sibling_type'), contexts.variable('au_type'),), False), ('family', 'as_nn', (contexts.variable('child_type'), contexts.variable('nn_type'),), False),), (contexts.variable('greats'), contexts.variable('nn'), contexts.variable('au'), contexts.variable('au_type'), contexts.variable('nn_type'),)) fc_rule.fc_rule('parent_and_child', This_rule_base, parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('parent'), contexts.variable('parent_type'), contexts.variable('child_type'),), False),), (contexts.variable('child'), contexts.variable('parent'), pattern.pattern_literal(()), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('grand_parent_and_child', This_rule_base, grand_parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('parent'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'child_parent', (contexts.variable('parent'), contexts.variable('grand_parent'), contexts.variable('parent_type'), contexts.anonymous('_'),), False),), (contexts.variable('child'), contexts.variable('grand_parent'), pattern.pattern_literal(('grand',)), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('great_grand_parent_and_child', This_rule_base, great_grand_parent_and_child, (('family', 'child_parent', (contexts.variable('child'), contexts.variable('grand_child'), contexts.anonymous('_'), contexts.variable('child_type'),), False), ('family', 'child_parent', (contexts.variable('grand_child'), contexts.variable('grand_parent'), pattern.pattern_tuple((contexts.variable('a'),), contexts.variable('b')), contexts.variable('parent_type'), contexts.anonymous('_'),), False),), (contexts.variable('child'), contexts.variable('grand_parent'), pattern.pattern_tuple((pattern.pattern_literal('great'), contexts.variable('a'),), contexts.variable('b')), contexts.variable('parent_type'), contexts.variable('child_type'),)) fc_rule.fc_rule('first_cousins', This_rule_base, first_cousins, (('family', 'child_parent', (contexts.variable('cousin1'), contexts.variable('sibling1'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'siblings', (contexts.variable('sibling1'), contexts.variable('sibling2'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'child_parent', (contexts.variable('cousin2'), contexts.variable('sibling2'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('cousin1'), contexts.variable('cousin2'), pattern.pattern_literal(1),)) fc_rule.fc_rule('nth_cousins', This_rule_base, nth_cousins, (('family', 'child_parent', (contexts.variable('next_cousin1'), contexts.variable('cousin1'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False), ('family', 'child_parent', (contexts.variable('next_cousin2'), contexts.variable('cousin2'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('next_n'), contexts.variable('next_cousin1'), contexts.variable('next_cousin2'),)) fc_rule.fc_rule('how_related_child_parent', This_rule_base, how_related_child_parent, (('family', 'child_parent', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('prefix'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_parent_child', This_rule_base, how_related_parent_child, (('family', 'child_parent', (contexts.variable('person2'), contexts.variable('person1'), contexts.variable('prefix'), contexts.variable('p1_type'), contexts.variable('p2_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_siblings', This_rule_base, how_related_siblings, (('family', 'siblings', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('person1'), contexts.variable('person2'), pattern.pattern_tuple((contexts.variable('p1_type'), contexts.variable('p2_type'),), None),)) fc_rule.fc_rule('how_related_nn_au', This_rule_base, how_related_nn_au, (('family', 'nn_au', (contexts.variable('person1'), contexts.variable('person2'), contexts.variable('prefix'), contexts.variable('p2_type'), contexts.variable('p1_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_au_nn', This_rule_base, how_related_au_nn, (('family', 'nn_au', (contexts.variable('person2'), contexts.variable('person1'), contexts.variable('prefix'), contexts.variable('p1_type'), contexts.variable('p2_type'),), False),), (contexts.variable('relationship'), contexts.variable('person1'), contexts.variable('person2'),)) fc_rule.fc_rule('how_related_cousins', This_rule_base, how_related_cousins, (('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False),), (contexts.variable('nth'), contexts.variable('cousin1'), contexts.variable('cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'),), None),)) fc_rule.fc_rule('how_related_removed_cousins', This_rule_base, how_related_removed_cousins, (('family', 'child_parent', (contexts.variable('removed_cousin1'), contexts.variable('cousin1'), contexts.variable('grand'), contexts.anonymous('_'), contexts.anonymous('_'),), False), ('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False),), (contexts.variable('nth'), contexts.variable('r1'), contexts.variable('removed_cousin1'), contexts.variable('cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'), contexts.variable('r1'), pattern.pattern_literal('removed'),), None),)) fc_rule.fc_rule('how_related_cousins_removed', This_rule_base, how_related_cousins_removed, (('family', 'cousins', (contexts.variable('cousin1'), contexts.variable('cousin2'), contexts.variable('n'),), False), ('family', 'child_parent', (contexts.variable('removed_cousin2'), contexts.variable('cousin2'), contexts.variable('grand'), contexts.anonymous('_'), contexts.anonymous('_'),), False),), (contexts.variable('nth'), contexts.variable('r1'), contexts.variable('cousin1'), contexts.variable('removed_cousin2'), pattern.pattern_tuple((contexts.variable('nth'), pattern.pattern_literal('cousins'), contexts.variable('r1'), pattern.pattern_literal('removed'),), None),))