GraphConnect 2014 SF: Dynamic Graphs: The Future of Neo4j Visualization
DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013
-
Upload
neo4j-the-fastest-and-most-scalable-native-graph-database -
Category
Technology
-
view
2.012 -
download
0
description
Transcript of DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013
![Page 1: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/1.jpg)
Innovate. Share. Connect.Chicago June 12-13
DIY Graph SearchMax De Marzi, Neo Technology
Tuesday, June 18, 13
![Page 2: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/2.jpg)
Can I Haz?Tuesday, June 18, 13
![Page 3: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/3.jpg)
NopeTuesday, June 18, 13
![Page 4: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/4.jpg)
#9,998,383,750,000
Tuesday, June 18, 13
![Page 5: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/5.jpg)
Can I make my own?
Tuesday, June 18, 13
![Page 6: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/6.jpg)
MaybeTuesday, June 18, 13
![Page 7: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/7.jpg)
What do I know about
NLP?Tuesday, June 18, 13
![Page 8: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/8.jpg)
NothingTuesday, June 18, 13
![Page 9: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/9.jpg)
What do I know?
Tuesday, June 18, 13
![Page 10: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/10.jpg)
Tuesday, June 18, 13
![Page 11: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/11.jpg)
andTuesday, June 18, 13
![Page 12: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/12.jpg)
CypherTuesday, June 18, 13
![Page 13: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/13.jpg)
I can query a graph
Tuesday, June 18, 13
![Page 14: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/14.jpg)
How?Tuesday, June 18, 13
![Page 15: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/15.jpg)
����������������� ���������������
Matching PatternsTuesday, June 18, 13
![Page 16: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/16.jpg)
ASCII Art
Tuesday, June 18, 13
![Page 17: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/17.jpg)
() --> ()
ASCII Art
Tuesday, June 18, 13
![Page 18: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/18.jpg)
Named Nodes
Tuesday, June 18, 13
![Page 19: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/19.jpg)
(A) --> (B)
Named Nodes
Tuesday, June 18, 13
![Page 20: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/20.jpg)
LOVES
Typed Relationships
Tuesday, June 18, 13
![Page 21: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/21.jpg)
A -[:LOVES]-> B
LOVES
Typed Relationships
Tuesday, June 18, 13
![Page 22: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/22.jpg)
Describing a Path
Tuesday, June 18, 13
![Page 23: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/23.jpg)
A --> B --> C
Describing a Path
Tuesday, June 18, 13
![Page 24: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/24.jpg)
A
B C
Multiple Paths
Tuesday, June 18, 13
![Page 25: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/25.jpg)
A --> B --> C, A --> C
A
B C
Multiple Paths
Tuesday, June 18, 13
![Page 26: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/26.jpg)
A --> B --> C, A --> C
A
B C
A --> B --> C <-- A
Multiple Paths
Tuesday, June 18, 13
![Page 27: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/27.jpg)
The START Clause
Tuesday, June 18, 13
![Page 28: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/28.jpg)
The START Clause
START me=node(1)RETURN me
Tuesday, June 18, 13
![Page 29: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/29.jpg)
with an Index
Tuesday, June 18, 13
![Page 30: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/30.jpg)
with an Index
START me=node:Users(name=‘Max’)RETURN me
Tuesday, June 18, 13
![Page 31: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/31.jpg)
The MATCH Clause
Tuesday, June 18, 13
![Page 32: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/32.jpg)
The MATCH Clause
START me=node:Users(name=‘Max’)MATCH me -[:friends]-> peopleRETURN people
Tuesday, June 18, 13
![Page 33: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/33.jpg)
My friends who like cheese
Tuesday, June 18, 13
![Page 34: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/34.jpg)
My friends who like cheese
START me=node:Users(name=‘Max’) thing=node:Things(name=‘Cheese’)MATCH me -[:friends]-> people -[:like]-> thingRETURN people
Tuesday, June 18, 13
![Page 35: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/35.jpg)
My friends who like cheese
Tuesday, June 18, 13
![Page 36: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/36.jpg)
My friends who like cheese
START me=node:Users(name=‘Max’) thing=node:Things(name=‘Cheese’)MATCH me -[:friends]-> people, people -[:like]-> thingRETURN people
Tuesday, June 18, 13
![Page 37: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/37.jpg)
My friends who like ?
Tuesday, June 18, 13
![Page 38: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/38.jpg)
My friends who like ?START me=node({me}), thing=node:Things({thing})MATCH me -[:friends]-> people, people -[:like]-> thingRETURN people
Params :{“me”: 1, “thing”: “name: cheese”}
Tuesday, June 18, 13
![Page 39: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/39.jpg)
My friends who like ? and ?
Tuesday, June 18, 13
![Page 40: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/40.jpg)
My friends who like ? and ?
START me=node({me}), thing1=node:Things({thing1}), thing2=node:Things({thing2})MATCH me -[:friends]-> people, people -[:like]-> thing1, people -[:like]-> thing2RETURN peopleParams :{“me”: 1, “thing1”: “name: cheese”, “thing2”: “name: wine”}
Tuesday, June 18, 13
![Page 41: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/41.jpg)
People who like ? and ?
Tuesday, June 18, 13
![Page 42: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/42.jpg)
People who like ? and ?START thing1=node:Things({thing1}), thing2=node:Things({thing2})MATCH people -[:like]-> thing1, people -[:like]-> thing2RETURN peopleParams :{“thing1”: “name: cheese”, “thing2”: “name: wine”}
Tuesday, June 18, 13
![Page 43: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/43.jpg)
I need to build a Cypher Query
Tuesday, June 18, 13
![Page 44: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/44.jpg)
SEMR
✦ Gateway drug to NLP
✦ 4 years old
✦ Didn’t work on my Mac
✦ Pointed me to Treetop
Tuesday, June 18, 13
![Page 45: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/45.jpg)
Treetop✦ Create a Grammar by
making some Rules
✦ Turn expression into Syntax Tree
✦ Build custom Syntax Nodes
✦ Prune the tree
✦ to_cypher
Tuesday, June 18, 13
![Page 46: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/46.jpg)
Friends Rule
Tuesday, June 18, 13
![Page 47: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/47.jpg)
Friends Rule
rule friends “friends” <Friends>end
Tuesday, June 18, 13
![Page 48: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/48.jpg)
friends to_cypher
Tuesday, June 18, 13
![Page 49: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/49.jpg)
friends to_cypher class Friends < Treetop::Runtime::SyntaxNode
def to_cypher
return {:start => "me = node({me})",
:match => "me -[:friends]-> people",
:return => "people",
:params => {"me" => nil }}
end
end
Tuesday, June 18, 13
![Page 50: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/50.jpg)
Likes Rule
Tuesday, June 18, 13
![Page 51: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/51.jpg)
Likes Rule
rule likes "who like" <Likes>end
Tuesday, June 18, 13
![Page 52: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/52.jpg)
likes to_cypher
Tuesday, June 18, 13
![Page 53: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/53.jpg)
likes to_cypher class Likes < Treetop::Runtime::SyntaxNode
def to_cypher
return {:match => "people -[:likes]-> thing"}
end
end
Tuesday, June 18, 13
![Page 54: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/54.jpg)
Thing Rule
Tuesday, June 18, 13
![Page 55: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/55.jpg)
Thing Rule
rule thing [a-zA-Z0-9]+ <Thing>end
Tuesday, June 18, 13
![Page 56: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/56.jpg)
thing to_cypher
Tuesday, June 18, 13
![Page 57: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/57.jpg)
thing to_cypherclass Thing < Treetop::Runtime::SyntaxNode
def to_cypher
return {:start => "thing = node:things({thing})",
:params => {"thing" => "name: " + self.text_value } }
end
end
Tuesday, June 18, 13
![Page 58: DIY Graph Search - Max De Marzi @ GraphConnect Boston + Chicago 2013](https://reader038.fdocuments.us/reader038/viewer/2022110119/555820dad8b42a25588b4ba3/html5/thumbnails/58.jpg)
Show and Tellhttps://github.com/maxdemarzi/neo_graph_search
http://maxdemarzi.com/2013/01/28/facebook-graph-search-with-cypher-and-neo4j/
Tuesday, June 18, 13