Skip to content

Instantly share code, notes, and snippets.

@tptodorov
Forked from jexp/example.adoc
Last active August 29, 2015 14:27
Show Gist options
  • Save tptodorov/be3df9918a52f94c3616 to your computer and use it in GitHub Desktop.
Save tptodorov/be3df9918a52f94c3616 to your computer and use it in GitHub Desktop.
Logistic Map Model

Logistic Map Model

Set Up a Graph of Hubs and Connections

CREATE (ShanghaiF1: Factory {name: 'Factory1'})

CREATE (Shanghai:Airport:Port {name: 'Shanghai', code: 'SHA', cost: '400RMB + 0.6RMB*ps.weight', transit: 1, validity: '1/10/2015'})

CREATE (HongKongA:Airport:Port {name: 'Hong Kong', code: 'HKG', cost: '500HKD+0.6USD*ps.weight'})
CREATE (HongKongS:Seaport:Port {name: 'Hong Kong', code: 'HKGK', cost: '500HKD+0.6USD*ps.weight'})

CREATE (ParisA:Airport:Port {name: 'Paris', code: 'CDG', transit: 1, exclude: ['container']})
CREATE (ParisS:Seaport:Port {name: 'Paris', code: 'CDGS', transit: 1})
CREATE (France:Country {name: 'France'})

CREATE (ShanghaiF1)-[:LAND {carrier: 'X',cost: '500RMB+0.65RMB*ps.weight', conditions: ['ps.packages.all(_.total<2500)'], transit: 5}]->(Shanghai)
CREATE (Shanghai)-[:AIR {carrier: 'Y',cost: '0.8USD* ps.weight', conditions: ['ps.weight>1000'], transit: 10}]->(HongKongA)
CREATE (HongKongA)-[:LAND {carrier: 'XX',cost: '1USD* ps.weight', exclude: ["container"]}]->(HongKongS)
CREATE (HongKongA)-[:AIR {carrier: 'Z',cost: '3USD* ps.weight', exclude: ["batteries"], transit: 20, validity: '1/10/2015'}]->(ParisA)
CREATE (HongKongS)-[:SEA {carrier: 'Z',cost: '0.3USD* ps.weight', exclude: ["seeds"], transit: 40, validity: '1/10/2015'}]->(ParisS)

CREATE (ParisA)-[:IN]->(France)
CREATE (ParisS)-[:IN]->(France)

Shortests Paths From Factory to Paris Sea port

MATCH (o:Factory { name:"Factory1" }),(d:Airport { name:"Paris" }),
  p = allShortestPaths((o)-[*]-(d))
RETURN p

Shortests Paths From Factory to Paris Air port

MATCH (o:Factory { name:"Factory1" }),(d:Seaport { name:"Paris" }),
  p = allShortestPaths((o)-[*]-(d))
RETURN p

Shortests Paths From Factory to France

MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
  p = (o)-[*]-(d)
RETURN p

Shortests Paths From Factory to France via AIR and LAND only

Constained by mode.

MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
  p = (o)-[:IN|AIR|LAND*]-(d)
RETURN p

Exclude Paths by Keyword

This example, limits the paths by exclude keywords intead of mode. Could be applied based on content restrictions.

MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
  p = (o)-[*]-(d)
WHERE
  NONE( x IN nodes(p) WHERE "container" IN x.exclude OR "batteries" IN x.exclude)
  AND NONE( x IN relationships(p) WHERE "container" IN x.exclude OR "batteries" IN x.exclude)
RETURN p
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment