Upcoming SlideShare
×

# The Graph Traversal Pattern

2,340 views
2,183 views

Published on

NoSQL Presentation of "The Graph Traversal Pattern" paper from Marko A. Rodriguez and Peter Neubauer.

Published in: Technology
4 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
2,340
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
65
0
Likes
4
Embeds 0
No embeds

No notes for slide

### The Graph Traversal Pattern

1. 1. Outline Introduction The Realization of Graphs Graph Traversals Conclusion The Graph Traversal Pattern (Marko A. Rodriguez, Peter Neubauer) Igor Bogicevic (igor.bogicevic@sbgenomics.com) September 5, 2010 Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
2. 2. Outline Introduction The Realization of Graphs Graph Traversals Conclusion Introduction The Realization of Graphs Brief Introductory The Indices of Relational Tables The Graph as an Index Graph Traversals Deﬁnition of Graph Traversals Traversing for Recommendation Content-Based Recommendation Collaborative Filtering-Based Recommendation Traversing Endogenous Indices Conclusion Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
3. 3. Outline Introduction The Realization of Graphs Graph Traversals Conclusion Introduction In the most common sense of the term, a graph is an ordered pair G = (V , E ) comprising a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets of V (i.e, an edge is related with two vertices, and the relation is represented as unordered pair of the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be described precisely as undirected and simple. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
4. 4. Outline Introduction The Realization of Graphs Graph Traversals Conclusion Introduction In the most common sense of the term, a graph is an ordered pair G = (V , E ) comprising a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets of V (i.e, an edge is related with two vertices, and the relation is represented as unordered pair of the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be described precisely as undirected and simple. For directed graphs, E ⊆ (V × V ) and for undirected graphs, E ⊆ {V × V }. That is, E is a subset of all ordered or unordered permutations of V element pairings. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
5. 5. Outline Introduction The Realization of Graphs Graph Traversals Conclusion Introduction In the most common sense of the term, a graph is an ordered pair G = (V , E ) comprising a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets of V (i.e, an edge is related with two vertices, and the relation is represented as unordered pair of the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be described precisely as undirected and simple. For directed graphs, E ⊆ (V × V ) and for undirected graphs, E ⊆ {V × V }. That is, E is a subset of all ordered or unordered permutations of V element pairings. In diﬀerent contexts it may be useful to deﬁne the term graph with diﬀerent degrees of generality. Whenever it is necessary to draw a strict distinction, the following terms are used. Most commonly, in modern texts in graph theory, unless stated otherwise, graph means ”undirected simple ﬁnite graph” Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
6. 6. Outline Introduction The Realization of Graphs Graph Traversals Conclusion Introduction In the most common sense of the term, a graph is an ordered pair G = (V , E ) comprising a set V of vertices or nodes together with a set E of edges or lines, which are 2-element subsets of V (i.e, an edge is related with two vertices, and the relation is represented as unordered pair of the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be described precisely as undirected and simple. For directed graphs, E ⊆ (V × V ) and for undirected graphs, E ⊆ {V × V }. That is, E is a subset of all ordered or unordered permutations of V element pairings. In diﬀerent contexts it may be useful to deﬁne the term graph with diﬀerent degrees of generality. Whenever it is necessary to draw a strict distinction, the following terms are used. Most commonly, in modern texts in graph theory, unless stated otherwise, graph means ”undirected simple ﬁnite graph” We can talk about various other types of graphs: Mixed graphs, Multigraphs, Weighted graphs, etc. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
7. 7. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion Brief Introductory Relational databases have been around since the late 1960s (Edgar F. Codd, A relational model of data for large shared data banks) and are todays most predominate data management tool. Relational databases maintain a collection of tables. Each table can be deﬁned by a set of rows and a set of columns. Semantically, rows denote objects and columns denote properties/attributes. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
8. 8. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion Brief Introductory Relational databases have been around since the late 1960s (Edgar F. Codd, A relational model of data for large shared data banks) and are todays most predominate data management tool. Relational databases maintain a collection of tables. Each table can be deﬁned by a set of rows and a set of columns. Semantically, rows denote objects and columns denote properties/attributes. In contrast, graph databases do not store data in disparate tables. Instead there is a single data structure—the graph. Moreover, there is no concept of a “join” operation as every vertex and edge has a direct reference to its adjacent vertex or edge. The data structure is already “joined” by the edges that are deﬁned. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
9. 9. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion Brief Introductory Relational databases have been around since the late 1960s (Edgar F. Codd, A relational model of data for large shared data banks) and are todays most predominate data management tool. Relational databases maintain a collection of tables. Each table can be deﬁned by a set of rows and a set of columns. Semantically, rows denote objects and columns denote properties/attributes. In contrast, graph databases do not store data in disparate tables. Instead there is a single data structure—the graph. Moreover, there is no concept of a “join” operation as every vertex and edge has a direct reference to its adjacent vertex or edge. The data structure is already “joined” by the edges that are deﬁned. Main drawback - it’s hard to shard a graph. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
10. 10. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion Brief Introductory Relational databases have been around since the late 1960s (Edgar F. Codd, A relational model of data for large shared data banks) and are todays most predominate data management tool. Relational databases maintain a collection of tables. Each table can be deﬁned by a set of rows and a set of columns. Semantically, rows denote objects and columns denote properties/attributes. In contrast, graph databases do not store data in disparate tables. Instead there is a single data structure—the graph. Moreover, there is no concept of a “join” operation as every vertex and edge has a direct reference to its adjacent vertex or edge. The data structure is already “joined” by the edges that are deﬁned. Main drawback - it’s hard to shard a graph. Main beneﬁt - constant time cost for retrieving an adjacent vertex or edge. In other words, regardless of the size of the graph as a whole, the cost of a local read operation at a vertex or edge remains constant. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
11. 11. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Indices of Relational Tables Direct data access is ineﬃcient - for n elements, a linear scan runs in O(n) Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
12. 12. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Indices of Relational Tables Direct data access is ineﬃcient - for n elements, a linear scan runs in O(n) Binary search tree dramatically reduces the overhead - searching such indices takes O(log2 n) Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
13. 13. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Indices of Relational Tables Direct data access is ineﬃcient - for n elements, a linear scan runs in O(n) Binary search tree dramatically reduces the overhead - searching such indices takes O(log2 n) In eﬀect, the join operation forms a graph that is dynamically constructed as one table is linked to another table. While having the beneﬁt of being able to dynamically construct graphs, the limitation is that this graph is not explicit in the relational structure, but instead must be inferred through a series of index-intensive operations. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
14. 14. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Indices of Relational Tables person.identiﬁer index person.name index friend.person_a index identiﬁer name person_a person_b 1 Alberto Pepe 1 2 2 ... 1 3 3 ... 1 4 4 ... ... ... Figure: A table representation of people and their friends. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
15. 15. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
16. 16. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
17. 17. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). In the property graph model, it is common for the properties of the vertices (and sometimes edges) to be indexed using a tree structure analogous, in many ways, to those used by relational databases. This index can be represented by some external indexing system or endogenous to the graph as an embedded tree. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
18. 18. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). In the property graph model, it is common for the properties of the vertices (and sometimes edges) to be indexed using a tree structure analogous, in many ways, to those used by relational databases. This index can be represented by some external indexing system or endogenous to the graph as an embedded tree. The domain model deﬁnes how the elements of the problem space are related. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
19. 19. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). In the property graph model, it is common for the properties of the vertices (and sometimes edges) to be indexed using a tree structure analogous, in many ways, to those used by relational databases. This index can be represented by some external indexing system or endogenous to the graph as an embedded tree. The domain model deﬁnes how the elements of the problem space are related. The domain model partitions elements using semantics deﬁned by the domain modeler. Thus, in many ways, a graph can be seen as an indexing structure. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
20. 20. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). In the property graph model, it is common for the properties of the vertices (and sometimes edges) to be indexed using a tree structure analogous, in many ways, to those used by relational databases. This index can be represented by some external indexing system or endogenous to the graph as an embedded tree. The domain model deﬁnes how the elements of the problem space are related. The domain model partitions elements using semantics deﬁned by the domain modeler. Thus, in many ways, a graph can be seen as an indexing structure. In a graph database, there is no explicit join operation because vertices maintain direct references to their adjacent edges. In many ways, the edges of the graph serve as explicit, “hard-wired” join structures, not computed in run time as joins. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
21. 21. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index A single-relational graph maintains a set of edges, where all the edges are homogeneous in meaning. This means that separate relationships (i.e. friendship, kinship, etc.) are stored as separate graphs. Formally, a property graph can be deﬁned as G = (V , E , λ, µ), where edges are directed (i.e. E ⊆ (V × V )), edges are labeled (i.e. λ : E → Σ), and properties are a map from elements and keys to values (i.e. µ : (V ∪ E ) × R → S). In the property graph model, it is common for the properties of the vertices (and sometimes edges) to be indexed using a tree structure analogous, in many ways, to those used by relational databases. This index can be represented by some external indexing system or endogenous to the graph as an embedded tree. The domain model deﬁnes how the elements of the problem space are related. The domain model partitions elements using semantics deﬁned by the domain modeler. Thus, in many ways, a graph can be seen as an indexing structure. In a graph database, there is no explicit join operation because vertices maintain direct references to their adjacent edges. In many ways, the edges of the graph serve as explicit, “hard-wired” join structures, not computed in run time as joins. The act of traversing over an edge is the act of joining. However, what makes this more eﬃcient in a graph database is that traversing from one vertex to another is a constant time operation. Thus, traversal time is deﬁned solely by the number of elements touched by the traversal. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
22. 22. Outline Introduction Brief Introductory The Realization of Graphs The Indices of Relational Tables Graph Traversals The Graph as an Index Conclusion The Graph as an Index name=... 2 vertex.name index friend name=Alberto Pepe name=... 1 friend 3 ... ... friend name=... 4 Figure: A graph representation of people and their friends. Given the tree-nature of the vertex.name index, it is possible, and many times useful to model the index endogenous to the graph. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
23. 23. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals Graph traversal refers to visiting elements (i.e. vertices and edges) in a graph in some algorithmic fashion. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
24. 24. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals Graph traversal refers to visiting elements (i.e. vertices and edges) in a graph in some algorithmic fashion. The most primitive, read-based operation on a graph is a single step traversal from element i to element j, where i, j ∈ (V ∪ E ). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
25. 25. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals Graph traversal refers to visiting elements (i.e. vertices and edges) in a graph in some algorithmic fashion. The most primitive, read-based operation on a graph is a single step traversal from element i to element j, where i, j ∈ (V ∪ E ). These operations are deﬁned over power multiset domains and ranges - power ˆ multiset of A, denoted P(A), is the inﬁnite set of all subsets of multisets of A. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
26. 26. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals Graph traversal refers to visiting elements (i.e. vertices and edges) in a graph in some algorithmic fashion. The most primitive, read-based operation on a graph is a single step traversal from element i to element j, where i, j ∈ (V ∪ E ). These operations are deﬁned over power multiset domains and ranges - power ˆ multiset of A, denoted P(A), is the inﬁnite set of all subsets of multisets of A. Let’s list single step traversals: eout : P(V ) → P(E ): traverse to the outgoing edges of the vertices. ˆ ˆ ein : P(V ) → P(E ): traverse to the incoming edges to the vertices. ˆ ˆ vout : P(E ) → P(V ): traverse to the outgoing (i.e. tail) vertices of the edges. ˆ ˆ vin : P(E ) → P(V ): traverse the incoming (i.e. head) vertices of the edges. ˆ ˆ : P(V ∪ E ) × R → P(S): get the element property values for key r ∈ R. ˆ ˆ Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
27. 27. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals When edges are labeled and elements have properties, it is desirable to constrain the traversal to edges of a particular label or elements with particular properties. These operations are known as ﬁlters and are abstractly deﬁned in the following itemization: elab± : P(E ) × Σ → P(E ): allow (or ﬁlter) all edges with the label σ ∈ Σ. ˆ ˆ p± : P(V ∪ E ) × R × S → P(V ∪ E ): allow (or ﬁlter) all elements with the property ˆ ˆ s ∈ S for key r ∈ R. ± : P(V ∪ E ) × (V ∪ E ) → P(V ∪ E ): allow (or ﬁlter) all elements that are the ˆ ˆ provided element. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
28. 28. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals When edges are labeled and elements have properties, it is desirable to constrain the traversal to edges of a particular label or elements with particular properties. These operations are known as ﬁlters and are abstractly deﬁned in the following itemization: elab± : P(E ) × Σ → P(E ): allow (or ﬁlter) all edges with the label σ ∈ Σ. ˆ ˆ p± : P(V ∪ E ) × R × S → P(V ∪ E ): allow (or ﬁlter) all elements with the property ˆ ˆ s ∈ S for key r ∈ R. ± : P(V ∪ E ) × (V ∪ E ) → P(V ∪ E ): allow (or ﬁlter) all elements that are the ˆ ˆ provided element. Through function composition, we can deﬁne graph traversals of arbitrary length, i.e. Alberto Pepe’s friends: ˆ ˆ f : P(V ) → P(S), where f (i) = (vin (elab+ (eout (i), friend)) , name) , then f (i) will return the names of Alberto Pepe’s friends. Through function currying and composition, the previous deﬁnition can be represented more clearly with the following function rule, “ ” f (i) = name ◦ vin ◦ elab+ ◦ eout (i). friend Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
29. 29. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Deﬁnition of Graph Traversals name=... 2 friend name=Alberto Pepe name=... 1 friend 3 name=... eout friend 4 efriend lab+ vin name Figure: A single path along along the f traversal. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
30. 30. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
31. 31. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Content-based recommendation deals with recommending resources that share characteristics (i.e. content) with a set of resources. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
32. 32. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Content-based recommendation deals with recommending resources that share characteristics (i.e. content) with a set of resources. On the other side collaborative ﬁltering-based recommendation in concerned with determining the similarity of resources based upon the similarity of the taste of the people modeled within the system. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
33. 33. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Content-based recommendation deals with recommending resources that share characteristics (i.e. content) with a set of resources. On the other side collaborative ﬁltering-based recommendation in concerned with determining the similarity of resources based upon the similarity of the taste of the people modeled within the system. Graph databases provide a good paradigm for dealing with both recommendation techniques. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
34. 34. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Content-based recommendation deals with recommending resources that share characteristics (i.e. content) with a set of resources. On the other side collaborative ﬁltering-based recommendation in concerned with determining the similarity of resources based upon the similarity of the taste of the people modeled within the system. Graph databases provide a good paradigm for dealing with both recommendation techniques. Furthermore, using the graph traversal pattern, there exists a single graph data structure that can be traversed in diﬀerent ways to expose diﬀerent types of recommendations—generally, diﬀerent types of relationships between vertices. Being able to mix and match the types of traversals executed alters the semantics of the ﬁnal rankings and conveniently allows for hybrid recommendation algorithms to emerge. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
35. 35. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation Recommendation systems are designed to help people deal with the problem of information overload by ﬁltering information in the system that doesn’t pertain to the person. Content-based recommendation deals with recommending resources that share characteristics (i.e. content) with a set of resources. On the other side collaborative ﬁltering-based recommendation in concerned with determining the similarity of resources based upon the similarity of the taste of the people modeled within the system. Graph databases provide a good paradigm for dealing with both recommendation techniques. Furthermore, using the graph traversal pattern, there exists a single graph data structure that can be traversed in diﬀerent ways to expose diﬀerent types of recommendations—generally, diﬀerent types of relationships between vertices. Being able to mix and match the types of traversals executed alters the semantics of the ﬁnal rankings and conveniently allows for hybrid recommendation algorithms to emerge. Following ﬁgure presents a toy graph data set, where there exist a set of people, resources, and features related to each other by likes- and feature-labeled edges. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
36. 36. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing for Recommendation feature 8 f r 2 likes p 6 likes likes p 1 likes r 3 likes p 7 feature likes r 4 feature f 5 Figure: A graph data structure containing people (p), their liked resources (r), and each resource’s features (f). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
37. 37. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation In order to identify resources that that are similar in features (i.e. content-based recommendation) to a resource, traverse to all resources that share the same ˆ ˆ features. This is accomplished with the following function, f : P(V ) → P(V ), where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). feature feature Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
38. 38. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation In order to identify resources that that are similar in features (i.e. content-based recommendation) to a resource, traverse to all resources that share the same ˆ ˆ features. This is accomplished with the following function, f : P(V ) → P(V ), where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). feature feature Assuming i = 3, function f states, traverse to the outgoing edges of resource vertex 3, only allow feature-labeled edges, and then traverse to the incoming vertices of those feature-labeled edges. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
39. 39. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation In order to identify resources that that are similar in features (i.e. content-based recommendation) to a resource, traverse to all resources that share the same ˆ ˆ features. This is accomplished with the following function, f : P(V ) → P(V ), where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). feature feature Assuming i = 3, function f states, traverse to the outgoing edges of resource vertex 3, only allow feature-labeled edges, and then traverse to the incoming vertices of those feature-labeled edges. At this point, the traverser is at feature vertex 8. Next, traverse to the incoming edges of feature vertex 8, only allow feature-labeled edges, and then traverse to the outgoing vertices of these feature-labeled edges and at that point, the traverser is at resource vertices 3 and 2. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
40. 40. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation In order to identify resources that that are similar in features (i.e. content-based recommendation) to a resource, traverse to all resources that share the same ˆ ˆ features. This is accomplished with the following function, f : P(V ) → P(V ), where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). feature feature Assuming i = 3, function f states, traverse to the outgoing edges of resource vertex 3, only allow feature-labeled edges, and then traverse to the incoming vertices of those feature-labeled edges. At this point, the traverser is at feature vertex 8. Next, traverse to the incoming edges of feature vertex 8, only allow feature-labeled edges, and then traverse to the outgoing vertices of these feature-labeled edges and at that point, the traverser is at resource vertices 3 and 2. However, since we are trying to identify those resources similar in content to vertex 3, we need to ﬁlter out vertex 3. This is accomplished by the last stage of the function composition. Thus, given the toy graph data set, vertex 2 is similar to vertex 3 in content. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
41. 41. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation In order to identify resources that that are similar in features (i.e. content-based recommendation) to a resource, traverse to all resources that share the same ˆ ˆ features. This is accomplished with the following function, f : P(V ) → P(V ), where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). feature feature Assuming i = 3, function f states, traverse to the outgoing edges of resource vertex 3, only allow feature-labeled edges, and then traverse to the incoming vertices of those feature-labeled edges. At this point, the traverser is at feature vertex 8. Next, traverse to the incoming edges of feature vertex 8, only allow feature-labeled edges, and then traverse to the outgoing vertices of these feature-labeled edges and at that point, the traverser is at resource vertices 3 and 2. However, since we are trying to identify those resources similar in content to vertex 3, we need to ﬁlter out vertex 3. This is accomplished by the last stage of the function composition. Thus, given the toy graph data set, vertex 2 is similar to vertex 3 in content. Following diagram illustrates such traversal: Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
42. 42. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation efeature lab+ ein vout feature 8 f r 2 i − vin r 3 feature eout efeature lab+ Figure: A traversal that identiﬁes resources that are similar in content to a set of resources based upon shared features. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
43. 43. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation It’s simple to extend content-based recommendation to problems such as: “Given what person i likes, what other resources have similar features?” Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
44. 44. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation It’s simple to extend content-based recommendation to problems such as: “Given what person i likes, what other resources have similar features?” Such a problem is solved using the previous function f deﬁned above combined with a new composition that ﬁnds all the resources that person i likes. Thus, if ˆ ˆ g : P(V ) → P(V ), where “ ” likes g (i) = vin ◦ elab+ ◦ eout (i), then to determine those resources similar in features to the resources that person vertex 7 likes, compose function f and g : (f ◦ g ). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
45. 45. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation It’s simple to extend content-based recommendation to problems such as: “Given what person i likes, what other resources have similar features?” Such a problem is solved using the previous function f deﬁned above combined with a new composition that ﬁnds all the resources that person i likes. Thus, if ˆ ˆ g : P(V ) → P(V ), where “ ” likes g (i) = vin ◦ elab+ ◦ eout (i), then to determine those resources similar in features to the resources that person vertex 7 likes, compose function f and g : (f ◦ g ). Those resources that share more features in common will be returned more by f ◦ g. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
46. 46. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Content-Based Recommendation It’s simple to extend content-based recommendation to problems such as: “Given what person i likes, what other resources have similar features?” Such a problem is solved using the previous function f deﬁned above combined with a new composition that ﬁnds all the resources that person i likes. Thus, if ˆ ˆ g : P(V ) → P(V ), where “ ” likes g (i) = vin ◦ elab+ ◦ eout (i), then to determine those resources similar in features to the resources that person vertex 7 likes, compose function f and g : (f ◦ g ). Those resources that share more features in common will be returned more by f ◦ g. Using this approach, function can return similar results so, if necessary, deduplication has to be handled with a separate mechanism. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
47. 47. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation With collaborative ﬁltering, the objective is to identify a set of resources that have a high probability of being liked by a person based upon identifying other people in the system that enjoy similar likes. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
48. 48. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation With collaborative ﬁltering, the objective is to identify a set of resources that have a high probability of being liked by a person based upon identifying other people in the system that enjoy similar likes. In example, if person a and person b share 90% of their liked resources in common, then the remaining 10% they don’t share in common are candidates for recommendation. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
49. 49. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation With collaborative ﬁltering, the objective is to identify a set of resources that have a high probability of being liked by a person based upon identifying other people in the system that enjoy similar likes. In example, if person a and person b share 90% of their liked resources in common, then the remaining 10% they don’t share in common are candidates for recommendation. For simplicity, this traversal is broken into two components f and g . Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
50. 50. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation ˆ ˆ First component is f : P(V ) → P(V ) where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). like like Function f traverses to all those people vertices that like the same resources as person vertex i and who themselves are not vertex i (as a person is obviously similar to themselves and thus, doesn’t contribute anything to the computation). The more resources liked that a person shares in common with i, the more traversers will be located at that person’s vertex. In other words, if person i and person j share 10 liked resources in common, then f (i) will return person j 10 times. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
51. 51. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation ˆ ˆ First component is f : P(V ) → P(V ) where “ ” f (i) = i − ◦ vout ◦ elab+ ◦ ein ◦ vin ◦ elab+ ◦ eout (i). like like Function f traverses to all those people vertices that like the same resources as person vertex i and who themselves are not vertex i (as a person is obviously similar to themselves and thus, doesn’t contribute anything to the computation). The more resources liked that a person shares in common with i, the more traversers will be located at that person’s vertex. In other words, if person i and person j share 10 liked resources in common, then f (i) will return person j 10 times. Next, function g is deﬁned as “ ” like g (j) = vin ◦ elab+ ◦ eout (j). Function g traverses to all the resources liked by vertex j. In composition, (g ◦ f )(i) determines all those resources that are liked by those people that have similar tastes to vertex i. If person j likes 10 resources in common with person i, then the resources that person j likes will be returned at least 10 times by g ◦ f (perhaps more if a path exists to those resources from another person vertex as well). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
52. 52. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Collaborative Filtering-Based Recommendation Following ﬁgure diagrams a function path starting from vertex 7. Only one legal path is presented for the sake of diagram clarity g likes j − vin elab+ eout i − r 2 likes p 6 elikes lab+ likes ein vout likes f p 1 likes r 3 likes p 7 likes vin eout r 4 elikes lab+ Figure: A traversal that identiﬁes resources that are similar in content to a resource based upon shared features. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
53. 53. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices A graph is a general-purpose data structure. A graph can be used to model lists, maps, trees, etc. As such, a graph can model an index. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
54. 54. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices A graph is a general-purpose data structure. A graph can be used to model lists, maps, trees, etc. As such, a graph can model an index. It was previously assumed that a graph database makes use of an external indexing system to index the properties of its vertices and edges with assumption that specialized indexing systems are better suited for special-purpose queries such as those involving full-text search. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
55. 55. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices A graph is a general-purpose data structure. A graph can be used to model lists, maps, trees, etc. As such, a graph can model an index. It was previously assumed that a graph database makes use of an external indexing system to index the properties of its vertices and edges with assumption that specialized indexing systems are better suited for special-purpose queries such as those involving full-text search. In many cases, there is nothing that prevents the representation of an index within the graph itself—vertices and edges can be indexed by other vertices and edges and given the nature of how vertices and edges directly reference each other in a graph database, index look-up speeds are comparable. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
56. 56. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices A graph is a general-purpose data structure. A graph can be used to model lists, maps, trees, etc. As such, a graph can model an index. It was previously assumed that a graph database makes use of an external indexing system to index the properties of its vertices and edges with assumption that specialized indexing systems are better suited for special-purpose queries such as those involving full-text search. In many cases, there is nothing that prevents the representation of an index within the graph itself—vertices and edges can be indexed by other vertices and edges and given the nature of how vertices and edges directly reference each other in a graph database, index look-up speeds are comparable. Endogenous indices aﬀord graph databases a great ﬂexibility in modeling a domain. Not only can objects and their relationships be modeled (e.g. people and their friendships), but also the indices that partition the objects into meaningful subsets (e.g. people within a 2D region of space). Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
57. 57. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices A graph is a general-purpose data structure. A graph can be used to model lists, maps, trees, etc. As such, a graph can model an index. It was previously assumed that a graph database makes use of an external indexing system to index the properties of its vertices and edges with assumption that specialized indexing systems are better suited for special-purpose queries such as those involving full-text search. In many cases, there is nothing that prevents the representation of an index within the graph itself—vertices and edges can be indexed by other vertices and edges and given the nature of how vertices and edges directly reference each other in a graph database, index look-up speeds are comparable. Endogenous indices aﬀord graph databases a great ﬂexibility in modeling a domain. Not only can objects and their relationships be modeled (e.g. people and their friendships), but also the indices that partition the objects into meaningful subsets (e.g. people within a 2D region of space). The domain of spatial analysis makes use of advanced indexing structures such as the quadtree. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)
58. 58. Outline Deﬁnition of Graph Traversals Introduction Traversing for Recommendation The Realization of Graphs Content-Based Recommendation Graph Traversals Collaborative Filtering-Based Recommendation Conclusion Traversing Endogenous Indices Traversing Endogenous Indices Quadtrees partition a two-dimensional plane into rectangular boxes based upon the spatial density of the points being indexed. Following ﬁgure diagrams how space is partitioned as the density of points increases within a region of the index.: Figure: A quadtree partition of a plane. This ﬁgure is an adaptation of a public domain image provided courtesy of David Eppstein. Igor Bogicevic (igor.bogicevic@sbgenomics.com) The Graph Traversal Pattern(Marko A. Rodriguez, Peter Neubauer)