• Neo4j 文档


    Graph Fundamentals 基础
    Basic concepts to get you going.
    A graph database can store any kind of data using a few simple concepts:
    1. Nodes - graph data records 节点
    2. Relationships - connect nodes 关系
    3. Properties - named data values 属性
     
    A Graph Database
    Neo4j stores data in a Graph, with records called Nodes.
    The simplest graph has just a single node with some named values called Properties. Let's draw a social graph of our friends on the Neo4j team:
    1. Start by drawing a circle for the node
    2. Add the name Emil
    3. Note that he is from Sweden
    • Nodes are the name for data records in a graph
    • Data is stored as Properties
    • Properties are simple name/value pairs 属性是简单的名称/值对
     
    Labels
    Associate a set of nodes.
    Nodes can be grouped together by applying a Label to each member. In our social graph, we'll label each node that represents a Person.
    1. Apply the label "Person" to the node we created for Emil
    2. Color "Person" nodes red
    • A node can have zero or more labels
    • Labels do not have any properties
     
    More Nodes
    Schema-free, nodes can have a mix of common and unique properties.
    Like any database, storing data in Neo4j can be as simple as adding more records. We'll add a few more nodes:
    1. Emil has a klout score of 99
    2. Johan, from Sweden, who is learning to surf
    3. Ian, from England, who is an author
    4. Rik, from Belgium, has a cat named Orval
    5. Allison, from California, who surfs
    • Similar nodes can have different properties
    • Properties can be strings, numbers, or booleans
    • Neo4j can store billions of nodes
     
    Consider Relationships
    Connect nodes in the graph
    The real power of Neo4j is in connected data. To associate any two nodes, add a Relationship which describes how the records are related.
    In our social graph, we simply say who KNOWS whom:
    1. Emil KNOWS Johan and Ian
    2. Johan KNOWS Ian and Rik
    3. Rik and Ian KNOWS Allison
    • Relationships always have direction
    • Relationships always have a type
    • Relationships form patterns of data
    Relationship properties 关系属性
    Store information shared by two nodes.
    In a property graph, relationships are data records that can also contain properties. Looking more closely at Emil's relationships, note that:
    • Emil has known Johan since 2001
    • Emil rates Ian 5 (out of 5)
    • Everyone else can have similar relationship properties
    Next steps
    A property graph contains nodes and relationships, with properties on both.
     
    Keep getting started
     
    Introduction
    Getting started with Neo4j Browser
    Neo4j Browser is a command driven client, like a web-based shell environment. It is perfect for running ad-hoc graph queries, with just enough ability to prototype a Neo4j-based application.
    • Developer focused, for writing and running graph queries with Cypher
    • Exportable tabular results of any query result
    • Graph visualization of query results containing nodes and relationships
    • Convenient exploration of Neo4j's REST API
     
    Editor
    Command editing and execution
    The editor is the primary interface for entering and running commands. Enter Cypher queries to work with graph data. Use client-side commands like:help for other operations.
    • Single line editing for brief queries or commands
    • Switch to multi-line editing with <shift-enter>
    • Run a query with <ctrl-enter>
    • History is kept for easily retrieving previous commands
     
    Stream 流
    Scrolling series of result frames
    A result frame is created for each command execution, added to the top of the stream to create a scrollable collection in reverse chronological order.
    • Special frames like data visualization
    • Expand a frame to full screen
    • Remove a specific frame from the stream
    • Clear the stream with the :clear command
     
    Frame code view
    Viewing requests and responses
    The code tab displays everything sent to and received from the Neo4j server, including:
    • Request URI, HTTP method and headers
    • Reponse HTTP response code and headers
    • Raw request and response content in JSON format
     
    Sidebar
    Convenient clickable access
    The sidebar expands to reveal different functional panels for common queries and information.
    • Database metadata and basic information
    • Saved scripts organized into folders
    • Information links for docs and reference
    • Credits and licensing information
     
    Next steps
    Neo4j is like a mashup of a REPL + lightweight IDE + graph visualization.
     
    Keep getting started
    • Concepts - GraphDB 101
    • Cypher - query language
     
    Cypher 图形查询语言
    Neo4j's graph query language
    Neo4j's Cypher language is purpose built for working with graph data.
    • uses patterns to describe graph data
    • familiar SQL-like clauses
    • declarative, describing what to find, not how to find it
     
    CREATE
    Create a node
    Let's use Cypher to generate a small social graph.
    CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
    • CREATE clause to create data
    • () parenthesis to indicate a node
    • ee:Person a variable 'ee' and label 'Person' for the new node
    • {} brackets to add properties to the node
     
    MATCH
    Finding nodes
    Now find the node representing Emil:
    MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
    • MATCH clause to specify a pattern of nodes and relationships
    • (ee:Person) a single node pattern with label 'Person' which will assign matches to the variable 'ee'
    • WHERE clause to constrain the results
    • ee.name = "Emil" compares name property to the value "Emil"
    • RETURN clause used to request particular results
     
    CREATE more
    Nodes and relationships
    CREATE clauses can create many nodes and relationships at once.
    MATCH (ee:Person) WHERE ee.name = "Emil"
    CREATE
    (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
    (ir:Person { name: "Ian", from: "England", title: "author" }),
    (rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
    (ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
    # 创建关系
    (ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
    (js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
    (ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
    (rvb)-[:KNOWS]->(ally)
     
    Pattern matching
    Describe what to find in the graph
    For instance, a pattern can be used to find Emil's friends:
    MATCH (ee:Person)-[:KNOWS]-(friends)
    WHERE ee.name = "Emil" RETURN ee, friends
    • MATCH clause to describe the pattern from known Nodes to found Nodes
    • (ee) starts the pattern with a Person (qualified by WHERE)
    • -[:KNOWS]- matches "KNOWS" relationships (in either direction)
    • (friends) will be bound to Emil's friends
     
    Recommend
    Using patterns
    Pattern matching can be used to make recommendations. Johan is learning to surf, so he may want to find a new friend who already does:
    MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer) WHERE js.name = "Johan" AND surfer.hobby = "surfing" RETURN DISTINCT surfer
    • ()empty parenthesis to ignore these nodes
    • DISTINCTbecause more than one path will match the pattern
    • surferwill contain Allison, a friend of a friend who surfs
     
    Analyze
    Using the visual query plan
    Understand how your query works by prepending EXPLAIN or PROFILE:
    PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer) WHERE js.name = "Johan" AND surfer.hobby = "surfing" RETURN DISTINCT surfer
     
    Live Cypher warnings
    Identify query problems in real time
    As you type, the query editor notifies you about deprecated features and potentially expensive queries.
     
    Next steps
    Start your application using Cypher to create and query graph data. Use the REST API to monitor the database. In special cases, consider a plugin.
     
    Keep getting started
    • Intro - a guided tour
    • Concepts - GraphDB 101
    • The Movie Graph - create the movie graph
    • Northwind Graph - from RDBMS to graph
     
    Movie Graph
    Pop-cultural connections between actors and movies
    The Movie Graph is a mini graph application containing actors and directors that are related through the movies they've collaborated on.
    This guide will show you how to:
    1. Create: insert movie data into the graph
    2. Find: retrieve individual movies and actors
    3. Query: discover related actors and directors
    4. Solve: the Bacon Path
     
    Create
    To the right is a giant code block containing a single Cypher query statement composed of multiple CREATE clauses. This will create the movie graph.
    1. Click on the code block
    2. Notice it gets copied to the editor above ↑
    3. Click the editor's play button to execute
    4. Wait for the query to finish
    WARNING: This adds data to the current database, each time it is run!
    CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
    CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
    CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
    CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
    CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
    CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
    CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
    CREATE (JoelS:Person {name:'Joel Silver', born:1952})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
      (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
      (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
      (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
      (LillyW)-[:DIRECTED]->(TheMatrix),
      (LanaW)-[:DIRECTED]->(TheMatrix),
      (JoelS)-[:PRODUCED]->(TheMatrix)
     
    CREATE (Emil:Person {name:"Emil Eifrem", born:1978})
    CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix)
     
    CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded),
      (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixReloaded),
      (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixReloaded),
      (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixReloaded),
      (LillyW)-[:DIRECTED]->(TheMatrixReloaded),
      (LanaW)-[:DIRECTED]->(TheMatrixReloaded),
      (JoelS)-[:PRODUCED]->(TheMatrixReloaded)
     
    CREATE (TheMatrixRevolutions:Movie {title:'The Matrix Revolutions', released:2003, tagline:'Everything that has a beginning has an end'})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixRevolutions),
      (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixRevolutions),
      (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixRevolutions),
      (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixRevolutions),
      (LillyW)-[:DIRECTED]->(TheMatrixRevolutions),
      (LanaW)-[:DIRECTED]->(TheMatrixRevolutions),
      (JoelS)-[:PRODUCED]->(TheMatrixRevolutions)
     
    CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'})
    CREATE (Charlize:Person {name:'Charlize Theron', born:1975})
    CREATE (Al:Person {name:'Al Pacino', born:1940})
    CREATE (Taylor:Person {name:'Taylor Hackford', born:1944})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Kevin Lomax']}]->(TheDevilsAdvocate),
      (Charlize)-[:ACTED_IN {roles:['Mary Ann Lomax']}]->(TheDevilsAdvocate),
      (Al)-[:ACTED_IN {roles:['John Milton']}]->(TheDevilsAdvocate),
      (Taylor)-[:DIRECTED]->(TheDevilsAdvocate)
     
    CREATE (AFewGoodMen:Movie {title:"A Few Good Men", released:1992, tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth."})
    CREATE (TomC:Person {name:'Tom Cruise', born:1962})
    CREATE (JackN:Person {name:'Jack Nicholson', born:1937})
    CREATE (DemiM:Person {name:'Demi Moore', born:1962})
    CREATE (KevinB:Person {name:'Kevin Bacon', born:1958})
    CREATE (KieferS:Person {name:'Kiefer Sutherland', born:1966})
    CREATE (NoahW:Person {name:'Noah Wyle', born:1971})
    CREATE (CubaG:Person {name:'Cuba Gooding Jr.', born:1968})
    CREATE (KevinP:Person {name:'Kevin Pollak', born:1957})
    CREATE (JTW:Person {name:'J.T. Walsh', born:1943})
    CREATE (JamesM:Person {name:'James Marshall', born:1967})
    CREATE (ChristopherG:Person {name:'Christopher Guest', born:1948})
    CREATE (RobR:Person {name:'Rob Reiner', born:1947})
    CREATE (AaronS:Person {name:'Aaron Sorkin', born:1961})
    CREATE
      (TomC)-[:ACTED_IN {roles:['Lt. Daniel Kaffee']}]->(AFewGoodMen),
      (JackN)-[:ACTED_IN {roles:['Col. Nathan R. Jessup']}]->(AFewGoodMen),
      (DemiM)-[:ACTED_IN {roles:['Lt. Cdr. JoAnne Galloway']}]->(AFewGoodMen),
      (KevinB)-[:ACTED_IN {roles:['Capt. Jack Ross']}]->(AFewGoodMen),
      (KieferS)-[:ACTED_IN {roles:['Lt. Jonathan Kendrick']}]->(AFewGoodMen),
      (NoahW)-[:ACTED_IN {roles:['Cpl. Jeffrey Barnes']}]->(AFewGoodMen),
      (CubaG)-[:ACTED_IN {roles:['Cpl. Carl Hammaker']}]->(AFewGoodMen),
      (KevinP)-[:ACTED_IN {roles:['Lt. Sam Weinberg']}]->(AFewGoodMen),
      (JTW)-[:ACTED_IN {roles:['Lt. Col. Matthew Andrew Markinson']}]->(AFewGoodMen),
      (JamesM)-[:ACTED_IN {roles:['Pfc. Louden Downey']}]->(AFewGoodMen),
      (ChristopherG)-[:ACTED_IN {roles:['Dr. Stone']}]->(AFewGoodMen),
      (AaronS)-[:ACTED_IN {roles:['Man in Bar']}]->(AFewGoodMen),
      (RobR)-[:DIRECTED]->(AFewGoodMen),
      (AaronS)-[:WROTE]->(AFewGoodMen)
     
    CREATE (TopGun:Movie {title:"Top Gun", released:1986, tagline:'I feel the need, the need for speed.'})
    CREATE (KellyM:Person {name:'Kelly McGillis', born:1957})
    CREATE (ValK:Person {name:'Val Kilmer', born:1959})
    CREATE (AnthonyE:Person {name:'Anthony Edwards', born:1962})
    CREATE (TomS:Person {name:'Tom Skerritt', born:1933})
    CREATE (MegR:Person {name:'Meg Ryan', born:1961})
    CREATE (TonyS:Person {name:'Tony Scott', born:1944})
    CREATE (JimC:Person {name:'Jim Cash', born:1941})
    CREATE
      (TomC)-[:ACTED_IN {roles:['Maverick']}]->(TopGun),
      (KellyM)-[:ACTED_IN {roles:['Charlie']}]->(TopGun),
      (ValK)-[:ACTED_IN {roles:['Iceman']}]->(TopGun),
      (AnthonyE)-[:ACTED_IN {roles:['Goose']}]->(TopGun),
      (TomS)-[:ACTED_IN {roles:['Viper']}]->(TopGun),
      (MegR)-[:ACTED_IN {roles:['Carole']}]->(TopGun),
      (TonyS)-[:DIRECTED]->(TopGun),
      (JimC)-[:WROTE]->(TopGun)
     
    CREATE (JerryMaguire:Movie {title:'Jerry Maguire', released:2000, tagline:'The rest of his life begins now.'})
    CREATE (ReneeZ:Person {name:'Renee Zellweger', born:1969})
    CREATE (KellyP:Person {name:'Kelly Preston', born:1962})
    CREATE (JerryO:Person {name:"Jerry O'Connell", born:1974})
    CREATE (JayM:Person {name:'Jay Mohr', born:1970})
    CREATE (BonnieH:Person {name:'Bonnie Hunt', born:1961})
    CREATE (ReginaK:Person {name:'Regina King', born:1971})
    CREATE (JonathanL:Person {name:'Jonathan Lipnicki', born:1996})
    CREATE (CameronC:Person {name:'Cameron Crowe', born:1957})
    CREATE
      (TomC)-[:ACTED_IN {roles:['Jerry Maguire']}]->(JerryMaguire),
      (CubaG)-[:ACTED_IN {roles:['Rod Tidwell']}]->(JerryMaguire),
      (ReneeZ)-[:ACTED_IN {roles:['Dorothy Boyd']}]->(JerryMaguire),
      (KellyP)-[:ACTED_IN {roles:['Avery Bishop']}]->(JerryMaguire),
      (JerryO)-[:ACTED_IN {roles:['Frank Cushman']}]->(JerryMaguire),
      (JayM)-[:ACTED_IN {roles:['Bob Sugar']}]->(JerryMaguire),
      (BonnieH)-[:ACTED_IN {roles:['Laurel Boyd']}]->(JerryMaguire),
      (ReginaK)-[:ACTED_IN {roles:['Marcee Tidwell']}]->(JerryMaguire),
      (JonathanL)-[:ACTED_IN {roles:['Ray Boyd']}]->(JerryMaguire),
      (CameronC)-[:DIRECTED]->(JerryMaguire),
      (CameronC)-[:PRODUCED]->(JerryMaguire),
      (CameronC)-[:WROTE]->(JerryMaguire)
     
    CREATE (StandByMe:Movie {title:"Stand By Me", released:1986, tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of."})
    CREATE (RiverP:Person {name:'River Phoenix', born:1970})
    CREATE (CoreyF:Person {name:'Corey Feldman', born:1971})
    CREATE (WilW:Person {name:'Wil Wheaton', born:1972})
    CREATE (JohnC:Person {name:'John Cusack', born:1966})
    CREATE (MarshallB:Person {name:'Marshall Bell', born:1942})
    CREATE
      (WilW)-[:ACTED_IN {roles:['Gordie Lachance']}]->(StandByMe),
      (RiverP)-[:ACTED_IN {roles:['Chris Chambers']}]->(StandByMe),
      (JerryO)-[:ACTED_IN {roles:['Vern Tessio']}]->(StandByMe),
      (CoreyF)-[:ACTED_IN {roles:['Teddy Duchamp']}]->(StandByMe),
      (JohnC)-[:ACTED_IN {roles:['Denny Lachance']}]->(StandByMe),
      (KieferS)-[:ACTED_IN {roles:['Ace Merrill']}]->(StandByMe),
      (MarshallB)-[:ACTED_IN {roles:['Mr. Lachance']}]->(StandByMe),
      (RobR)-[:DIRECTED]->(StandByMe)
     
    CREATE (AsGoodAsItGets:Movie {title:'As Good as It Gets', released:1997, tagline:'A comedy from the heart that goes for the throat.'})
    CREATE (HelenH:Person {name:'Helen Hunt', born:1963})
    CREATE (GregK:Person {name:'Greg Kinnear', born:1963})
    CREATE (JamesB:Person {name:'James L. Brooks', born:1940})
    CREATE
      (JackN)-[:ACTED_IN {roles:['Melvin Udall']}]->(AsGoodAsItGets),
      (HelenH)-[:ACTED_IN {roles:['Carol Connelly']}]->(AsGoodAsItGets),
      (GregK)-[:ACTED_IN {roles:['Simon Bishop']}]->(AsGoodAsItGets),
      (CubaG)-[:ACTED_IN {roles:['Frank Sachs']}]->(AsGoodAsItGets),
      (JamesB)-[:DIRECTED]->(AsGoodAsItGets)
     
    CREATE (WhatDreamsMayCome:Movie {title:'What Dreams May Come', released:1998, tagline:'After life there is more. The end is just the beginning.'})
    CREATE (AnnabellaS:Person {name:'Annabella Sciorra', born:1960})
    CREATE (MaxS:Person {name:'Max von Sydow', born:1929})
    CREATE (WernerH:Person {name:'Werner Herzog', born:1942})
    CREATE (Robin:Person {name:'Robin Williams', born:1951})
    CREATE (VincentW:Person {name:'Vincent Ward', born:1956})
    CREATE
      (Robin)-[:ACTED_IN {roles:['Chris Nielsen']}]->(WhatDreamsMayCome),
      (CubaG)-[:ACTED_IN {roles:['Albert Lewis']}]->(WhatDreamsMayCome),
      (AnnabellaS)-[:ACTED_IN {roles:['Annie Collins-Nielsen']}]->(WhatDreamsMayCome),
      (MaxS)-[:ACTED_IN {roles:['The Tracker']}]->(WhatDreamsMayCome),
      (WernerH)-[:ACTED_IN {roles:['The Face']}]->(WhatDreamsMayCome),
      (VincentW)-[:DIRECTED]->(WhatDreamsMayCome)
     
    CREATE (SnowFallingonCedars:Movie {title:'Snow Falling on Cedars', released:1999, tagline:'First loves last. Forever.'})
    CREATE (EthanH:Person {name:'Ethan Hawke', born:1970})
    CREATE (RickY:Person {name:'Rick Yune', born:1971})
    CREATE (JamesC:Person {name:'James Cromwell', born:1940})
    CREATE (ScottH:Person {name:'Scott Hicks', born:1953})
    CREATE
      (EthanH)-[:ACTED_IN {roles:['Ishmael Chambers']}]->(SnowFallingonCedars),
      (RickY)-[:ACTED_IN {roles:['Kazuo Miyamoto']}]->(SnowFallingonCedars),
      (MaxS)-[:ACTED_IN {roles:['Nels Gudmundsson']}]->(SnowFallingonCedars),
      (JamesC)-[:ACTED_IN {roles:['Judge Fielding']}]->(SnowFallingonCedars),
      (ScottH)-[:DIRECTED]->(SnowFallingonCedars)
     
    CREATE (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'})
    CREATE (ParkerP:Person {name:'Parker Posey', born:1968})
    CREATE (DaveC:Person {name:'Dave Chappelle', born:1973})
    CREATE (SteveZ:Person {name:'Steve Zahn', born:1967})
    CREATE (TomH:Person {name:'Tom Hanks', born:1956})
    CREATE (NoraE:Person {name:'Nora Ephron', born:1941})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Joe Fox']}]->(YouveGotMail),
      (MegR)-[:ACTED_IN {roles:['Kathleen Kelly']}]->(YouveGotMail),
      (GregK)-[:ACTED_IN {roles:['Frank Navasky']}]->(YouveGotMail),
      (ParkerP)-[:ACTED_IN {roles:['Patricia Eden']}]->(YouveGotMail),
      (DaveC)-[:ACTED_IN {roles:['Kevin Jackson']}]->(YouveGotMail),
      (SteveZ)-[:ACTED_IN {roles:['George Pappas']}]->(YouveGotMail),
      (NoraE)-[:DIRECTED]->(YouveGotMail)
     
    CREATE (SleeplessInSeattle:Movie {title:'Sleepless in Seattle', released:1993, tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'})
    CREATE (RitaW:Person {name:'Rita Wilson', born:1956})
    CREATE (BillPull:Person {name:'Bill Pullman', born:1953})
    CREATE (VictorG:Person {name:'Victor Garber', born:1949})
    CREATE (RosieO:Person {name:"Rosie O'Donnell", born:1962})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Sam Baldwin']}]->(SleeplessInSeattle),
      (MegR)-[:ACTED_IN {roles:['Annie Reed']}]->(SleeplessInSeattle),
      (RitaW)-[:ACTED_IN {roles:['Suzy']}]->(SleeplessInSeattle),
      (BillPull)-[:ACTED_IN {roles:['Walter']}]->(SleeplessInSeattle),
      (VictorG)-[:ACTED_IN {roles:['Greg']}]->(SleeplessInSeattle),
      (RosieO)-[:ACTED_IN {roles:['Becky']}]->(SleeplessInSeattle),
      (NoraE)-[:DIRECTED]->(SleeplessInSeattle)
     
    CREATE (JoeVersustheVolcano:Movie {title:'Joe Versus the Volcano', released:1990, tagline:'A story of love, lava and burning desire.'})
    CREATE (JohnS:Person {name:'John Patrick Stanley', born:1950})
    CREATE (Nathan:Person {name:'Nathan Lane', born:1956})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Joe Banks']}]->(JoeVersustheVolcano),
      (MegR)-[:ACTED_IN {roles:['DeDe', 'Angelica Graynamore', 'Patricia Graynamore']}]->(JoeVersustheVolcano),
      (Nathan)-[:ACTED_IN {roles:['Baw']}]->(JoeVersustheVolcano),
      (JohnS)-[:DIRECTED]->(JoeVersustheVolcano)
     
    CREATE (WhenHarryMetSally:Movie {title:'When Harry Met Sally', released:1998, tagline:'At odds in life... in love on-line.'})
    CREATE (BillyC:Person {name:'Billy Crystal', born:1948})
    CREATE (CarrieF:Person {name:'Carrie Fisher', born:1956})
    CREATE (BrunoK:Person {name:'Bruno Kirby', born:1949})
    CREATE
      (BillyC)-[:ACTED_IN {roles:['Harry Burns']}]->(WhenHarryMetSally),
      (MegR)-[:ACTED_IN {roles:['Sally Albright']}]->(WhenHarryMetSally),
      (CarrieF)-[:ACTED_IN {roles:['Marie']}]->(WhenHarryMetSally),
      (BrunoK)-[:ACTED_IN {roles:['Jess']}]->(WhenHarryMetSally),
      (RobR)-[:DIRECTED]->(WhenHarryMetSally),
      (RobR)-[:PRODUCED]->(WhenHarryMetSally),
      (NoraE)-[:PRODUCED]->(WhenHarryMetSally),
      (NoraE)-[:WROTE]->(WhenHarryMetSally)
     
    CREATE (ThatThingYouDo:Movie {title:'That Thing You Do', released:1996, tagline:'In every life there comes a time when that thing you dream becomes that thing you do'})
    CREATE (LivT:Person {name:'Liv Tyler', born:1977})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Mr. White']}]->(ThatThingYouDo),
      (LivT)-[:ACTED_IN {roles:['Faye Dolan']}]->(ThatThingYouDo),
      (Charlize)-[:ACTED_IN {roles:['Tina']}]->(ThatThingYouDo),
      (TomH)-[:DIRECTED]->(ThatThingYouDo)
     
    CREATE (TheReplacements:Movie {title:'The Replacements', released:2000, tagline:'Pain heals, Chicks dig scars... Glory lasts forever'})
    CREATE (Brooke:Person {name:'Brooke Langton', born:1970})
    CREATE (Gene:Person {name:'Gene Hackman', born:1930})
    CREATE (Orlando:Person {name:'Orlando Jones', born:1968})
    CREATE (Howard:Person {name:'Howard Deutch', born:1950})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Shane Falco']}]->(TheReplacements),
      (Brooke)-[:ACTED_IN {roles:['Annabelle Farrell']}]->(TheReplacements),
      (Gene)-[:ACTED_IN {roles:['Jimmy McGinty']}]->(TheReplacements),
      (Orlando)-[:ACTED_IN {roles:['Clifford Franklin']}]->(TheReplacements),
      (Howard)-[:DIRECTED]->(TheReplacements)
     
    CREATE (RescueDawn:Movie {title:'RescueDawn', released:2006, tagline:"Based on the extraordinary true story of one man's fight for freedom"})
    CREATE (ChristianB:Person {name:'Christian Bale', born:1974})
    CREATE (ZachG:Person {name:'Zach Grenier', born:1954})
    CREATE
      (MarshallB)-[:ACTED_IN {roles:['Admiral']}]->(RescueDawn),
      (ChristianB)-[:ACTED_IN {roles:['Dieter Dengler']}]->(RescueDawn),
      (ZachG)-[:ACTED_IN {roles:['Squad Leader']}]->(RescueDawn),
      (SteveZ)-[:ACTED_IN {roles:['Duane']}]->(RescueDawn),
      (WernerH)-[:DIRECTED]->(RescueDawn)
     
    CREATE (TheBirdcage:Movie {title:'The Birdcage', released:1996, tagline:'Come as you are'})
    CREATE (MikeN:Person {name:'Mike Nichols', born:1931})
    CREATE
      (Robin)-[:ACTED_IN {roles:['Armand Goldman']}]->(TheBirdcage),
      (Nathan)-[:ACTED_IN {roles:['Albert Goldman']}]->(TheBirdcage),
      (Gene)-[:ACTED_IN {roles:['Sen. Kevin Keeley']}]->(TheBirdcage),
      (MikeN)-[:DIRECTED]->(TheBirdcage)
     
    CREATE (Unforgiven:Movie {title:'Unforgiven', released:1992, tagline:"It's a hell of a thing, killing a man"})
    CREATE (RichardH:Person {name:'Richard Harris', born:1930})
    CREATE (ClintE:Person {name:'Clint Eastwood', born:1930})
    CREATE
      (RichardH)-[:ACTED_IN {roles:['English Bob']}]->(Unforgiven),
      (ClintE)-[:ACTED_IN {roles:['Bill Munny']}]->(Unforgiven),
      (Gene)-[:ACTED_IN {roles:['Little Bill Daggett']}]->(Unforgiven),
      (ClintE)-[:DIRECTED]->(Unforgiven)
     
    CREATE (JohnnyMnemonic:Movie {title:'Johnny Mnemonic', released:1995, tagline:'The hottest data on earth. In the coolest head in town'})
    CREATE (Takeshi:Person {name:'Takeshi Kitano', born:1947})
    CREATE (Dina:Person {name:'Dina Meyer', born:1968})
    CREATE (IceT:Person {name:'Ice-T', born:1958})
    CREATE (RobertL:Person {name:'Robert Longo', born:1953})
    CREATE
      (Keanu)-[:ACTED_IN {roles:['Johnny Mnemonic']}]->(JohnnyMnemonic),
      (Takeshi)-[:ACTED_IN {roles:['Takahashi']}]->(JohnnyMnemonic),
      (Dina)-[:ACTED_IN {roles:['Jane']}]->(JohnnyMnemonic),
      (IceT)-[:ACTED_IN {roles:['J-Bone']}]->(JohnnyMnemonic),
      (RobertL)-[:DIRECTED]->(JohnnyMnemonic)
     
    CREATE (CloudAtlas:Movie {title:'Cloud Atlas', released:2012, tagline:'Everything is connected'})
    CREATE (HalleB:Person {name:'Halle Berry', born:1966})
    CREATE (JimB:Person {name:'Jim Broadbent', born:1949})
    CREATE (TomT:Person {name:'Tom Tykwer', born:1965})
    CREATE (DavidMitchell:Person {name:'David Mitchell', born:1969})
    CREATE (StefanArndt:Person {name:'Stefan Arndt', born:1961})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Zachry', 'Dr. Henry Goose', 'Isaac Sachs', 'Dermot Hoggins']}]->(CloudAtlas),
      (Hugo)-[:ACTED_IN {roles:['Bill Smoke', 'Haskell Moore', 'Tadeusz Kesselring', 'Nurse Noakes', 'Boardman Mephi', 'Old Georgie']}]->(CloudAtlas),
      (HalleB)-[:ACTED_IN {roles:['Luisa Rey', 'Jocasta Ayrs', 'Ovid', 'Meronym']}]->(CloudAtlas),
      (JimB)-[:ACTED_IN {roles:['Vyvyan Ayrs', 'Captain Molyneux', 'Timothy Cavendish']}]->(CloudAtlas),
      (TomT)-[:DIRECTED]->(CloudAtlas),
      (LillyW)-[:DIRECTED]->(CloudAtlas),
      (LanaW)-[:DIRECTED]->(CloudAtlas),
      (DavidMitchell)-[:WROTE]->(CloudAtlas),
      (StefanArndt)-[:PRODUCED]->(CloudAtlas)
     
    CREATE (TheDaVinciCode:Movie {title:'The Da Vinci Code', released:2006, tagline:'Break The Codes'})
    CREATE (IanM:Person {name:'Ian McKellen', born:1939})
    CREATE (AudreyT:Person {name:'Audrey Tautou', born:1976})
    CREATE (PaulB:Person {name:'Paul Bettany', born:1971})
    CREATE (RonH:Person {name:'Ron Howard', born:1954})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Dr. Robert Langdon']}]->(TheDaVinciCode),
      (IanM)-[:ACTED_IN {roles:['Sir Leight Teabing']}]->(TheDaVinciCode),
      (AudreyT)-[:ACTED_IN {roles:['Sophie Neveu']}]->(TheDaVinciCode),
      (PaulB)-[:ACTED_IN {roles:['Silas']}]->(TheDaVinciCode),
      (RonH)-[:DIRECTED]->(TheDaVinciCode)
     
    CREATE (VforVendetta:Movie {title:'V for Vendetta', released:2006, tagline:'Freedom! Forever!'})
    CREATE (NatalieP:Person {name:'Natalie Portman', born:1981})
    CREATE (StephenR:Person {name:'Stephen Rea', born:1946})
    CREATE (JohnH:Person {name:'John Hurt', born:1940})
    CREATE (BenM:Person {name: 'Ben Miles', born:1967})
    CREATE
      (Hugo)-[:ACTED_IN {roles:['V']}]->(VforVendetta),
      (NatalieP)-[:ACTED_IN {roles:['Evey Hammond']}]->(VforVendetta),
      (StephenR)-[:ACTED_IN {roles:['Eric Finch']}]->(VforVendetta),
      (JohnH)-[:ACTED_IN {roles:['High Chancellor Adam Sutler']}]->(VforVendetta),
      (BenM)-[:ACTED_IN {roles:['Dascomb']}]->(VforVendetta),
      (JamesM)-[:DIRECTED]->(VforVendetta),
      (LillyW)-[:PRODUCED]->(VforVendetta),
      (LanaW)-[:PRODUCED]->(VforVendetta),
      (JoelS)-[:PRODUCED]->(VforVendetta),
      (LillyW)-[:WROTE]->(VforVendetta),
      (LanaW)-[:WROTE]->(VforVendetta)
     
    CREATE (SpeedRacer:Movie {title:'Speed Racer', released:2008, tagline:'Speed has no limits'})
    CREATE (EmileH:Person {name:'Emile Hirsch', born:1985})
    CREATE (JohnG:Person {name:'John Goodman', born:1960})
    CREATE (SusanS:Person {name:'Susan Sarandon', born:1946})
    CREATE (MatthewF:Person {name:'Matthew Fox', born:1966})
    CREATE (ChristinaR:Person {name:'Christina Ricci', born:1980})
    CREATE (Rain:Person {name:'Rain', born:1982})
    CREATE
      (EmileH)-[:ACTED_IN {roles:['Speed Racer']}]->(SpeedRacer),
      (JohnG)-[:ACTED_IN {roles:['Pops']}]->(SpeedRacer),
      (SusanS)-[:ACTED_IN {roles:['Mom']}]->(SpeedRacer),
      (MatthewF)-[:ACTED_IN {roles:['Racer X']}]->(SpeedRacer),
      (ChristinaR)-[:ACTED_IN {roles:['Trixie']}]->(SpeedRacer),
      (Rain)-[:ACTED_IN {roles:['Taejo Togokahn']}]->(SpeedRacer),
      (BenM)-[:ACTED_IN {roles:['Cass Jones']}]->(SpeedRacer),
      (LillyW)-[:DIRECTED]->(SpeedRacer),
      (LanaW)-[:DIRECTED]->(SpeedRacer),
      (LillyW)-[:WROTE]->(SpeedRacer),
      (LanaW)-[:WROTE]->(SpeedRacer),
      (JoelS)-[:PRODUCED]->(SpeedRacer)
     
    CREATE (NinjaAssassin:Movie {title:'Ninja Assassin', released:2009, tagline:'Prepare to enter a secret world of assassins'})
    CREATE (NaomieH:Person {name:'Naomie Harris'})
    CREATE
      (Rain)-[:ACTED_IN {roles:['Raizo']}]->(NinjaAssassin),
      (NaomieH)-[:ACTED_IN {roles:['Mika Coretti']}]->(NinjaAssassin),
      (RickY)-[:ACTED_IN {roles:['Takeshi']}]->(NinjaAssassin),
      (BenM)-[:ACTED_IN {roles:['Ryan Maslow']}]->(NinjaAssassin),
      (JamesM)-[:DIRECTED]->(NinjaAssassin),
      (LillyW)-[:PRODUCED]->(NinjaAssassin),
      (LanaW)-[:PRODUCED]->(NinjaAssassin),
      (JoelS)-[:PRODUCED]->(NinjaAssassin)
     
    CREATE (TheGreenMile:Movie {title:'The Green Mile', released:1999, tagline:"Walk a mile you'll never forget."})
    CREATE (MichaelD:Person {name:'Michael Clarke Duncan', born:1957})
    CREATE (DavidM:Person {name:'David Morse', born:1953})
    CREATE (SamR:Person {name:'Sam Rockwell', born:1968})
    CREATE (GaryS:Person {name:'Gary Sinise', born:1955})
    CREATE (PatriciaC:Person {name:'Patricia Clarkson', born:1959})
    CREATE (FrankD:Person {name:'Frank Darabont', born:1959})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Paul Edgecomb']}]->(TheGreenMile),
      (MichaelD)-[:ACTED_IN {roles:['John Coffey']}]->(TheGreenMile),
      (DavidM)-[:ACTED_IN {roles:['Brutus "Brutal" Howell']}]->(TheGreenMile),
      (BonnieH)-[:ACTED_IN {roles:['Jan Edgecomb']}]->(TheGreenMile),
      (JamesC)-[:ACTED_IN {roles:['Warden Hal Moores']}]->(TheGreenMile),
      (SamR)-[:ACTED_IN {roles:['"Wild Bill" Wharton']}]->(TheGreenMile),
      (GaryS)-[:ACTED_IN {roles:['Burt Hammersmith']}]->(TheGreenMile),
      (PatriciaC)-[:ACTED_IN {roles:['Melinda Moores']}]->(TheGreenMile),
      (FrankD)-[:DIRECTED]->(TheGreenMile)
     
    CREATE (FrostNixon:Movie {title:'Frost/Nixon', released:2008, tagline:'400 million people were waiting for the truth.'})
    CREATE (FrankL:Person {name:'Frank Langella', born:1938})
    CREATE (MichaelS:Person {name:'Michael Sheen', born:1969})
    CREATE (OliverP:Person {name:'Oliver Platt', born:1960})
    CREATE
      (FrankL)-[:ACTED_IN {roles:['Richard Nixon']}]->(FrostNixon),
      (MichaelS)-[:ACTED_IN {roles:['David Frost']}]->(FrostNixon),
      (KevinB)-[:ACTED_IN {roles:['Jack Brennan']}]->(FrostNixon),
      (OliverP)-[:ACTED_IN {roles:['Bob Zelnick']}]->(FrostNixon),
      (SamR)-[:ACTED_IN {roles:['James Reston, Jr.']}]->(FrostNixon),
      (RonH)-[:DIRECTED]->(FrostNixon)
     
    CREATE (Hoffa:Movie {title:'Hoffa', released:1992, tagline:"He didn't want law. He wanted justice."})
    CREATE (DannyD:Person {name:'Danny DeVito', born:1944})
    CREATE (JohnR:Person {name:'John C. Reilly', born:1965})
    CREATE
      (JackN)-[:ACTED_IN {roles:['Hoffa']}]->(Hoffa),
      (DannyD)-[:ACTED_IN {roles:['Robert "Bobby" Ciaro']}]->(Hoffa),
      (JTW)-[:ACTED_IN {roles:['Frank Fitzsimmons']}]->(Hoffa),
      (JohnR)-[:ACTED_IN {roles:['Peter "Pete" Connelly']}]->(Hoffa),
      (DannyD)-[:DIRECTED]->(Hoffa)
     
    CREATE (Apollo13:Movie {title:'Apollo 13', released:1995, tagline:'Houston, we have a problem.'})
    CREATE (EdH:Person {name:'Ed Harris', born:1950})
    CREATE (BillPax:Person {name:'Bill Paxton', born:1955})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Jim Lovell']}]->(Apollo13),
      (KevinB)-[:ACTED_IN {roles:['Jack Swigert']}]->(Apollo13),
      (EdH)-[:ACTED_IN {roles:['Gene Kranz']}]->(Apollo13),
      (BillPax)-[:ACTED_IN {roles:['Fred Haise']}]->(Apollo13),
      (GaryS)-[:ACTED_IN {roles:['Ken Mattingly']}]->(Apollo13),
      (RonH)-[:DIRECTED]->(Apollo13)
     
    CREATE (Twister:Movie {title:'Twister', released:1996, tagline:"Don't Breathe. Don't Look Back."})
    CREATE (PhilipH:Person {name:'Philip Seymour Hoffman', born:1967})
    CREATE (JanB:Person {name:'Jan de Bont', born:1943})
    CREATE
      (BillPax)-[:ACTED_IN {roles:['Bill Harding']}]->(Twister),
      (HelenH)-[:ACTED_IN {roles:['Dr. Jo Harding']}]->(Twister),
      (ZachG)-[:ACTED_IN {roles:['Eddie']}]->(Twister),
      (PhilipH)-[:ACTED_IN {roles:['Dustin "Dusty" Davis']}]->(Twister),
      (JanB)-[:DIRECTED]->(Twister)
     
    CREATE (CastAway:Movie {title:'Cast Away', released:2000, tagline:'At the edge of the world, his journey begins.'})
    CREATE (RobertZ:Person {name:'Robert Zemeckis', born:1951})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Chuck Noland']}]->(CastAway),
      (HelenH)-[:ACTED_IN {roles:['Kelly Frears']}]->(CastAway),
      (RobertZ)-[:DIRECTED]->(CastAway)
     
    CREATE (OneFlewOvertheCuckoosNest:Movie {title:"One Flew Over the Cuckoo's Nest", released:1975, tagline:"If he's crazy, what does that make you?"})
    CREATE (MilosF:Person {name:'Milos Forman', born:1932})
    CREATE
      (JackN)-[:ACTED_IN {roles:['Randle McMurphy']}]->(OneFlewOvertheCuckoosNest),
      (DannyD)-[:ACTED_IN {roles:['Martini']}]->(OneFlewOvertheCuckoosNest),
      (MilosF)-[:DIRECTED]->(OneFlewOvertheCuckoosNest)
     
    CREATE (SomethingsGottaGive:Movie {title:"Something's Gotta Give", released:2003})
    CREATE (DianeK:Person {name:'Diane Keaton', born:1946})
    CREATE (NancyM:Person {name:'Nancy Meyers', born:1949})
    CREATE
      (JackN)-[:ACTED_IN {roles:['Harry Sanborn']}]->(SomethingsGottaGive),
      (DianeK)-[:ACTED_IN {roles:['Erica Barry']}]->(SomethingsGottaGive),
      (Keanu)-[:ACTED_IN {roles:['Julian Mercer']}]->(SomethingsGottaGive),
      (NancyM)-[:DIRECTED]->(SomethingsGottaGive),
      (NancyM)-[:PRODUCED]->(SomethingsGottaGive),
      (NancyM)-[:WROTE]->(SomethingsGottaGive)
     
    CREATE (BicentennialMan:Movie {title:'Bicentennial Man', released:1999, tagline:"One robot's 200 year journey to become an ordinary man."})
    CREATE (ChrisC:Person {name:'Chris Columbus', born:1958})
    CREATE
      (Robin)-[:ACTED_IN {roles:['Andrew Marin']}]->(BicentennialMan),
      (OliverP)-[:ACTED_IN {roles:['Rupert Burns']}]->(BicentennialMan),
      (ChrisC)-[:DIRECTED]->(BicentennialMan)
     
    CREATE (CharlieWilsonsWar:Movie {title:"Charlie Wilson's War", released:2007, tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire."})
    CREATE (JuliaR:Person {name:'Julia Roberts', born:1967})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Rep. Charlie Wilson']}]->(CharlieWilsonsWar),
      (JuliaR)-[:ACTED_IN {roles:['Joanne Herring']}]->(CharlieWilsonsWar),
      (PhilipH)-[:ACTED_IN {roles:['Gust Avrakotos']}]->(CharlieWilsonsWar),
      (MikeN)-[:DIRECTED]->(CharlieWilsonsWar)
     
    CREATE (ThePolarExpress:Movie {title:'The Polar Express', released:2004, tagline:'This Holiday Season… Believe'})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Hero Boy', 'Father', 'Conductor', 'Hobo', 'Scrooge', 'Santa Claus']}]->(ThePolarExpress),
      (RobertZ)-[:DIRECTED]->(ThePolarExpress)
     
    CREATE (ALeagueofTheirOwn:Movie {title:'A League of Their Own', released:1992, tagline:'Once in a lifetime you get a chance to do something different.'})
    CREATE (Madonna:Person {name:'Madonna', born:1954})
    CREATE (GeenaD:Person {name:'Geena Davis', born:1956})
    CREATE (LoriP:Person {name:'Lori Petty', born:1963})
    CREATE (PennyM:Person {name:'Penny Marshall', born:1943})
    CREATE
      (TomH)-[:ACTED_IN {roles:['Jimmy Dugan']}]->(ALeagueofTheirOwn),
      (GeenaD)-[:ACTED_IN {roles:['Dottie Hinson']}]->(ALeagueofTheirOwn),
      (LoriP)-[:ACTED_IN {roles:['Kit Keller']}]->(ALeagueofTheirOwn),
      (RosieO)-[:ACTED_IN {roles:['Doris Murphy']}]->(ALeagueofTheirOwn),
      (Madonna)-[:ACTED_IN {roles:['"All the Way" Mae Mordabito']}]->(ALeagueofTheirOwn),
      (BillPax)-[:ACTED_IN {roles:['Bob Hinson']}]->(ALeagueofTheirOwn),
      (PennyM)-[:DIRECTED]->(ALeagueofTheirOwn)
     
    CREATE (PaulBlythe:Person {name:'Paul Blythe'})
    CREATE (AngelaScope:Person {name:'Angela Scope'})
    CREATE (JessicaThompson:Person {name:'Jessica Thompson'})
    CREATE (JamesThompson:Person {name:'James Thompson'})
     
    CREATE
      (JamesThompson)-[:FOLLOWS]->(JessicaThompson),
      (AngelaScope)-[:FOLLOWS]->(JessicaThompson),
      (PaulBlythe)-[:FOLLOWS]->(AngelaScope)
     
    CREATE
      (JessicaThompson)-[:REVIEWED {summary:'An amazing journey', rating:95}]->(CloudAtlas),
      (JessicaThompson)-[:REVIEWED {summary:'Silly, but fun', rating:65}]->(TheReplacements),
      (JamesThompson)-[:REVIEWED {summary:'The coolest football movie ever', rating:100}]->(TheReplacements),
      (AngelaScope)-[:REVIEWED {summary:'Pretty funny at times', rating:62}]->(TheReplacements),
      (JessicaThompson)-[:REVIEWED {summary:'Dark, but compelling', rating:85}]->(Unforgiven),
      (JessicaThompson)-[:REVIEWED {summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}]->(TheBirdcage),
      (JessicaThompson)-[:REVIEWED {summary:'A solid romp', rating:68}]->(TheDaVinciCode),
      (JamesThompson)-[:REVIEWED {summary:'Fun, but a little far fetched', rating:65}]->(TheDaVinciCode),
      (JessicaThompson)-[:REVIEWED {summary:'You had me at Jerry', rating:92}]->(JerryMaguire)
     
    WITH TomH as a
    MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(d) RETURN a,m,d LIMIT 10
    ;
     
     
    Find
    Example queries for finding individual nodes.
    1. Click on any query example
    2. Run the query from the editor
    3. Notice the syntax pattern
    4. Try looking for other movies or actors
     
    :help MATCH WHERE RETURN
    Find the actor named "Tom Hanks"...
    MATCH (tom {name: "Tom Hanks"}) RETURN tom
    Find the movie with title "Cloud Atlas"...
    MATCH (cloudAtlas {title: "Cloud Atlas"}) RETURN cloudAtlas
    Find 10 people...
    MATCH (people:Person) RETURN people.name LIMIT 10
    Find movies released in the 1990s...
    MATCH (nineties:Movie) WHERE nineties.released >= 1990 AND nineties.released < 2000 RETURN nineties.title
     
     
    Query
    Finding patterns within the graph.
    1. Actors are people who acted in movies
    2. Directors are people who directed a movie
    3. What other relationships exist?
     
    :help MATCH
    List all Tom Hanks movies...
    MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies
    Who directed "Cloud Atlas"?
    MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) RETURN directors.name
    Tom Hanks' co-actors...
    MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
    How people are related to "Cloud Atlas"...
    MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) RETURN people.name, Type(relatedTo), relatedTo
     
    Solve
    You've heard of the classic "Six Degrees of Kevin Bacon"? That is simply a shortest path query called the "Bacon Path".
    1. Variable length patterns
    2. Built-in shortestPath() algorithm
    Movies and actors up to 4 "hops" away from Kevin Bacon
    MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood)
    RETURN DISTINCT hollywood
    Bacon path, the shortest path of any relationships to Meg Ryan
    MATCH p=shortestPath(
      (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"})
    )
    RETURN p
    Note you only need to compare property values like this when first creating relationships
     
    Recommend
    Let's recommend new co-actors for Tom Hanks. A basic recommendation approach is to find connections past an immediate neighborhood which are themselves well connected.
    For Tom Hanks, that means:
    1. Find actors that Tom Hanks hasn't yet worked with, but his co-actors have.
    2. Find someone who can introduce Tom to his potential co-actor.
    Extend Tom Hanks co-actors, to find co-co-actors who haven't work with Tom Hanks...
    MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
          (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors)
    WHERE NOT (tom)-[:ACTED_IN]->()<-[:ACTED_IN]-(cocoActors) AND tom <> cocoActors
    RETURN cocoActors.name AS Recommended, count(*) AS Strength ORDER BY Strength DESC
    Find someone to introduce Tom Hanks to Tom Cruise
    MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
          (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
    RETURN tom, m, coActors, m2, cruise
     
    Clean up
    When you're done experimenting, you can remove the movie data set.
    Note:
    1. Nodes can't be deleted if relationships exist
    2. Delete both nodes and relationships together
    WARNING: This will remove all Person and Movie nodes!
     
    :help DELETE
    Delete all Movie and Person nodes, and their relationships
    MATCH (n) DETACH DELETE n
    Note you only need to compare property values like this when first creating relationships
    Prove that the Movie Graph is gone
    MATCH (n) RETURN n
     
    Northwind Graph
    From RDBMS to Graph, using a classic dataset
    The Northwind Graph demonstrates how to migrate from a relational database to Neo4j. The transformation is iterative and deliberate, emphasizing the conceptual shift from relational tables to the nodes and relationships of a graph.
    This guide will show you how to:
    1. Load: create data from external CSV files
    2. Index: index nodes based on label
    3. Relate: transform foreign key references into data relationships
    4. Promote: transform join records into relationships
     
    Product Catalog
    Northwind sells food products in a few categories, provided by suppliers. Let's start by loading the product catalog tables.
    The load statements to the right require public internet access.LOAD CSV will retrieve a CSV file from a valid URL, applying a Cypher statement to each row using a named map (here we're using the name `row`).
    :help cypher LOAD CSV
    Load records
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row
    CREATE (n:Product)
    SET n = row,
      n.unitPrice = toFloat(row.unitPrice),
      n.unitsInStock = toInteger(row.unitsInStock),
      n.unitsOnOrder = toInteger(row.unitsOnOrder),
      n.reorderLevel = toInteger(row.reorderLevel),
      n.discontinued = (row.discontinued <> "0")
     
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/categories.csv" AS row
    CREATE (n:Category)
    SET n = row
     
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/suppliers.csv" AS row
    CREATE (n:Supplier)
    SET n = row
    Create indexes
    CREATE INDEX ON :Product(productID)
     
    CREATE INDEX ON :Category(categoryID)
     
    CREATE INDEX ON :Supplier(supplierID)
     
    Product Catalog Graph
    The products, categories and suppliers are related through foreign key references. Let's promote those to data relationships to realize the graph.
     
    Create data relationships
    MATCH (p:Product),(c:Category)
    WHERE p.categoryID = c.categoryID
    CREATE (p)-[:PART_OF]->(c)
    Note you only need to compare property values like this when first creating relationships
    Calculate join, materialize relationship. (See importing guide for more details)
    MATCH (p:Product),(s:Supplier)
    WHERE p.supplierID = s.supplierID
    CREATE (s)-[:SUPPLIES]->(p)
    Note you only need to compare property values like this when first creating relationships
     
    Querying Product Catalog Graph
    Lets try some queries using patterns.
    Query using patterns
    MATCH (s:Supplier)-->(:Product)-->(c:Category)
    RETURN s.companyName as Company, collect(distinct c.categoryName) as Categories
    List the product categories provided by each supplier.
    MATCH (c:Category {categoryName:"Produce"})<--(:Product)<--(s:Supplier)
    RETURN DISTINCT s.companyName as ProduceSuppliers
    Find the produce suppliers.
     
     
    Customer Orders
    Northwind customers place orders which may detail multiple products.
    Load and index records
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/customers.csv" AS row
    CREATE (n:Customer)
    SET n = row
     
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/orders.csv" AS row
    CREATE (n:Order)
    SET n = row
     
    CREATE INDEX ON :Customer(customerID)
     
    CREATE INDEX ON :Order(orderID)
    Create data relationships
    MATCH (c:Customer),(o:Order)
    WHERE c.customerID = o.customerID
    CREATE (c)-[:PURCHASED]->(o)
    Note you only need to compare property values like this when first creating relationships
     
    Customer Order Graph
    Notice that Order Details are always part of an Order and that theyrelate the Order to a Product — they're a join table. Join tables are always a sign of a data relationship, indicating shared information between two other records.
    Here, we'll directly promote each OrderDetail record into a relationship in the graph.
     
    Load and index records
    LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/order-details.csv" AS row
    MATCH (p:Product), (o:Order)
    WHERE p.productID = row.productID AND o.orderID = row.orderID
    CREATE (o)-[details:ORDERS]->(p)
    SET details = row,
      details.quantity = toInteger(row.quantity)
    Note you only need to compare property values like this when first creating relationships
    Query using patterns
    MATCH (cust:Customer)-[:PURCHASED]->(:Order)-[o:ORDERS]->(p:Product),
          (p)-[:PART_OF]->(c:Category {categoryName:"Produce"})
    RETURN DISTINCT cust.contactName as CustomerName, SUM(o.quantity) AS TotalProductsPurchased

     

  • 相关阅读:
    在tmux中如何复制文本并粘贴到某处?
    linux下的用户密码文件/etc/shadow
    linux下openssl命令解析
    第 27 章 CSS 传统布局[下]
    第 27 章 CSS 传统布局[上]
    第 26 章 CSS3 动画效果
    第 25 章 CSS3 过渡效果
    第 24 章 CSS3 变形效果[下]
    第 23 章 CSS3 边框图片效果
    第 22 章 CSS3 渐变效果
  • 原文地址:https://www.cnblogs.com/chenxiangzhen/p/10471644.html
Copyright © 2020-2023  润新知