Beispiel #1
0
import context
from zincbase import KB

kb = KB()
b = kb.store('c(x)')
assert b == 0
b = kb.query('c(X)')
assert isinstance(b, types.GeneratorType)
b = list(b)
assert len(b) == 1
assert b[0]['X'] == 'x'
assert kb.node(b[0]['X']) == {}
b = kb.store('c(y)')
assert b == 1
b = kb.delete_rule(1)
assert b
assert not list(kb.query('c(y)'))
b = kb.store('c(y)')
assert b == 1
b = kb.query('c(X)')
b = list(b)
assert len(b) == 2
assert b[0]['X'] in ('x', 'y')
assert b[1]['X'] in ('x', 'y')
assert b[0]['X'] != b[1]['X']
assert kb.node(b[0]['X']) == {}
assert kb.node(b[1]['X']) == {}
b = kb.store('loves(tom, shamala)')
assert 'tom' in kb.G
assert 'shamala' in kb.G
Beispiel #2
0
import context

from zincbase import KB
kb = KB()

kb.store('bought_ticket(tom)')

rule_num = kb.store('winner(X) :- bought_ticket(X), had_correct_numbers(X)')
assert str(kb.rule('winner(X)')) == 'winner(X)'
assert kb.rule(rule_num) == kb.rule('winner(X)')

assert list(kb.query('winner(X)')) == []
fake_lottery_win = kb.store('had_correct_numbers(tom)')
assert list(kb.query('winner(X)')) == [{'X': 'tom'}]
kb.delete_rule(fake_lottery_win)
assert list(kb.query('winner(X)')) == []

tom = kb.node('tom')

possible_winner_called = 0


def possible_winner(me, affected_nodes, node_that_changed, attr_changed,
                    cur_val, prev_val):
    global possible_winner_called
    if cur_val != 6:
        possible_winner_called += 1
        return False


kb.rule(rule_num).on_change = possible_winner
Beispiel #3
0
    'is_letter': 2.0
}, {
    'both_alpha': 2.0
}, {
    'is_letter': 0.9
}, False)]
neg_rule_idx = kb.store('~a(b,c)')
triples = kb.to_triples(data=True)
assert triples == [('b', 'a', 'c', {
    'is_letter': 2.0
}, {
    'both_alpha': 2.0
}, {
    'is_letter': 0.9
}, True)]
kb.delete_rule(neg_rule_idx)
triples = kb.to_triples(data=True)
assert triples == [('b', 'a', 'c', {
    'is_letter': 2.0
}, {
    'both_alpha': 2.0
}, {
    'is_letter': 0.9
}, False)]
kb.edge('b', 'a', 'c').truthiness = -1
triples = kb.to_triples(data=True)
assert triples == [('b', 'a', 'c', {
    'is_letter': 2.0
}, {
    'both_alpha': 2.0,
    'truthiness': -1
Beispiel #4
0
"""
import context

from zincbase import KB

kb = KB()
kb.seed(555)

kb.from_csv('./assets/countries_s1_train.csv', delimiter='\t')

rule_num = kb.store('~locatedin(canada, africa)')

b = list(kb.query('locatedin(canada, X)'))
assert len(b) == 1
assert b[0]['X'] == 'northern_america'
assert kb.delete_rule(rule_num)

kb.build_kg_model(cuda=False, embedding_size=100)

kb.train_kg_model(steps=500, batch_size=512, neg_ratio=0.01)

canada_in_africa_naive = kb.estimate_triple_prob('canada', 'locatedin',
                                                 'africa')
canada_in_asia_naive = kb.estimate_triple_prob('canada', 'locatedin', 'asia')

austria_neighbors_spain_naive = kb.estimate_triple_prob(
    'austria', 'neighbor', 'spain')
austria_neighbors_france_naive = kb.estimate_triple_prob(
    'austria', 'neighbor', 'france')

kb = KB()