<commit_before>[[cypher-introduction]]
= What is Cypher? =

== Introduction ==

_Cypher_ is a declarative graph query language that allows for expressive and efficient querying and updating of the graph store.
Cypher is a relatively simple  but still very powerful language.
Very complicated database queries can easily be expressed through Cypher.
This allows you to focus on your domain instead of getting lost in database access.

Cypher is designed to be a humane query language, suitable for both developers and (importantly, we think) operations professionals.
Our guiding goal is to make the simple things easy, and the complex things possible.
Its constructs are based on English prose and neat iconography which helps to make queries more self-explanatory.
We have tried to optimize the language for reading and not for writing.

Being a declarative language, Cypher focuses on the clarity of expressing _what_ to retrieve from a graph, not on _how_ to retrieve it.
This is in contrast to imperative languages like Java, scripting languages like http://gremlin.tinkerpop.com[Gremlin], and http://neo4j.rubyforge.org/[the JRuby Neo4j bindings].
This approach makes query optimization an implementation detail instead of burdening the user with it and requiring her to update all traversals just because the physical database structure has changed (new indexes etc.).

Cypher is inspired by a number of different approaches and builds upon established practices for expressive querying.
Most of the keywords like +WHERE+ and +ORDER BY+ are inspired by http://en.wikipedia.org/wiki/SQL[SQL].
Pattern matching borrows expression approaches from http://en.wikipedia.org/wiki/SPARQL[SPARQL].
Some of the collection semantics have been borrowed from languages such as Haskell and Python.


[[cypher-structure]]
== Structure ==

Cypher borrows it structure from SQL -- queries are built up using various clauses.<commit_msg>Fix broken link to Neo4j.rb.<commit_after>[[cypher-introduction]]
= What is Cypher? =

== Introduction ==

_Cypher_ is a declarative graph query language that allows for expressive and efficient querying and updating of the graph store.
Cypher is a relatively simple  but still very powerful language.
Very complicated database queries can easily be expressed through Cypher.
This allows you to focus on your domain instead of getting lost in database access.

Cypher is designed to be a humane query language, suitable for both developers and (importantly, we think) operations professionals.
Our guiding goal is to make the simple things easy, and the complex things possible.
Its constructs are based on English prose and neat iconography which helps to make queries more self-explanatory.
We have tried to optimize the language for reading and not for writing.

Being a declarative language, Cypher focuses on the clarity of expressing _what_ to retrieve from a graph, not on _how_ to retrieve it.
This is in contrast to imperative languages like Java, scripting languages like http://gremlin.tinkerpop.com[Gremlin], and https://github.com/neo4jrb/neo4j/[the JRuby Neo4j bindings].
This approach makes query optimization an implementation detail instead of burdening the user with it and requiring her to update all traversals just because the physical database structure has changed (new indexes etc.).

Cypher is inspired by a number of different approaches and builds upon established practices for expressive querying.
Most of the keywords like +WHERE+ and +ORDER BY+ are inspired by http://en.wikipedia.org/wiki/SQL[SQL].
Pattern matching borrows expression approaches from http://en.wikipedia.org/wiki/SPARQL[SPARQL].
Some of the collection semantics have been borrowed from languages such as Haskell and Python.


[[cypher-structure]]
== Structure ==

Cypher borrows it structure from SQL -- queries are built up using various clauses.
{'fraction_non_alphanumeric': 0.04830793076724361, 'fraction_numerical': 0.0015499870834409714, 'mean_word_length': 4.920489296636085, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3524284', 'n_tokens_mistral': 959, 'n_tokens_neox': 889, 'n_words': 533}