Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
LiorKogan authored Jul 8, 2023
1 parent 1a1c1d0 commit a4511ac
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Feedback, questions, corrections, and suggestions are welcome.

## Introduction

The _property graph_ is an increasingly popular data model. Pattern construction and pattern matching are important tasks when dealing with property graphs. Given a property graph schema 𝑆, a property graph 𝐺 conforming to 𝑆, and a query pattern 𝑃 conforming to 𝑆, all expressed in language _L=_(_L<sub>S</sub>, L<sub>G</sub>, L<sub>P</sub>, L<sub>R</sub>_), _pattern matching_ is the process of finding, transforming, merging, and annotating subgraphs of 𝐺 that match 𝑃. The syntaxes of sublanguages _L<sub>S</sub>_, _L<sub>G</sub>_, _L<sub>P</sub>_, and _L<sub>R</sub>_ define what and how symbols can be combined to form well-formed schemas, graphs, patterns, and query results, respectively. A semantics of _L<sub>P</sub>_ is a mapping (𝑆, 𝐺, 𝑃) β†’ 𝑅: which subgraphs of 𝐺 match 𝑃 and how to transform, merge, and annotate them. Expressive pattern languages support topological constraints, property value constraints, negations, quantifications, aggregations, and path semantics. _Calculated properties_ may be defined for vertices, edges, and subgraphs, and constraints may be imposed on their evaluation result.
The _property graph_ is an increasingly popular data model. Pattern construction and pattern matching are important tasks when dealing with property graphs. Given a property graph schema 𝑆, a property graph 𝐺 conforming to 𝑆, and a query pattern 𝑃 conforming to 𝑆, all expressed in language 𝐿 = (𝐿<sub>_S_</sub>, 𝐿<sub>_G_</sub>, 𝐿<sub>_P_</sub>, 𝐿<sub>_R_</sub>), _pattern matching_ is the process of finding, transforming, merging, and annotating subgraphs of 𝐺 that match 𝑃. The syntaxes of sublanguages 𝐿<sub>_S_</sub>_, 𝐿<sub>_G_</sub>_, 𝐿<sub>_P_</sub>_, and 𝐿<sub>_R_</sub>_ define what and how symbols can be combined to form well-formed schemas, graphs, patterns, and query results, respectively. A semantics of _L<sub>P</sub>_ is a mapping (𝑆, 𝐺, 𝑃) β†’ 𝑅: which subgraphs of 𝐺 match 𝑃 and how to transform, merge, and annotate them. Expressive pattern languages support topological constraints, property value constraints, negations, quantifications, aggregations, and path semantics. _Calculated properties_ may be defined for vertices, edges, and subgraphs, and constraints may be imposed on their evaluation result.

Many query posers are professionals (e.g., researchers, analysts, or investigators) who construct patterns as part of their daily work (e.g., investigative analytics). Such domain experts would like to construct patterns with minimal effort, minimal trial and error, and in a manner that is coherent with the way they think. The ability to express patterns in a way that is aligned with their mental processes is crucial to the flow of their work and to the quality of the insights they can draw. Many domain experts will not use textual property graph query languages (e.g., [Gremlin](https://arxiv.org/abs/1508.03843), [GSQL](https://arxiv.org/abs/1901.08248), [Cypher](https://dl.acm.org/citation.cfm?id=3190657), [PGQL](https://dl.acm.org/citation.cfm?id=2960421), [G-CORE](https://arxiv.org/abs/1712.01550), and the proposed [GQL](https://gql.today/)) either because it can be too hard for someone with little or no programming or scripting skills, or because it requires them to spend too much time on the technicalities and distracts them from their line of inquiry. As a result, they are forced to use only a predefined set of query templates or work in concert with technical experts. Both solutions are far from satisfying.

Expand All @@ -87,7 +87,7 @@ The term _property graph_ refers to both a mathematical structure and a data mod

A [_graph_](https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)) is an ordered quintet 𝐺 = (𝑉, 𝐸, 𝐴, _Οˆβ‚‘_, _Οˆβ‚_) consisting of three pairwise disjoint sets and two functions. 𝑉 is a nonempty set whose elements are called [_vertices_](https://en.wikipedia.org/wiki/Vertex_(graph_theory)) (_nodes_, _dots_, _points_), 𝐸 is a set whose elements are called _undirected edges_ (_undirected links_, _undirected lines_), 𝐴 is a set whose elements are called _directed edges_ (_directed links_, _directed lines_, _arcs_, _arrows_), _Οˆβ‚‘: E β†’ { {u,v}: u,v ∈ V }_ is a total function mapping each undirected edge to an unordered pair of vertices, and _Οˆβ‚: A β†’ { (u,v): u,v ∈ V }_ is a total function mapping each directed edge to an ordered pair of vertices. An [_undirected graph_](https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)#Graph) is a graph in which 𝐴 ≔ _βˆ…_. A [_directed graph_](https://en.wikipedia.org/wiki/Directed_graph) (_digraph_, _oriented graph_) is a graph in which 𝐸 ≔ _βˆ…_. A [_mixed graph_](https://en.wikipedia.org/wiki/Mixed_graph) is a graph where both directed and undirected edges may exist.

Given undirected edge 𝑒 such that _Οˆβ‚‘_(𝑒) = {𝑒,𝑣}, we say 𝑒 is an edge _between_ 𝑒 and 𝑣, 𝑒 _connects_ (_joins_) 𝑒 and 𝑣, and 𝑒 and 𝑣 are _adjacent_. Likewise, given directed edge π‘Ž such that _Οˆβ‚_(π‘Ž) = (𝑒,𝑣), we say that 𝑒 is an edge _from_ 𝑒 _to_ 𝑣, π‘Ž _connects_ (_joins_) 𝑒 to 𝑣, 𝑣 is _out adjacent to_ 𝑒, 𝑒 is _in adjacent to_ 𝑣, 𝑒 is π‘Ž's tail (π‘Ž's _source vertex_), and 𝑣 is π‘Ž's head (π‘Ž's _target_ vertex). A [_loop_](https://en.wikipedia.org/wiki/Loop_(graph_theory)) is an edge (directed or undirected) connecting a vertex with itself. [_Multiple edges_](https://en.wikipedia.org/wiki/Multiple_edges) (_parallel edges_) are two or more undirected edges connecting the same unordered pair of vertices or directed edges connecting the same ordered pair of vertices. A _simple graph_ is a graph in which multiple edges and loops are not allowed. A [_pseudograph_](http://mathworld.wolfram.com/Pseudograph.html) is a graph in which multiple edges and loops are allowed.
Given undirected edge 𝑒 such that _Οˆβ‚‘_(𝑒) = {𝑒,𝑣}, we say that 𝑒 is an edge _between_ 𝑒 and 𝑣, 𝑒 _connects_ (_joins_) 𝑒 and 𝑣, and 𝑒 and 𝑣 are _adjacent_. Likewise, given directed edge π‘Ž such that _Οˆβ‚_(π‘Ž) = (𝑒,𝑣), we say that 𝑒 is an edge _from_ 𝑒 _to_ 𝑣, π‘Ž _connects_ (_joins_) 𝑒 to 𝑣, 𝑣 is _out adjacent to_ 𝑒, 𝑒 is _in adjacent to_ 𝑣, 𝑒 is π‘Ž's tail (π‘Ž's _source vertex_), and 𝑣 is π‘Ž's head (π‘Ž's _target_ vertex). A [_loop_](https://en.wikipedia.org/wiki/Loop_(graph_theory)) is an edge (directed or undirected) connecting a vertex with itself. [_Multiple edges_](https://en.wikipedia.org/wiki/Multiple_edges) (_parallel edges_) are two or more undirected edges connecting the same unordered pair of vertices or directed edges connecting the same ordered pair of vertices. A _simple graph_ is a graph in which multiple edges and loops are not allowed. A [_pseudograph_](http://mathworld.wolfram.com/Pseudograph.html) is a graph in which multiple edges and loops are allowed.

An _attributed graph_ is a generic term referring to graphs in which an attribute (_single-attributed graph_) or a set, a bag, or a list of attributes (_multi-attributed graph_) may be associated with each vertex (_vertex-attributed graph_), edge (_edge-attributed graph_), or the graph itself. An _attribute_ may be a nominal value, an ordinal value, a key-value pair, or other annotation. (The term _attributes_ is sometimes used to refer only to key-value pairs, while _labels_ is used to refer to nominal attributes).

Expand Down

0 comments on commit a4511ac

Please sign in to comment.