n24q02m commented on code in PR #499:
URL: https://github.com/apache/hugegraph-doc/pull/499#discussion_r4309814728


##########
content/en/docs/language/hugegraph-cypher.md:
##########
@@ -0,0 +1,198 @@
+---
+title: "HugeGraph Cypher"
+linkTitle: "Cypher Query Language"
+weight: 2
+---
+
+### Overview
+
+HugeGraph supports [Cypher](https://opencypher.org/), the declarative graph 
query language originally created by Neo4j and standardized as
+[openCypher](https://github.com/opencypher/openCypher). While Gremlin is an 
imperative traversal language, Cypher lets you describe the graph pattern you 
want
+(`MATCH`, `WHERE`, `RETURN`) and lets the engine decide how to execute it.
+
+HugeGraph executes Cypher by translating the statement to Gremlin through the 
[cypher-for-gremlin](https://github.com/opencypher/cypher-for-gremlin) 
transpiler,
+then running the resulting traversal on the TinkerPop stack. This means Cypher 
support in HugeGraph covers the openCypher 9 surface that the transpiler
+implements — see [Known limitations](#known-limitations) below.
+
+### When to use Cypher vs Gremlin
+
+| Use Cypher when | Use Gremlin when |
+|---|---|
+| You are migrating from Neo4j or already know Cypher | You need the full 
HugeGraph feature surface |
+| You want declarative pattern matching (`MATCH (a)-[:KNOWS]->(b)`) | You need 
fine-grained traversal control, custom steps, or lambdas |
+| Your queries are read-mostly patterns and projections | You need graph 
algorithms, OLAP, or features Cypher does not expose |
+
+For anything Cypher cannot express, the equivalent Gremlin query always works 
— examples below show both.
+
+### Calling the Cypher API
+
+Cypher statements are submitted to the HugeGraph Server through the REST 
endpoint:
+
+```http
+GET  /graphspaces/{graphspace}/graphs/{graph}/cypher?cypher={statement}
+POST /graphspaces/{graphspace}/graphs/{graph}/cypher
+```
+
+On 1.7.0 and earlier, the endpoint always requires an `Authorization` header 
(`Basic` or `Bearer`), even when server authentication is disabled —

Review Comment:
   Thanks, you are right that 1.0.0 does not fit. I changed the wording to 
"1.2.0 to 1.7.0" in all four places you listed (EN and CN 
`hugegraph-cypher.md`, EN and CN `clients/restful-api/cypher.md`) in 2f0b5ba.



##########
content/en/docs/language/migrate-from-neo4j.md:
##########
@@ -0,0 +1,111 @@
+---
+title: "Migrating from Neo4j"
+linkTitle: "Migrating from Neo4j"
+weight: 4
+---
+
+### Who this page is for
+
+Neo4j users evaluating HugeGraph. HugeGraph's Cypher coverage is defined by
+the [`cypher-for-gremlin`](https://github.com/opencypher/cypher-for-gremlin)
+translator and is not 1:1 with Neo4j — see
+[Known limitations](/docs/language/hugegraph-cypher/#known-limitations) for 
what
+released HugeGraph versions do, and the
+[Cypher compatibility notes](/docs/language/cypher-compatibility/) for the
+development-tree verification record and
+[HugeGraph Cypher](/docs/language/hugegraph-cypher/) for usage.
+
+### What carries over directly
+
+| Neo4j concept | HugeGraph equivalent |
+|---|---|
+| Property graph model (nodes / relationships / properties) | Same — vertex 
labels / edge labels / properties |
+| Core Cypher: `MATCH`/`WHERE`/`RETURN`/`CREATE`/`SET`/`DELETE` | Works as-is 
(REST `/cypher` endpoint or Java client `CypherManager`), subject to the schema 
and index rules below |
+| Simple aggregations (`count`/`sum`/`min`/`max`/`avg`) | Works as-is |
+| Traversal-heavy queries | Gremlin traversals or the [traverser REST 
APIs](/docs/clients/restful-api/traverser/) (k-out, shortest path, 
personalrank, ...) |
+
+### Habits you need to change
+
+| In Neo4j | In HugeGraph |
+|---|---|
+| `CREATE INDEX` / `CREATE CONSTRAINT` | Create property indexes through the 
[IndexLabel REST API](/docs/clients/restful-api/indexlabel/); uniqueness 
constraints map to `UNIQUE` IndexLabels (which reject duplicates with a 
conflict error). Node keys map to non-nullable keys plus a composite `UNIQUE` 
index. Property existence constraints map to non-nullable keys on 
[VertexLabels](/docs/clients/restful-api/vertexlabel/) or 
[EdgeLabels](/docs/clients/restful-api/edgelabel/). Note that `primary_keys` 
defines vertex identity rather than a constraint—a duplicate `CREATE` 
overwrites instead of failing |

Review Comment:
   Thanks. The node key row now says that on a `PRIMARY_KEY` label a `UNIQUE` 
index cannot include all of the label's primary keys, and points to 
`CUSTOMIZE_STRING` keyed on the Neo4j node id with a `UNIQUE` index on the 
business key when duplicate rejection is needed. Mirrored in the CN row, in 
2f0b5ba.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to