-
Notifications
You must be signed in to change notification settings - Fork 68
/
lookup_tables.py
54 lines (35 loc) · 1.44 KB
/
lookup_tables.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os
import grakn
KEYSPACE = "banking"
URI = "localhost:48555"
def execute_entity_query(query, grakn_client):
with grakn_client.session(keyspace=KEYSPACE) as session:
with session.transaction(grakn.TxType.READ) as tx:
result = tx.query(query)
concepts = result.collect_concepts()
entities = []
for c in concepts:
attrs = c.attributes()
entity = {"id": c.id}
for each in attrs:
entity[each.type().label()] = each.value()
entities.append(entity)
return entities
def get_entities(entity_type, grakn_client):
return execute_entity_query(f"match $x isa {entity_type}; get;", grakn_client)
def write_to_file(file_name, entities):
os.makedirs(os.path.dirname(file_name), exist_ok=True)
with open(file_name, "w+", encoding="utf-8") as f:
for e in entities:
f.write(f"{e}\n")
def run():
grakn_client = grakn.Grakn(uri=URI)
entities = get_entities("person", grakn_client)
people = list(map(lambda x: x["first-name"] + " " + x["last-name"], entities))
people = people + list(map(lambda x: x["first-name"], entities))
write_to_file("lookup_person.txt", set(people))
entities = get_entities("bank", grakn_client)
bank = list(map(lambda x: x["name"], entities))
write_to_file("lookup_bank.txt", set(bank))
if __name__ == "__main__":
run()