{ "cells": [ { "cell_type": "markdown", "id": "eab505f3", "metadata": {}, "source": [ "Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n", "SPDX-License-Identifier: Apache-2.0\n", "\n", "# Learning openCypher - Basic Read Queries\n", "\n", "This notebook is the first in a series of notebooks that walk through how to write queries using openCypher. In this notebook, we will examine the basics of openCypher read queries and how these queries fit into the \"Find\", \"Filter\", \"Format\" paradigm. Let's begin by loading some sample data into our Neptune cluster. \n", "\n", "\n", "\n", "\n", "## Getting Started\n", "\n", "For these notebooks, we will be leveraging a dataset from the book [Graph Databases in Action](https://www.manning.com/books/graph-databases-in-action?a_aid=bechberger) from Manning Publications. \n", "\n", "\n", "**Note:** These notebooks do not cover data modeling or building a data loading pipeline. If you would like a more detailed description about how this dataset is constructed and the design of the data model came from, then please read the book.\n", "\n", "To get started, the first step is to load data into the cluster. Assuming the cluster is empty, this can be accomplished by running the cell below which will load the Dining By Friends dataset, installed as part of the notebook.\n", "\n", "### Loading Data" ] }, { "cell_type": "code", "execution_count": null, "id": "03dd0507", "metadata": {}, "outputs": [], "source": [ "%seed --model Property_Graph --dataset dining_by_friends --run" ] }, { "attachments": { "image-3.png": { "image/png": "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nLouOprairHQoUMHZey0adOG2ANzR9sLFy4ow8c0h/vvv18t4bqjYim6ACOjFD1sTBUEQAAEQAAEQAAESpJAv379aMGCBSTGgHwRF69CYmLiLSp069ZNfZbjM888Q7xMisQrIXEaUn788UcaMGCA8hCoC/yPGBO8bEoZBT179qSKFSvSs88+S82aNaMvv/ySJDNU3bp1VewGr0tScRymtrkdhw4dSrNnzyZJXbt27VplvEhd0YWXapHEdTRv3pwk1sNUJCZDDAvRT4yixx57TMWU8BIr4uVbpmo4ggAIgAAIgAAIgAAIgAAIFIZAXjEZHKitYiPYK6D5+/urmAoJRpCYjI0bN2bFJfzyyy8q7kHqiEhcRHJysqon8RoS1zFy5EgV9yCxEVOmTFExEyEhIRp7OlQ9acd6a5x5SvU7a9Ys9VmuS6yF3MurHDp0SI0tuprGlNgLXgKlrksMSZMmTVRsiBwlNkTqdezYUWNDQ3vxxRez2rdv317FkeQ1nm7uWSgmw6EwP0SoCwIgAAIgAAIgAAIgAALZCfC3d4flA/sbe879N/vlW84lrqJChQpZS6VuuZn5QZY4yfIqyc5kWlIltyQuo1KlSuqaeAt8fHzIYDCQZIOSZVCOjo6qBzY+lEcj+9IoyVIl9apXr67qSCarnPa+kDiPTp06Ke+IeFyCgoJu0UG8GzIHyTwlhYPXqWzZsiqDlHhmTGPKeKKjxKDYTGFPz/LBA6jX3/PNahfciLyxGQpQFARAAARAAARAAARAwNYIBAYG5quyBHpLPMbtpVq1almX/Pz8ss7F2Mheateunf2jOvf19SURU5GlWBEREaaPWUeJ6ZAix5z6EaPHZGBIPTEwpIixYzIw5PPt48m10lpgZJTWJ495gwAIgAAIgAAIgIAZCZyaO9uMvVmuq7tzikhOSyFb0d9yZMzbM4wM8/JEbyAAAiAAAiAAAiBQ6gg4uriEnpk/r9TN214mzM/PXqaCeYAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACICATgj8H6iA91Cy2yAyAAAAAElFTkSuQmCC" } }, "cell_type": "markdown", "id": "48e9a85f", "metadata": {}, "source": [ "### Looking at our graph data\n", "\n", "Now that we have loaded our data, let's take a moment to look at what our data model looks like:\n", "\n", "\n", "![image-3.png](attachment:image-3.png)\n", "\n", "\n", " \n", " \n", "\n", " \n", "
Element (Node/Edge) Counts
\n", " \n", "|Node Label|Count|\n", "|:--|:--|\n", "|review|109|\n", "|restaurant|40|\n", "|cuisine|24|\n", "|person|8|\n", "|state|2|\n", "|city|2|\n", " \n", "\n", "\n", "|Edge Label|Count|\n", "|:--|:--|\n", "|wrote|218|\n", "|about|218|\n", "|within|84|\n", "|serves|80|\n", "|friends|20|\n", "|lives|16|\n", "\n", "
\n", "\n", "This dataset represents a fictitious, but realistic, restaurant recommendation application that contains:\n", "\n", "* Users, represented by `person` nodes\n", "* Users connected to Users via `friends` edges\n", "* Restaurants and their associated information (`city`, `state`, `cusine`)\n", "* Reviews include the body and ratings\n", "* Ratings of reviews (helpful/not helpful)\n", "\n", "This application contains three main aspects to the data it collects. First, it contains a social network consisting of `person` nodes connected to other `person` nodes via a `friends` edge. Second, it contains a restaurant review aspect consisting of `restaurant` nodes, information about those restaurants (`city`/`state`/`cuisine`), and `review` nodes for that restaurant. The third, and final aspect, consists of a personalization component where a `person` can rate a `review`, which allows for better recommendations based on a person's preferences.\n", "\n", "Throughout this set of notebooks, we will leverage the different aspects of this data to highlight different fundamental types of common property graph queries, namely neighborhood traversals, hierarchies, paths, and collaborative filtering.\n", "\n", "Now let's get started." ] }, { "cell_type": "markdown", "id": "dfa24286", "metadata": {}, "source": [ "### Setting up the visualizations\n", "\n", "Run the next two cells to configure various display options for our notebook, which we will use later on to display our results in a pleasing visual way. " ] }, { "cell_type": "code", "execution_count": null, "id": "6e655017", "metadata": {}, "outputs": [], "source": [ "%%graph_notebook_vis_options\n", "{\n", " \"groups\": { \n", " \"person\": {\n", " \"color\": \"#9ac7bf\"\n", " },\n", " \"review\": {\n", " \"color\": \"#f8cecc\"\n", " },\n", " \"city\": {\n", " \"color\": \"#d5e8d4\"\n", " },\n", " \"state\": {\n", " \"color\": \"#dae8fc\"\n", " },\n", " \"review_rating\": {\n", " \"color\": \"#e1d5e7\"\n", " },\n", " \"restaurant\": {\n", " \"color\": \"#ffe6cc\"\n", " },\n", " \"cusine\": {\n", " \"color\": \"#fff2cc\"\n", " }\n", " }\n", "}" ] }, { "cell_type": "code", "execution_count": null, "id": "d5c80800", "metadata": {}, "outputs": [], "source": [ "node_labels = '{\"person\":\"first_name\",\"city\":\"name\",\"state\":\"name\",\"restaurant\":\"name\",\"cusine\":\"name\"}'" ] }, { "cell_type": "markdown", "id": "ab986dac", "metadata": {}, "source": [ "\n", "## Finding your Data\n", "\n", "When working with openCypher, the most common usage of the language is to find data. openCypher accomplishes this using a couple of clauses:\n", "\n", "* `MATCH` - specifies the pattern of data to look for, see below for the pattern syntax\n", "* `RETURN` - defines what and how the data will be returned to the user\n", "* `LIMIT` - while not required, this is useful to minimze the data returned by specifying the maximum number of matching patterns returned\n", "\n", "The `MATCH` clause is a fundamental part of every query. It uses an ASCII art-based syntax to define the pattern of nodes and edges that you would like to match within the graph. These matches are then used as the basis for the filter and format portions of the query. \n", "\n", "The pattern matching syntax used in is highlighted in the table below.\n", "\n", "#### Pattern Matching Syntax\n", "\n", "| openCypher Pattern|Description|\n", "|:--|:--|\n", "|`( )`|A node|\n", "|`[ ]`|An edge|\n", "|`-->`|Follow outgoing edges from a node|\n", "|`<--`|Follow incoming edges from a node|\n", "|`--`|Follow edges in either direction|\n", "|`-[]->`|Include the outgoing edges in the query (to check a label or property for example)|\n", "|`<-[]-`|Include the incoming edges in the query (to check a label or property for example)|\n", "|`-[]-` |Include edges in either direction in the query|\n", "|`-[]->( )`|The node on the other end of an outgoing edge|\n", "|`<-[]-()`|The node on the other end of an incoming edge|\n", "\n", "\n", "Looking at the syntax above, you may be curious about the concept of incoming and outgoing edges. In property graphs, all edges are defined as having a direction, meaning that they start at one node and end at another. However, graph query languages such as openCypher allow you to specify patterns where you traverse these edges in either direction. \n", "\n", "Now that we have a basic understanding of openCypher's pattern matching syntax, let's take a look at how this is applied to answer some common graph query patterns.\n", "\n", "### Finding Nodes\n", "\n", "The simplest pattern you can do in openCypher is to match nodes. In openCypher patterns, nodes are represented by parentheses (`()`).\n", "\n", "Patterns, or elements within a pattern, can be associated with a variable by assigning them within the related portion of the syntax. For nodes, this means adding it within the parentheses such as in `(n)` where `n` is the variable name. When we put a variable within a pattern, this portion of the pattern is then available to us later in the query for additional operations, such as filtering or formatting to return to the user, as shown below.\n", "\n", "Execute the query below to search for nodes and assign them to a variable `n` (`MATCH (n)`), return the nodes labeled `n` (`RETURN n`), but limit the number returned to 10." ] }, { "cell_type": "code", "execution_count": null, "id": "deabe58e", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (n) //find me nodes and label them 'n'\n", "RETURN n //return 'n'\n", "LIMIT 10 //return only 10 results" ] }, { "cell_type": "markdown", "id": "4eee92c8", "metadata": {}, "source": [ "**Note:** If no label is applied to a portion of the pattern, then that portion will be used for pattern matching but will not be available for additional operations, as we will see in the next query.\n", "\n", "### Finding Edges\n", "\n", "The example above works, but it does not leverage the connections within the data, represented by edges in our graph. Edges make graph databases a powerful asset for working with connected data. \n", "\n", "To perform a search across multiple nodes and edges, we need to use our pattern to specify how the nodes and edges are related using the following syntax:\n", "\n", "\n", "| openCypher Pattern|Description|\n", "|:--|:--|\n", "|`-->`|Follow outgoing edges from a node|\n", "|`<--`|Follow incoming edges from a node|\n", "|`--`|Follow edges in either direction|\n", "|`-[]->`|Include the outgoing edges in the query (to check a label or property for example)|\n", "|`<-[]-`|Include the incoming edges in the query (to check a label or property for example)|\n", "|`-[]-` |Include edges in either direction in the query|\n", "\n", "Execute the query below to search for node-edge->node patterns, assign the edges to a variable `r` (`MATCH ()-[r]->()`), and return 10 edges labeled `r` (`RETURN r`)." ] }, { "cell_type": "code", "execution_count": null, "id": "168bcc76", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH ()-[r]->() //find me all node-edge->node patterns\n", "RETURN r //return the edge\n", "LIMIT 10 //return only 10 results" ] }, { "cell_type": "markdown", "id": "6d36e1dd", "metadata": {}, "source": [ "In the example above, we specified using outgoing edges, via the arrow direction `()-[r]->()`, but we could have also chosen to look for patterns using only incoming edges, `()<-[r]-()`, or ignoring edge direction, `()-[r]-()`. \n", "\n", "To build more complex patterns, we can use these basic constructs to link together multiple levels of connections to find more complex patterns. In the example below, we have extended our previous query to return 10 nodes that have both incoming and outgoing edges, by specifying a `node-edge->node<-edge-node` pattern." ] }, { "cell_type": "code", "execution_count": null, "id": "55f2aaf9", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH ()-[]->(n)<-[]-() //find me all node-edge->node<-edge-node patterns\n", "RETURN n \n", "LIMIT 10 " ] }, { "cell_type": "markdown", "id": "6f5ef9ca", "metadata": {}, "source": [ "In the example above, we have returned matches based on a series of connected nodes and edges. When working with graphs, a series of connected nodes and edges may also be referred to as a 'path'. Often when we are looking for patterns within our graph, we would like to return not just a node or edge within the pattern but the path containing how these items are connected.\n", "\n", "\n", "### Finding Paths\n", "\n", "To find paths within our graph, we combine two constructs we have already learned: pattern matching and variables, to specify that we want the path returned. In our previous queries, we assigned a node or edge in our pattern to a variable. When returning a path, we assign the entire pattern to a variable, as seen below where we assign the path to a variable `p`. \n", "\n", "Once we have assigned our path to the variable, we can return this as we have previous variables, except now our returned values will contain the `node-edge->node<-edge-node` information for the path that was matched.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "1c3736ac", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH p=()-[]->(n)<-[]-() //assign my node-edge->node<-edge-node patterns to a variable 'p'\n", "RETURN p \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "df52d879", "metadata": {}, "source": [ "## Filtering your Data\n", "\n", "So far, we have learned how to find specific patterns within our graph based on how the nodes and edges connect. However, most of the time you will want to use attributes of the nodes and edges to filter the results to return a more specific subset of data. \n", "\n", "We accomplish this using the `WHERE` clause. Within the `WHERE` clause, there are a variety of operators available to perform logical operations and comparisons of the data. Below is a listing of the operators supported by openCypher.\n", "\n", "**Operators**\n", "\n", "|Type|Operators|\n", "| ----------- | ----------- |\n", "|General|`DISTINCT, x.y (property access)`|\n", "|Math|`+`, `-`, `*`, `/`|\n", "|Comparison|`=`, `>`, `<`, `<>`, `<=`, `>=`, `IS NULL`, `IS NOT NULL`|\n", "|Boolean|`AND`, `OR`, `NOT`, `XOR`|\n", "|String|`STARTS WITH`, `ENDS WITH`, `CONTAINS`, `+`|\n", "|LIST|`+`, `IN`, `[]`|\n", "\n", "\n", "In the next section, we will look at some common ways to apply filters using these operators. \n", "\n", "### Filtering Nodes by Label\n", "\n", "One of the most common items you will want to filter on will be the label(s) associated with a node. There are two methods for adding label filters to a query. You can either:\n", "\n", "* Inline the filter as part of the match clause, which is done by adding a colon (`:`) followed by one or more label names (separated by a `|`) \n", "* Use the `labels()` function in a `WHERE` clause to filter. \n", "\n", "Both of these will produce identical results so whether you choose one versus the other is a decision for the query writer. Below, we have included examples of both:\n", "\n", "#### Filtering using inline filters" ] }, { "cell_type": "code", "execution_count": null, "id": "651a0f21", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "61f35676", "metadata": {}, "source": [ "#### Filtering using `labels()` and the `WHERE` clause" ] }, { "cell_type": "code", "execution_count": null, "id": "0460223d", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d)\n", "WHERE 'person' IN labels(d)\n", "RETURN d\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "51893308", "metadata": {}, "source": [ "One item you might notice is the use of `IN` to find if the label exists in the node instead of an equality (`=`) operator. In openCypher, nodes can have multiple labels associated with them. As a result, the `labels()` function returns a list of labels and the `IN` clause allows us to find a specific label inside that list. \n", "\n", "### Filtering Edge by Type\n", "Another common item you to filter on is the type or label associated with an edge. As with nodes, there are two methods for adding edge label filters to a query, as shown here: \n", "\n", "* Inline the filter as part of the match clause, which is done by adding a colon (`:`) followed by one or more type names (separated by a |) \n", "* Use the `type()` function in a `WHERE` clause to filter. \n", "\n", "As with nodes, these will produce identical results so whether you choose one versus the other is a decision for the query writer. Below we have included examples of both:\n", "\n", "#### Filtering using inline filters" ] }, { "cell_type": "code", "execution_count": null, "id": "3b673615", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH p=(d:person)-[:friends]->()\n", "RETURN p\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "52375922", "metadata": {}, "source": [ "#### Filtering using `type()` and `WHERE`" ] }, { "cell_type": "code", "execution_count": null, "id": "a76e67d6", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH p=(d:person)-[r]->()\n", "WHERE type(r)='friends'\n", "RETURN p\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "2d59628b", "metadata": {}, "source": [ "Unlike when we filtered using `labels()`, when we use `type()` to filter edges we do not need to use `IN`. Edges can only have a single label associated with them, so the `type()` function will return a single value, not a list. Due to this difference, we can do a direct equality comparison.\n", "\n", "### Finding by Property\n", "\n", "The next common use case for filtering is to be able to filter on attribute values. \n", "\n", "As with node and edge labels, there are two methods for adding edge label filters to a query. Once again our options are either: \n", "\n", "* Inline the filter as part of the match clause, which is done by adding curly brackets containing the key/value you want to filter on (`{first_name: 'Dave'}`)\n", "* Use the `WHERE` clause to filter using the operators\n", "\n", "Below, we have included examples of both:" ] }, { "cell_type": "code", "execution_count": null, "id": "e755b029", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d)\n", "WHERE d.first_name='Dave'\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "738bfc3f", "metadata": {}, "source": [ "Alternatively, you include equality filters inline with the pattern by putting them into curly brackets (`{}`) with the property key name followed by the value, as shown below:" ] }, { "cell_type": "code", "execution_count": null, "id": "39ac2235", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d {first_name: 'Dave'})\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "61497739", "metadata": {}, "source": [ "In these two examples, both return the same results and are interpreted by the engine as the same query, so this begs the question of when to choose which one?\n", "\n", "Part of the answer to that question comes down to the preference of the query writer. However, here are some general guidelines:\n", "\n", "* Inlining of filters works only on equality filters for one or more properties. If you need to do non-equality filters (e.g. not equals, greater than, less than, `IN`) then you should use a `WHERE` clause\n", "* `WHERE` clauses allow more complex filtering using `AND`, `OR`, and `NOT` to build up more complex expressions\n", "* `WHERE` clauses support List and Pattern comprehension (discussed later) where in-lining filters does not" ] }, { "cell_type": "markdown", "id": "4b8defd4", "metadata": {}, "source": [ "### Filtering on Existence\n", "Another common need when filtering data is to check for the existence of an attribute or additional piece of topology. This is most commonly accomplished using the `exists()` function as shown below." ] }, { "cell_type": "code", "execution_count": null, "id": "968444f0", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "WHERE exists(d.last_name)\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "ac3261a9", "metadata": {}, "source": [ "You can also use the `exists()` function with the `NOT` predicate to filter on patterns that do not exist, such as in the example below where we find all `person` nodes that do not have a property `age`.\n", "\n", "**Note** - With this dataset it will return all 8 people as there is no `age` property in the data" ] }, { "cell_type": "code", "execution_count": null, "id": "7d5cd5ad", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "WHERE NOT exists(d.age)\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "0addc153", "metadata": {}, "source": [ "In the examples above, we checked the existence of a property using the `exists()` function. In addition to properties, we can also check for the existence of patterns, using the pattern matching syntax, as part of the `WHERE` clause. \n", "\n", "Below, we can see how we can leverage pattern matching to find all `person` nodes that do not have anyone who has connected to them with an incoming `friends` edge." ] }, { "cell_type": "code", "execution_count": null, "id": "09c11073", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "WHERE NOT (d)<-[:friends]-()\n", "RETURN d \n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "2081d7b4", "metadata": {}, "source": [ "## Formatting Results\n", "\n", "Having gone through the basics of finding and filtering data with openCypher, let's take a look at the last step, formatting our results. All openCypher read queries, and almost all mutation queries, end with a `RETURN` clause. This clause is used to specify what aspects of the data are returned and in what format.\n", "\n", "\n", "### Returning all values\n", "\n", "The simplest way to return data is to return all values specified in the query. This can be accomplished by specifying a wildcard `*` in the `RETURN` clause as shown here." ] }, { "cell_type": "code", "execution_count": null, "id": "2d1af3bf", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN *\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "953027a0", "metadata": {}, "source": [ "While this is easy to write, it is not very efficient, either in terms of the work the engine has to do to retrieve all the values or the amount of data that has to be transmitted over the wire.\n", "\n", "### Returning property values\n", "\n", "Most often, you want to be specific about the data elements (node/edges), attributes, or a combination of both, that a query returns. This provides for efficient processing, both at the database and client level, and efficient data transmission, since we are only retrieving, processing, and sending what is needed. \n", "\n", "To accomplish this, we use the `RETURN` clause to specify the variable associated with a node/edge/path or we specify the property or properties of elements using a `.` syntax. \n", "\n", "Below we have two queries, the first returns the person's first name and the second returns the first and last name values.\n", "\n", "**Note:** If you would like to assign a specific key to the values returned, you can rename them using the `AS` modifier, e.g., If you wanted to return the `first_name` as `name` you'd accomplish this via `RETURN d.first_name AS name`. If it is not specified, then the key name will default to the element or property variable name.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "9ba582e4", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN d.first_name\n", "LIMIT 10" ] }, { "cell_type": "code", "execution_count": null, "id": "ea3c4fba", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN d.first_name, d.last_name\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "4f89c0ba", "metadata": {}, "source": [ "### Returning unique values\n", "\n", "To return unique values in the results, use the `DISTINCT` clause in the `RETURN` statement to return just the unique values for the specified propery." ] }, { "cell_type": "code", "execution_count": null, "id": "c6cf5578", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN DISTINCT d.last_name\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "1d9b3131", "metadata": {}, "source": [ "### Returning static values\n", "\n", "While not as common as some of the other options shown here, openCypher also allows you to return static values for any matches. In the query below, we return a static literal `true` for each matched node." ] }, { "cell_type": "code", "execution_count": null, "id": "d218be0a", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d)\n", "RETURN true\n", "LIMIT 1" ] }, { "cell_type": "markdown", "id": "30566e03", "metadata": {}, "source": [ "### Projecting new return values\n", "\n", "In addition to returning existing values, we can also perform operations on those values using functions, which will be discussed in the third notebook), such as `min()`, `max()`, `toUpper()`, or perform other operations using primitives, such as concatenating strings. \n", "\n", "In the example below, we show how you can return a full name by concatenating the `first_name` and `last_name` using one these primitive operators. The exact primitives available and their behavior vary depending on the incoming data types." ] }, { "cell_type": "code", "execution_count": null, "id": "4f951169", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN d.first_name + ' ' + d.last_name AS full_name\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "809468ee", "metadata": {}, "source": [ "### Constructing complex return types\n", "\n", "In addition to returning simple key-value pairs, the `RETURN` clause can construct more complex response types such as maps. This is a common requirement, especially when returning aggregations or when returning attributes from different variables in the matched patterns.\n", "\n", "These new projections are created by supplying curly brackets (`{}`) and specify the key names and associated return values. These return values are specified using the same syntax we have shown above including elements, properties, or operations. The example below shows how each of these different options can be returned." ] }, { "cell_type": "code", "execution_count": null, "id": "b6d4d8c3", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "MATCH (d:person)\n", "RETURN {element: d, first: d.first_name, last: d.last_name, full: d.first_name + ' ' + d.last_name} AS full_name\n", "LIMIT 10" ] }, { "cell_type": "markdown", "id": "870e2989", "metadata": {}, "source": [ "## Exercises\n", "\n", "Now that we have gone through the basics of writing openCypher read queries, it's time to put it into practice. Below are several exercises you can complete to verify your understanding of the material covered in this notebook. As practice for what you have learned, please write the openCypher queries specified below.\n", "\n", "Using the social network portion (`person-friends->person`) of our Dining By Friends graph, let's answer the following questions. For each of these questions we are going to be working with the `friends` edge. Depending on the domain in which you are working, an edge such as `friends` could imply a mutual relationship or a one-way relationship. Sites such as LinkedIn and Facebook use a mutual friendship model where if `Person A-friends-Person B` then it means `Person B-friends-Person A`. Sites such as Twitter use a one-way friendship where a person may follow another person but that does not mean that they are followed back. For Dining By Friends, let's assume the `friends` edge represents a one-way relationship.\n", "\n", "\n", "### Exercise B-1 Find the first name of Dave's friends\n", "\n", "Using the data model above, write a query that will:\n", "\n", "* Find a `person` node(s) with a `first_name` of \"Dave\"\n", "* Find the friends of Dave (i.e. traverse the `friends` edge)\n", "* Return the friends `first_name`\n", "\n", "The correct answer is four results: \"Josh\", \"Hank\", \"Jim\", \"Kelly\"" ] }, { "cell_type": "code", "execution_count": null, "id": "ee77c9c6", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n" ] }, { "cell_type": "markdown", "id": "f4b6049f", "metadata": {}, "source": [ "### Exercise B-2 Find the first name of the friends of Dave's friends\n", "\n", "For the next exercise, let's find the friends of Dave's friends. In this case we will not exclude \n", "\n", "Using the data model above, write a query that will:\n", "\n", "* Find a `person` node(s) with a `first_name` of \"Dave\"\n", "* Find the friends of Dave (i.e. traverse the `friends` edge)\n", "* Find the friends of that person (i.e. traverse the `friends` edge)\n", "* Return the friends `first_name`\n", "\n", "The correct answer contains three results: \"Hank\", \"Denise\", \"Paras\"" ] }, { "cell_type": "code", "execution_count": null, "id": "e6cc0978", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n", "\n" ] }, { "cell_type": "markdown", "id": "91433ad6", "metadata": {}, "source": [ "### Exercise B-3 Find out how the friends of Dave's friends are connected\n", "\n", "Using the data model above, write a query that will:\n", "\n", "* Find a `person` node(s) with a `first_name` of \"Dave\"\n", "* Find the friends of Dave (i.e. traverse the `friends` edge)\n", "* Find the friends of that person (i.e. traverse the `friends` edge)\n", "* Return the path\n", "\n", "The correct answer contains three results: \"Hank\", \"Denise\", \"Paras\"" ] }, { "cell_type": "code", "execution_count": null, "id": "0e7b488b", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n" ] }, { "cell_type": "markdown", "id": "c80aba29", "metadata": {}, "source": [ "### Exercise B-4 Which friends should we recommend for Dave?\n", "\n", "A common use case for graphs in social networks is to recommend new connections. There is a significant amount of research in this area (example [here](https://www.science.org/doi/10.1126/sciadv.aax7310#:~:text=The%20triadic%20closure%20mechanism%20uses,features%20of%20empirical%20social%20networks)) but mainly there are two prevailing mechanisms at work in social networks that we can leverage to help provide efficient recommendations to a user. The first of these mechanisms is called homophily, which is the tendency of similar people to be connected. Homophily is a driving factor in many social networks, with an important outcome being that people connected to you, or connected to people that are connected to you, tend to be similar to you. This leads to the second mechanism in a graph, the concept of a triadic closure. Triadic closure is a way to create or recommend new connections based on common friends or acquaintances. \n", "\n", "\n", "In this exercise, we are going to leverage triadic closure to recommend friends for Dave. To accomplish this, we will need to leverage the previously written queries but extend them to:\n", "\n", "* Find all the friends of friends that do not have a connection to Dave\n", "\n", "The correct answer contains three results: \"Hank\", \"Denise\", \"Paras\"" ] }, { "cell_type": "code", "execution_count": null, "id": "fb26d6fd", "metadata": {}, "outputs": [], "source": [ "%%oc -d $node_labels\n" ] }, { "cell_type": "markdown", "id": "d1f7523f", "metadata": {}, "source": [ "## Conclusion\n", "\n", "In this notebook, we explored the basics of writing openCypher queries and how they are represented in the \"Find\", \"Filter\", \"Format\" paradigm. First, we learned the basics of how to specify the pattern of data we would like to match in our queries. Next, we learned several different mechanisms for how to filter the data found by our queries to return the correct results. Finally, we learned how to specify the format of the data being returned from a query to make for efficient use of database and application resources.\n", "\n", "In the next notebook, we will take what we have learned in this notebook and extend it to show how to answer questions where the length of the patterns is variable or unknown." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.12" } }, "nbformat": 4, "nbformat_minor": 5 }