Skip to content

Instantly share code, notes, and snippets.

@jvilledieu
Created December 28, 2017 17:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jvilledieu/09b4d5639c4778e58d20de1599daba9d to your computer and use it in GitHub Desktop.
Save jvilledieu/09b4d5639c4778e58d20de1599daba9d to your computer and use it in GitHub Desktop.
//Creating companies
CALL apoc.load.json($url) YIELD value
WITH distinct value.home_domain as domain, value.home_name as name
merge (b:Business {domain:domain}) ON CREATE SET b.name = name;
//Creating more companies
call apoc.load.json($url) yield value
with distinct value.link_domain as domain, value.link_name as name
merge (b:Business {domain:domain}) ON CREATE SET b.name = name;
//connecting related companies
call apoc.load.json($url) yield value
where value.type is null
match (from:Business {domain:value.home_domain})
match (to:Business {domain:value.link_domain})
create (from)-[:RELATED_TO]->(to);
//connecting companies to customers
call apoc.load.json('https://query.data.world/s/_kQZwISTfInOevAL2Cy2SelUkue4NS') yield value
with toUpper(value.type) as type, value WHERE type = 'CUSTOMER'
match (from:Business {domain:value.home_domain})
match (to:Business {domain:value.link_domain})
create (from)-[:CUSTOMER {user:value.username,
date:apoc.date.parse(value.update_time.`$date`,'s',
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")}]->(to);
//connecting companies to competitors
CALL apoc.load.json($url) YIELD value
WITH value WHERE toUpper(value.type) = 'COMPETITOR'
MATCH (from:Business {domain:value.home_domain})
MATCH (to:Business {domain:value.link_domain})
MERGE (from)-[rel:COMPETITOR]->(to)
ON CREATE SET rel.user = value.username;
//connecting companies to suppliers
CALL apoc.load.json($url) YIELD value
WITH value WHERE toUpper(value.type) = 'SUPPLIER'
MATCH (from:Business {domain:value.home_domain})
MATCH (to:Business {domain:value.link_domain})
MERGE (from)-[rel:SUPPLIER]->(to)
ON CREATE SET rel.user = value.username,
rel.date = apoc.date.parse(value.update_time.`$date`,'s',"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//connecting companies to investments
CALL apoc.load.json($url) YIELD value
WITH value WHERE toUpper(value.type) = 'INVESTMENT'
MATCH (from:Business {domain:value.home_domain})
MATCH (to:Business {domain:value.link_domain})
MERGE (from)-[rel:INVESTMENT]->(to)
ON CREATE SET rel.user = value.username,
rel.date = apoc.date.parse(value.update_time.`$date`,'s',"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//connecting companies to partners
CALL apoc.load.json($url) YIELD value
WITH value WHERE toUpper(value.type) = 'PARTNERSHIP'
MATCH (from:Business {domain:value.home_domain})
MATCH (to:Business {domain:value.link_domain})
MERGE (from)-[rel:PARTNERSHIP]->(to)
ON CREATE SET rel.user = value.username,
rel.date = apoc.date.parse(value.update_time.`$date`,'s',"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//Adding page-rank
call algo.pageRank();
//Adding betweeness centrality for partnerships
call algo.betweenness('Business','PARTNERSHIP');
//cluster
call algo.labelPropagation('Business','CUSTOMER','OUTGOING',{iterations:10});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment