Skip to content

Instantly share code, notes, and snippets.

@rvanbruggen
Last active December 17, 2015 17:08
Show Gist options
  • Save rvanbruggen/5643379 to your computer and use it in GitHub Desktop.
Save rvanbruggen/5643379 to your computer and use it in GitHub Desktop.
*************************************************
**** BEER DATASET - CYPHER Query Examples ****
*************************************************
**** Beers from same brewery as DUVEL ****
START duvel=node:node_auto_index(name="Duvel")
MATCH
duvel<-[:BREWS]-brewery,
duvel-[:IS_A]->beertype,
otherbeer<-[:BREWS]-brewery,
otherbeer-[:IS_A]->beertype2
RETURN
otherbeer.name AS name,
beertype2.name AS beertype;
**** Beers from same brewery as ORVAL ****
START orval=node:node_auto_index(name="Orval")
MATCH
orval<-[:BREWS]-brewery,
orval-[:IS_A]->beertype,
otherbeer<-[:BREWS]-brewery,
otherbeer-[:IS_A]->beertype2
RETURN
otherbeer.name AS name,
beertype2.name AS beertype;
**** Beers from same type as ORVAL - ALL BELGIAN TRAPPISTS ****
START orval=node:node_auto_index(name="Orval")
MATCH
orval<-[:BREWS]-brewery,
orval-[:IS_A]->beertype,
otherbeer-[:IS_A]->beertype
RETURN
otherbeer.name AS name,
beertype.name AS beertype
ORDER BY otherbeer.name;
**** Beers that have same alcohol percentage as DUVEL ****
START duvel=node:node_auto_index(name="Duvel")
MATCH
duvel-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
duvel-[:IS_A]->beertype,
otherbeer-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
otherbeer-[IS_A]->otherbeertype
RETURN
otherbeer.name AS name,
otherbeertype.name AS beertype
ORDER BY otherbeer.name;
**** Beers that have same alcohol percentage and same type as DUVEL ****
START duvel=node:node_auto_index(name="Duvel")
MATCH
duvel-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
duvel-[:IS_A]->beertype,
otherbeer-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
otherbeer-[:IS_A]->beertype
RETURN
otherbeer.name AS name,
beertype.name AS beertype
ORDER BY otherbeer.name;
**** Beers that have same alcohol percentage and same type as ORVAL ****
START orval=node:node_auto_index(name="Orval")
MATCH
orval-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
orval-[:IS_A]->beertype,
otherbeer-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
otherbeer-[:IS_A]->beertype
RETURN
otherbeer.name AS name,
beertype.name AS beertype;
***
*** Find breweries that brew beers of same alcholpercentage as Duvel ***
***
START
duvel=node:node_auto_index(name='Duvel')
MATCH
duvel-[:HAS_ALCOHOL_PERCENTAGE]->alcohol,
alcohol<-[:HAS_ALCOHOL_PERCENTAGE]-otherbeers,
otherbeers<-[BREWED_BY]-brewery
RETURN alcohol.name, otherbeers.name, brewery.name;
**** All Paths between two beers BEFORE/AFTER transaction ****
START
duvel=node:node_auto_index(name="Duvel"),
orval=node:node_auto_index(name="Orval")
MATCH p = AllshortestPaths( duvel-[*]-orval )
RETURN p;
**** Transaction example ****
**** Adding Rik and his love for Duvel and Orval ****
begin
START
orval=node:node_auto_index(name="Orval"),
duvel=node:node_auto_index(name="Duvel")
CREATE
(rik{name:"Rik"}),
rik-[:LOVES]->orval,
rik-[:LOVES]->duvel
RETURN rik;
commit
**** Adding Rik and his love for Duvel and Orval - in one ASCII-art statement ****
begin
START
orval=node:node_auto_index(name="Orval"), duvel=node:node_auto_index(name="Duvel")
CREATE
orval<-[:LOVES]-(rik{name:"Rik"})-[:LOVES]->duvel
RETURN rik;
**** Finding number of beers per beertype ****
START
beertype=node:node_auto_index(type="BeerType")
MATCH
beer-[:IS_A]-beertype,
beer-[:HAS_ALCOHOL_PERCENTAGE]-alcperc
RETURN
beertype.name as BeerType, count(beer) as NumberOfBeers
ORDER BY NumberOfBeers DESC;
**** Demonstrate transaction ISOLATION ****
START rik=node:node_auto_index(name="Rik") MATCH rik-[r]-() RETURN r;
commit
rollback
**** Removing Rik and all Relationships ****
begin
START rik=node:node_auto_index(name="Rik")
MATCH rik-[rels]-()
delete rik,rels;
commit
**** Console ****
START root=node(0)
CREATE (orval{id:'1', name:'Orval', type:'BeerBrand'}),
(duvel{id:'2', name:'Duvel', type:'BeerBrand'}),
(heksemiebier{id:'3', name:'Heksemiebier', type:'BeerBrand'}),
(wilderengoud{id:'4', name:'Wilderen Goud', type:'BeerBrand'}),
(andorval{id:'10', name:'Abdij Notre-Dame d Orval', type:'Brewery'}),
(moortgat{id:'11', name:'brewery Duvel Moortgat', type:'Brewery'}),
(wilderen{id:'12', name:'brewery Wilderen', type:'Brewery'}),
(achilles{id:'13', name:'Microbrewery Achilles', type:'Brewery'}),
(hogegisting{id:'20', name:'Hoge gisting', type:'Beertype'}),
(trappist{id:'21', name:'Trappist', type:'Beertype'}),
(sixtwo{id:'30', name:'6.2', type:'AlcoholPercentage'}),
(eightfive{id:'31', name:'8.5', type:'AlcoholPercentage'}),
duvel-[:IS_A]->hogegisting,
duvel-[:ALCOHOL_PERCENTAGE]->eightfive,
duvel-[:BREWED_BY]->moortgat,
orval-[:IS_A]->trappist,
orval-[:ALCOHOL_PERCENTAGE]->sixtwo,
orval-[:BREWED_BY]->andorval,
heksemiebier-[:IS_A]->hogegisting,
heksemiebier-[:ALCOHOL_PERCENTAGE]->sixtwo,
heksemiebier-[:BREWED_BY]->achilles,
wilderengoud-[:IS_A]->hogegisting,
wilderengoud-[:ALCOHOL_PERCENTAGE]->sixtwo,
wilderengoud-[:BREWED_BY]->wilderen
MATCH p = AllshortestPaths( duvel-[*]-orval )
RETURN p;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment