diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-02-02 21:25:06 +0200 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-02-02 21:37:02 +0200 |
| commit | c176e1c951ea8a6ca051457f18860b52918958e8 (patch) | |
| tree | 3779240e8d6712364ac1c036f92dacfc51552031 | |
| parent | 8529e057a988d22696676c7a4f649636dde932b9 (diff) | |
CRI domain: DBO_random_data_generation__domain__CRI()
| -rw-r--r-- | src/local/domain/__init__.py | 0 | ||||
| -rw-r--r-- | src/local/domain/cri/__init__.py | 0 | ||||
| -rw-r--r-- | src/local/domain/cri/domain_cri.py | 75 |
3 files changed, 75 insertions, 0 deletions
diff --git a/src/local/domain/__init__.py b/src/local/domain/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/local/domain/__init__.py diff --git a/src/local/domain/cri/__init__.py b/src/local/domain/cri/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/local/domain/cri/__init__.py diff --git a/src/local/domain/cri/domain_cri.py b/src/local/domain/cri/domain_cri.py new file mode 100644 index 00000000..c93b6473 --- /dev/null +++ b/src/local/domain/cri/domain_cri.py @@ -0,0 +1,75 @@ +from db_op import DB_op + +class DBO_random_data_generation__domain__CRI(DB_op): + + def __init__(self, lim_n=128, + lim_r=128 * 16, + prob_link_create=0.25): + """ + generate random data: CRI domain: Person x Skill + """ + super(DBO_random_data_generation__domain__CRI, self).__init__() + + n_attr_set__skill = ['Cryptocurrency', + 'Database architecture', + 'Web-development', + 'HTML', + 'Mobile-development', + 'Machine learning', + 'Guitar Playing', + 'Image processing'] + + n_attr_set__name = ['Yael', + 'Nofar', + 'Ela', + 'Tali', + 'Nimrod', + 'Lior', + 'Ehud', + 'Yaron'] + + l_attr_set__level = ['Novice', 'Intermediate', 'Expert'] + + + min_id = 10000 # separate group ids with numerical perfix + + # create persons + q_arr = ['with {n_attr_set__name} as n_attr_set', # TODO clean: foreach triggers SyntaxException: otherwise + 'foreach (idx in range(0,%d)' % (lim_n - 1), + '|', + 'create (n:%s' % ('Person'), + '{id: \'test-id_\' + toString(%d + idx),' % (min_id), + 'name: n_attr_set[idx %% %d] + \'_\' + toString(idx)}' % (len(n_attr_set__name)), + '))', + ] + q_param = {'n_attr_set__name': n_attr_set__name} + self.add_statement(q_arr, q_param) + min_id *= 2 + + # create skills + q_arr = ['with {skill_set} as skill_set', # TODO clean: foreach triggers SyntaxException: otherwise + 'foreach (idx in range(0,%d)' % (len(n_attr_set__skill) - 1), + '|', + 'create (n:%s' % ('Skill'), + '{id: \'test-id_\' + toString(idx + %d),' % (min_id), + 'name: skill_set[idx]}', + '))', + ] + q_param = {'skill_set': n_attr_set__skill} + self.add_statement(q_arr, q_param) + min_id *= 2 + + # create links + q_arr = ['match (n:%s),(m:%s)' % ('Person', 'Skill'), + 'with n, m, {l_attr_set__level} as l_attr_set__level', + 'limit %d' % (lim_r - 1), + 'where rand() < %.2f' % (prob_link_create), + 'create (n)-[r:%s' % ('Knows'), + '{id: \'test-id_\' + toString(%d + toInt(%d * rand())),' % (min_id, lim_r * 100000), # aim for low id collision probability, + 'proficiency: l_attr_set__level[toInt(%d * rand())]}' % (len(l_attr_set__level)), + ']->(m)', + 'return collect(r.id)', + ] + + q_param = {'l_attr_set__level': l_attr_set__level} + self.add_statement(q_arr, q_param) |
