summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-02-02 21:25:06 +0200
committerLV-426 <lv-426@taproot.org.il>2015-02-02 21:37:02 +0200
commitc176e1c951ea8a6ca051457f18860b52918958e8 (patch)
tree3779240e8d6712364ac1c036f92dacfc51552031 /src
parent8529e057a988d22696676c7a4f649636dde932b9 (diff)
CRI domain: DBO_random_data_generation__domain__CRI()
Diffstat (limited to 'src')
-rw-r--r--src/local/domain/__init__.py0
-rw-r--r--src/local/domain/cri/__init__.py0
-rw-r--r--src/local/domain/cri/domain_cri.py75
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)