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


##########
content/en/docs/language/migrate-from-neo4j.md:
##########
@@ -0,0 +1,60 @@
+---
+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 the
+[Cypher compatibility matrix](/docs/language/cypher-compatibility/) for the
+feature-level differences 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`) |
+| 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 indexes/constraints through 
the [schema REST APIs](/docs/clients/restful-api/schema/); Cypher carries no 
DDL |
+| Implicit schema (add properties freely) | **Strong schema**: define 
VertexLabel / EdgeLabel / PropertyKey before writing data |
+| Parameterized queries `$param` | Not supported — escape/validate values 
client-side and interpolate literals |
+| `CALL dbms.*` / `CALL algo.*` procedures | Equivalent capabilities live in 
the [traverser](/docs/clients/restful-api/traverser/), 
[task](/docs/clients/restful-api/task/), and other REST APIs |
+| Driver: Neo4j Bolt driver | 
[hugegraph-client](/docs/clients/hugegraph-client/) (`CypherManager`) or any 
HTTP client |
+| Transaction boundaries inside a Cypher statement | One statement per 
request; bulk writes use the [Loader](/docs/guides/toolchain/) or bulkport |
+
+### Suggested migration path
+
+1. **Inventory your queries**: classify the Cypher in your application against
+   the [compatibility matrix](/docs/language/cypher-compatibility/) into
+   "works as-is / rewrite as Gremlin / switch to a REST API".
+2. **Create the schema first**: define VertexLabel / EdgeLabel / PropertyKey
+   and indexes through the schema API — HugeGraph requires the schema to
+   exist before data is written.
+3. **Import data**: REST for small datasets; the
+   [HugeGraph 
Loader](https://github.com/apache/hugegraph-toolchain/tree/master/hugegraph-loader)
+   for bulk loads.
+4. **Switch incrementally**: keep the queries Cypher can express, and rewrite
+   translator-unsupported constructs as Gremlin — the
+   [equivalents table](/docs/language/hugegraph-cypher/#gremlin-equivalents)
+   shows the mapping.
+
+### Known limitations at a glance
+
+- Cypher statements support neither parameter binding, multi-statement
+  scripts, nor `CALL` procedures.
+- The translator's last release is 2019-11 (1.0.4); its own TCK self-report is
+  879 pass / 79 fail (~91.7%) — uncovered syntax fails at translation time.
+- Anything unsupported can always be expressed as an equivalent Gremlin

Review Comment:
   ⚠️ This says every unsupported feature has an equivalent Gremlin traversal, 
but the table above directs schema DDL and `CALL` procedures to REST APIs. 
Please limit this fallback to unsupported query constructs that have a Gremlin 
equivalent, and make the same distinction in the Chinese page.



##########
content/en/docs/language/cypher-compatibility.md:
##########
@@ -0,0 +1,82 @@
+---
+title: "Cypher Compatibility"
+linkTitle: "Cypher Compatibility"
+weight: 3
+---
+
+### Scope
+
+This page records the cases verified for the current Cypher development 
change. It does not claim full
+openCypher or Neo4j compatibility, or compatibility across every released 
HugeGraph version. The tested
+working tree is based on 
[`hugegraph/hugegraph@27a7c9b`](https://github.com/hugegraph/hugegraph/commit/27a7c9b42274d6d4f95eabed6d2051d393ae0eaf)
+and uses Java `17.0.20.1`, TinkerPop `3.8.1`, 
`org.opencypher.gremlin:translation:1.0.4`, and RocksDB.
+
+The endpoint is `/graphspaces/{graphspace}/graphs/{graph}/cypher`. General 
usage is covered in the
+[HugeGraph Cypher guide](/docs/language/hugegraph-cypher/).
+
+### Request forms and parameters
+
+| Request | Verified contract | Test method |
+|---|---|---|
+| `GET ?cypher=<URL-encoded statement>` | Existing query-string form | 
`testGet` |
+| `POST application/json` with raw Cypher text | Legacy raw-body form remains 
available | `testPost` |
+| `POST text/plain` with raw Cypher text | Plain-text form | 
`testPlainTextPost` |
+| `POST application/json` with a JSON object | Query and bindings are sent 
separately | `testParameters` |
+
+```json
+{
+  "cypher": "MATCH (n:cypher_person) WHERE n.name = $name RETURN n.name",
+  "parameters": {"name": "marko"}
+}
+```
+
+For the JSON-object form, `cypher` must be a nonblank string and `parameters`, 
if present, must be an object.
+Omitting `parameters` means an empty map. A referenced but missing binding is 
an execution error; an explicit
+null value is valid. Tests cover string, number, and boolean values, quotes 
and newlines, the binding names
+`id` and `label`, and the default limit of 16 parameters. Values remain 
bindings and do not alter query text.
+
+Check both the HTTP status and the response body's `status.code`: an execution 
failure can retain HTTP 200
+while returning `status.code` 400 and null result data.
+
+### Verified behavior
+
+The API fixture uses a strong schema, with a `SECONDARY` index on `city` and a 
`RANGE` index on `age`.
+Acceptance results are limited to these test cases:
+
+| Area | Tested cases | Test methods |
+|---|---|---|
+| Reads | Label scans; equality and range predicates; boolean combinations; 
directed one- and two-hop patterns; empty results | `testGet`, 
`testExactReadsAndPredicates`, `testRelationQuery` |
+| Results | Aliases, scalar and node values, nested values, relationship ids, 
path shape, null and missing properties | `testReturnNodeIdAsPrimitiveValue`, 
`testReturnNodeDoesNotLeakInternalIdTypes`, 
`testReturnNestedIdDoesNotLeakInternalIdTypes`, 
`testReturnRelationIdDoesNotLeakInternalIdTypes`, `testReturnPathShape`, 
`testNullAndMissingProperty` |
+| Aggregation and pagination | `DISTINCT`, `count`/`sum`/`min`/`max`/`avg`, 
`ORDER BY`, `SKIP`, and `LIMIT` | `testDuplicatesDistinctAndPagination`, 
`testAggregates` |
+| Writes | Vertex and edge `CREATE`, property `SET`, edge and vertex `DELETE`; 
state checked through native REST reads | `testCreate`, 
`testCreateSetAndDeleteWithNativeReadback` |
+| Failed write | A rejected two-vertex `CREATE` left no residue during 32 
subsequent query and native-read checks | 
`testFailedWriteDoesNotLeakIntoLaterRequests` |
+| Errors and routing | Invalid syntax and request shape, binding keys, schema 
values, authentication, and graph routing | `testInvalidRequests`, 
`testRejectInvalidQuery`, `testRejectInvalidBindingShapeAndKeys`, 
`testAuthenticationAndGraphRouting`, `testSpecifiedGraphRouting` |
+
+`CypherApiTest` passed 20/20, `CypherClientTest` 7/7, and 
`CypherOpProcessorTest` 4/4, with no skips.
+Related Gremlin tests passed 10 cases with one inapplicable `testClearAndInit` 
skip for a non-shared backend;
+Login tests passed 3/3. EditorConfig formatting and the repository-root clean 
compile passed.
+The code change is in [draft PR 
#238](https://github.com/hugegraph/hugegraph/pull/238). The compatibility

Review Comment:
   🧹 The linked PR #238 is currently open and not a draft (`gh -R 
hugegraph/hugegraph pr view 238`). Please remove “draft” or describe it as the 
tested code change, and update the Chinese counterpart.



-- 
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