summaryrefslogtreecommitdiff
path: root/src/local/domain/cri.rhizi.net/domain_cri.py
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-04-06 13:37:07 +0300
committerLV-426 <lv-426@taproot.org.il>2015-04-06 13:40:27 +0300
commit6999761762aa773234de1bb642e91026475ca234 (patch)
tree60b23398b2c3baffabce6a261c89aacfebb6e6d3 /src/local/domain/cri.rhizi.net/domain_cri.py
parenteca68e91c1aab13176742ef3d39dc7bd43fc23f0 (diff)
mving cri domain resources under cri.rhizi.net
Diffstat (limited to 'src/local/domain/cri.rhizi.net/domain_cri.py')
-rw-r--r--src/local/domain/cri.rhizi.net/domain_cri.py140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/local/domain/cri.rhizi.net/domain_cri.py b/src/local/domain/cri.rhizi.net/domain_cri.py
new file mode 100644
index 00000000..db6ed925
--- /dev/null
+++ b/src/local/domain/cri.rhizi.net/domain_cri.py
@@ -0,0 +1,140 @@
+from db_op import DB_op
+
+class DBO_random_data_generation__domain__CRI(DB_op):
+
+ def __init__(self, lim_n=50,
+ lim_r=10000,
+ prob_link_create=0.03):
+ """
+ generate random data: CRI domain: Person x Skill
+ """
+ super(DBO_random_data_generation__domain__CRI, self).__init__()
+
+ n_attr_set__skill_raw = ['Cryptocurrency',
+ 'Database architecture',
+ 'Web-development',
+ 'Mobile-development',
+ 'Machine learning',
+ 'Guitar Playing',
+ 'Image processing',
+ 'Algebra',
+ 'Calculus',
+ 'Molecular-Biology',
+ 'Graphic design',
+ 'Geo-location services',
+ 'Drone-building',
+ 'Artificial-intelligence',
+ 'Distributed information systems',
+ 'Wordpress',
+ 'Woodworking',
+ 'Quality-control',
+ 'Video-editing',
+ 'Soldering',
+ 'Network engineering',
+ 'GIT',
+ 'Electronic music',
+ 'Network administration']
+
+ n_attr_set__skill = []
+ for s in n_attr_set__skill_raw:
+ n_attr_set__skill.append(s)
+
+ n_attr_set__name = ['John',
+ 'William',
+ 'James',
+ 'Charles',
+ 'George',
+ 'Frank',
+ 'Joseph',
+ 'Thomas',
+ 'Henry',
+ 'Robert',
+ 'Edward',
+ 'Harry',
+ 'Walter',
+ 'Arthur',
+ 'Fred',
+ 'Albert',
+ 'Samuel',
+ 'David',
+ 'Louis',
+ 'Joe',
+ 'Charlie',
+ 'Clarence',
+ 'Richard',
+ 'Andrew',
+ 'Daniel',
+ 'Ernest',
+ 'Mary',
+ 'Anna',
+ 'Emma',
+ 'Elizabeth',
+ 'Minnie',
+ 'Margaret',
+ 'Ida',
+ 'Alice',
+ 'Bertha',
+ 'Sarah',
+ 'Annie',
+ 'Clara',
+ 'Ella',
+ 'Florence',
+ 'Cora',
+ 'Martha',
+ 'Laura',
+ 'Nellie',
+ 'Grace',
+ 'Carrie',
+ 'Maude',
+ 'Mabel',
+ 'Bessie',
+ 'Jennie',
+ 'Gertrude',
+ 'Julia']
+
+ 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]}' % (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
+ for skill_level in l_attr_set__level:
+ q_arr = ['match (n:%s),(m:%s)' % ('Person', 'Skill'),
+ 'with n, m, rand() as rand',
+ 'order by rand',
+ 'limit %d' % (lim_r - 1),
+ 'where rand() < %.2f' % (prob_link_create),
+ 'create (n)-[r:%s' % (skill_level),
+ '{id: \'test-id_\' + toString(%d + toInt(%d * rand())),' % (min_id, lim_r * 100000), # aim for low id collision probability,
+ 'proficiency: \'%s\'}' % (skill_level),
+ ']->(m)',
+ 'return collect(r.id)',
+ ]
+
+ self.add_statement(q_arr, q_param)