mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-25 16:23:37 +03:00
unify header style
This commit is contained in:
parent
1924d58159
commit
5fb4c54268
4
.github/workflows/lint.yml
vendored
4
.github/workflows/lint.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: Node.js CI
|
name: CI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -15,4 +15,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ruby-version: '3.2'
|
ruby-version: '3.2'
|
||||||
- run: gem install mdl
|
- run: gem install mdl
|
||||||
- run: mdl . --ignore-front-matter -r MD011,MD023,MD027,MD028,MD037,MD038,MD039,MD047
|
- run: mdl . --ignore-front-matter -r MD003,MD011,MD023,MD027,MD028,MD035,MD037,MD038,MD039,MD047
|
||||||
|
@ -1116,8 +1116,7 @@ proc main() {
|
|||||||
} // end main()
|
} // end main()
|
||||||
```
|
```
|
||||||
|
|
||||||
Who is this tutorial for?
|
## Who is this tutorial for?
|
||||||
-------------------------
|
|
||||||
|
|
||||||
This tutorial is for people who want to learn the ropes of chapel without
|
This tutorial is for people who want to learn the ropes of chapel without
|
||||||
having to hear about what fiber mixture the ropes are, or how they were
|
having to hear about what fiber mixture the ropes are, or how they were
|
||||||
@ -1132,28 +1131,27 @@ to see if more topics have been added or more tutorials created.
|
|||||||
|
|
||||||
### What this tutorial is lacking:
|
### What this tutorial is lacking:
|
||||||
|
|
||||||
* Exposition of the [standard modules](https://chapel-lang.org/docs/latest/modules/standard.html)
|
* Exposition of the [standard modules](https://chapel-lang.org/docs/latest/modules/standard.html)
|
||||||
* Multiple Locales (distributed memory system)
|
* Multiple Locales (distributed memory system)
|
||||||
* Records
|
* Records
|
||||||
* Parallel iterators
|
* Parallel iterators
|
||||||
|
|
||||||
Your input, questions, and discoveries are important to the developers!
|
## Your input, questions, and discoveries are important to the developers!
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
The Chapel language is still in active development, so there are
|
The Chapel language is still in active development, so there are
|
||||||
occasional hiccups with performance and language features. The more information
|
occasional hiccups with performance and language features. The more information
|
||||||
you give the Chapel development team about issues you encounter or features you
|
you give the Chapel development team about issues you encounter or features you
|
||||||
would like to see, the better the language becomes.
|
would like to see, the better the language becomes.
|
||||||
There are several ways to interact with the developers:
|
There are several ways to interact with the developers:
|
||||||
+ [Gitter chat](https://gitter.im/chapel-lang/chapel)
|
|
||||||
+ [sourceforge email lists](https://sourceforge.net/p/chapel/mailman)
|
* [Gitter chat](https://gitter.im/chapel-lang/chapel)
|
||||||
|
* [sourceforge email lists](https://sourceforge.net/p/chapel/mailman)
|
||||||
|
|
||||||
If you're really interested in the development of the compiler or contributing
|
If you're really interested in the development of the compiler or contributing
|
||||||
to the project, [check out the master GitHub repository](https://github.com/chapel-lang/chapel).
|
to the project, [check out the master GitHub repository](https://github.com/chapel-lang/chapel).
|
||||||
It is under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).
|
It is under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).
|
||||||
|
|
||||||
Installing the Compiler
|
## Installing the Compiler
|
||||||
-----------------------
|
|
||||||
|
|
||||||
[The Official Chapel documentation details how to download and compile the Chapel compiler.](https://chapel-lang.org/docs/usingchapel/QUICKSTART.html)
|
[The Official Chapel documentation details how to download and compile the Chapel compiler.](https://chapel-lang.org/docs/usingchapel/QUICKSTART.html)
|
||||||
|
|
||||||
@ -1161,23 +1159,22 @@ Chapel can be built and installed on your average 'nix machine (and cygwin).
|
|||||||
[Download the latest release version](https://github.com/chapel-lang/chapel/releases/)
|
[Download the latest release version](https://github.com/chapel-lang/chapel/releases/)
|
||||||
and it's as easy as
|
and it's as easy as
|
||||||
|
|
||||||
1. `tar -xvf chapel-<VERSION>.tar.gz`
|
1. `tar -xvf chapel-<VERSION>.tar.gz`
|
||||||
2. `cd chapel-<VERSION>`
|
2. `cd chapel-<VERSION>`
|
||||||
3. `source util/setchplenv.bash # or .sh or .csh or .fish`
|
3. `source util/setchplenv.bash # or .sh or .csh or .fish`
|
||||||
4. `make`
|
4. `make`
|
||||||
5. `make check # optional`
|
5. `make check # optional`
|
||||||
|
|
||||||
You will need to `source util/setchplenv.EXT` from within the Chapel directory
|
You will need to `source util/setchplenv.EXT` from within the Chapel directory
|
||||||
(`$CHPL_HOME`) every time your terminal starts so it's suggested that you drop
|
(`$CHPL_HOME`) every time your terminal starts so it's suggested that you drop
|
||||||
that command in a script that will get executed on startup (like .bashrc).
|
that command in a script that will get executed on startup (like .bashrc).
|
||||||
|
|
||||||
Chapel is easily installed with Brew for macOS
|
Chapel is easily installed on macOS with Homebrew
|
||||||
|
|
||||||
1. `brew update`
|
1. `brew update`
|
||||||
2. `brew install chapel`
|
2. `brew install chapel`
|
||||||
|
|
||||||
Compiling Code
|
## Compiling Code
|
||||||
--------------
|
|
||||||
|
|
||||||
Builds like other compilers:
|
Builds like other compilers:
|
||||||
|
|
||||||
@ -1185,10 +1182,10 @@ Builds like other compilers:
|
|||||||
|
|
||||||
Notable arguments:
|
Notable arguments:
|
||||||
|
|
||||||
* `--fast`: enables a number of optimizations and disables array bounds
|
* `--fast`: enables a number of optimizations and disables array bounds
|
||||||
checks. Should only enable when application is stable.
|
checks. Should only enable when application is stable.
|
||||||
* `--set <Symbol Name>=<Value>`: set config param `<Symbol Name>` to `<Value>`
|
* `--set <Symbol Name>=<Value>`: set config param `<Symbol Name>` to `<Value>`
|
||||||
at compile-time.
|
at compile-time.
|
||||||
* `--main-module <Module Name>`: use the main() procedure found in the module
|
* `--main-module <Module Name>`: use the main() procedure found in the module
|
||||||
`<Module Name>` as the executable's main.
|
`<Module Name>` as the executable's main.
|
||||||
* `--module-dir <Directory>`: includes `<Directory>` in the module search path.
|
* `--module-dir <Directory>`: includes `<Directory>` in the module search path.
|
||||||
|
@ -14,7 +14,6 @@ En resumen, Chapel es un lenguaje de programación paralela, código abierto, de
|
|||||||
desarrolladp en Cray Inc. y está diseñado para ejecutarse en PC multi-nucleos,
|
desarrolladp en Cray Inc. y está diseñado para ejecutarse en PC multi-nucleos,
|
||||||
así como en supercomputadoras multi-kilocore.
|
así como en supercomputadoras multi-kilocore.
|
||||||
|
|
||||||
|
|
||||||
Puede encontrar más información y asistencia al final de este documento.
|
Puede encontrar más información y asistencia al final de este documento.
|
||||||
|
|
||||||
```chapel
|
```chapel
|
||||||
@ -1133,8 +1132,7 @@ proc main() {
|
|||||||
} // end main()
|
} // end main()
|
||||||
```
|
```
|
||||||
|
|
||||||
¿Para quién es este tutorial?
|
## ¿Para quién es este tutorial?
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Este tutorial es para personas que desean aprender las cuerdas de chapel sin tener
|
Este tutorial es para personas que desean aprender las cuerdas de chapel sin tener
|
||||||
que escuchar sobre qué mezcla de fibras son las cuerdas, o cómo fueron trenzadas,
|
que escuchar sobre qué mezcla de fibras son las cuerdas, o cómo fueron trenzadas,
|
||||||
@ -1148,13 +1146,12 @@ para ver si se han agregado más temas o se han creado más tutoriales.
|
|||||||
|
|
||||||
### Lo que le falta a este tutorial:
|
### Lo que le falta a este tutorial:
|
||||||
|
|
||||||
* Exposición de los [módulos estándar](https://chapel-lang.org/docs/latest/modules/standard.html)
|
* Exposición de los [módulos estándar](https://chapel-lang.org/docs/latest/modules/standard.html)
|
||||||
* Múltiples configuraciones regionales (sistema de memoria distribuida)
|
* Múltiples configuraciones regionales (sistema de memoria distribuida)
|
||||||
* Registros
|
* Registros
|
||||||
* Iteradores paralelos
|
* Iteradores paralelos
|
||||||
|
|
||||||
¡Sus comentarios, preguntas y descubrimientos son importantes para los desarrolladores!
|
## ¡Sus comentarios, preguntas y descubrimientos son importantes para los desarrolladores!
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
El lenguaje Chapel todavía está en desarrollo activo, por lo que
|
El lenguaje Chapel todavía está en desarrollo activo, por lo que
|
||||||
ocasionalmente hay problemas con el rendimiento y
|
ocasionalmente hay problemas con el rendimiento y
|
||||||
@ -1164,17 +1161,16 @@ Cuanta más información brinde al equipo de desarrollo de Chapel
|
|||||||
sobre los problemas que encuentre o las características que le gustaría ver,
|
sobre los problemas que encuentre o las características que le gustaría ver,
|
||||||
mejor será el lenguaje.
|
mejor será el lenguaje.
|
||||||
|
|
||||||
|
|
||||||
Hay varias formas de interactuar con los desarrolladores:
|
Hay varias formas de interactuar con los desarrolladores:
|
||||||
+ [Chat de Gitter](https://gitter.im/chapel-lang/chapel)
|
|
||||||
+ [lista de emails de Sourceforge](https://sourceforge.net/p/chapel/mailman)
|
* [Chat de Gitter](https://gitter.im/chapel-lang/chapel)
|
||||||
|
* [lista de emails de Sourceforge](https://sourceforge.net/p/chapel/mailman)
|
||||||
|
|
||||||
Si está realmente interesado en el desarrollo del compilador o en contribuir al proyecto,
|
Si está realmente interesado en el desarrollo del compilador o en contribuir al proyecto,
|
||||||
[consulte el repositorio maestro de GitHub](https://github.com/chapel-lang/chapel).
|
[consulte el repositorio maestro de GitHub](https://github.com/chapel-lang/chapel).
|
||||||
Está bajo el [La licencia Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
Está bajo el [La licencia Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
||||||
|
|
||||||
Instalar el compilador
|
## Instalar el compilador
|
||||||
-----------------------
|
|
||||||
|
|
||||||
[La documentación oficial de Chapel detalla cómo descargar y compilar el compilador de Chapel.](https://chapel-lang.org/docs/usingchapel/QUICKSTART.html)
|
[La documentación oficial de Chapel detalla cómo descargar y compilar el compilador de Chapel.](https://chapel-lang.org/docs/usingchapel/QUICKSTART.html)
|
||||||
|
|
||||||
@ -1182,11 +1178,11 @@ Chapel se puede construir e instalar en su máquina promedio 'nix (y cygwin).
|
|||||||
[Descargue la última versión de lanzamiento](https://github.com/chapel-lang/chapel/releases/)
|
[Descargue la última versión de lanzamiento](https://github.com/chapel-lang/chapel/releases/)
|
||||||
y es tan fácil como
|
y es tan fácil como
|
||||||
|
|
||||||
1. `tar -xvf chapel-<VERSION>.tar.gz`
|
1. `tar -xvf chapel-<VERSION>.tar.gz`
|
||||||
2. `cd chapel-<VERSION>`
|
2. `cd chapel-<VERSION>`
|
||||||
3. `source util/setchplenv.bash # or .sh or .csh or .fish`
|
3. `source util/setchplenv.bash # or .sh or .csh or .fish`
|
||||||
4. `make`
|
4. `make`
|
||||||
5. `make check # optional`
|
5. `make check # optional`
|
||||||
|
|
||||||
You will need to `source util/setchplenv.EXT` from within the Chapel directory
|
You will need to `source util/setchplenv.EXT` from within the Chapel directory
|
||||||
(`$CHPL_HOME`) every time your terminal starts so it's suggested that you drop
|
(`$CHPL_HOME`) every time your terminal starts so it's suggested that you drop
|
||||||
@ -1198,11 +1194,10 @@ en un script que se ejecutará al inicio (como .bashrc).
|
|||||||
|
|
||||||
Chapel se instala fácilmente con Brew para OS X
|
Chapel se instala fácilmente con Brew para OS X
|
||||||
|
|
||||||
1. `brew update`
|
1. `brew update`
|
||||||
2. `brew install chapel`
|
2. `brew install chapel`
|
||||||
|
|
||||||
Compilando Código
|
## Compilando Código
|
||||||
--------------
|
|
||||||
|
|
||||||
Construye como otros compiladores:
|
Construye como otros compiladores:
|
||||||
|
|
||||||
@ -1210,10 +1205,10 @@ Construye como otros compiladores:
|
|||||||
|
|
||||||
Argumentos notables:
|
Argumentos notables:
|
||||||
|
|
||||||
* `--fast`: habilita varias optimizaciones y deshabilita las comprobaciones
|
* `--fast`: habilita varias optimizaciones y deshabilita las comprobaciones
|
||||||
de los límites de la matriz Solo debe habilitarse cuando la aplicación es estable.
|
de los límites de la matriz Solo debe habilitarse cuando la aplicación es estable.
|
||||||
* `--set <Nombre del Symbolo>=<Valor>`: establece el param de configuracion
|
* `--set <Nombre del Symbolo>=<Valor>`: establece el param de configuracion
|
||||||
`<Nombre del Symbolo>` a `<Valor>`en tiempo de compilación.
|
`<Nombre del Symbolo>` a `<Valor>`en tiempo de compilación.
|
||||||
* `--main-module <Nombre del módulo>`: use el procedimiento main() que se encuentra en el módulo
|
* `--main-module <Nombre del módulo>`: use el procedimiento main() que se encuentra en el módulo
|
||||||
`<Nombre del módulo>` como principal del ejecutable.
|
`<Nombre del módulo>` como principal del ejecutable.
|
||||||
* `--module-dir <Directorio>`: incluye `<Directorio>` en la ruta de búsqueda del módulo.
|
* `--module-dir <Directorio>`: incluye `<Directorio>` en la ruta de búsqueda del módulo.
|
||||||
|
@ -6,14 +6,11 @@ contributors:
|
|||||||
|
|
||||||
lang: pt-br
|
lang: pt-br
|
||||||
---
|
---
|
||||||
|
|
||||||
O Cypher é a linguagem de consulta do Neo4j para manipular gráficos facilmente. Ela reutiliza a sintaxe do SQL e a mistura com o tipo de ascii-art para representar gráficos. Este tutorial pressupõe que você já conheça conceitos de gráficos como nós e relacionamentos.
|
O Cypher é a linguagem de consulta do Neo4j para manipular gráficos facilmente. Ela reutiliza a sintaxe do SQL e a mistura com o tipo de ascii-art para representar gráficos. Este tutorial pressupõe que você já conheça conceitos de gráficos como nós e relacionamentos.
|
||||||
|
|
||||||
[Leia mais aqui.](https://neo4j.com/developer/cypher-query-language/)
|
[Leia mais aqui.](https://neo4j.com/developer/cypher-query-language/)
|
||||||
|
|
||||||
|
## Nós
|
||||||
Nós
|
|
||||||
---
|
|
||||||
|
|
||||||
**Representa um registro em um gráfico.**
|
**Representa um registro em um gráfico.**
|
||||||
|
|
||||||
@ -34,21 +31,19 @@ Um nó pode ter algumas *propriedades*, aqui **name** e **age**. Começa com min
|
|||||||
|
|
||||||
Os tipos permitidos nas propriedades:
|
Os tipos permitidos nas propriedades:
|
||||||
|
|
||||||
- Numeric
|
- Numeric
|
||||||
- Boolean
|
- Boolean
|
||||||
- String
|
- String
|
||||||
- Lista de tipos primitivos anteriores
|
- Lista de tipos primitivos anteriores
|
||||||
|
|
||||||
*Aviso: não há propriedade datetime no Cypher! Você pode usar String com um padrão específico ou um Numeric a partir de uma data específica.*
|
*Aviso: não há propriedade datetime no Cypher! Você pode usar String com um padrão específico ou um Numeric a partir de uma data específica.*
|
||||||
|
|
||||||
`p.name`
|
`p.name`
|
||||||
Você pode acessar uma propriedade com o estilo de ponto.
|
Você pode acessar uma propriedade com o estilo de ponto.
|
||||||
|
|
||||||
|
## Relacionamentos (ou Arestas)
|
||||||
|
|
||||||
Relacionamentos (ou Arestas)
|
**Conecta dois nós.**
|
||||||
---
|
|
||||||
|
|
||||||
**Conecta dois nós**
|
|
||||||
|
|
||||||
`[:KNOWS]`
|
`[:KNOWS]`
|
||||||
É um *relacionamento* com o *label* **KNOWS**. É um *label* como um rótulo do nó. Começa com maiúsculas e usa UPPER_SNAKE_CASE.
|
É um *relacionamento* com o *label* **KNOWS**. É um *label* como um rótulo do nó. Começa com maiúsculas e usa UPPER_SNAKE_CASE.
|
||||||
@ -62,9 +57,7 @@ O mesmo *relacionamento*, com *propriedades* (como *nó*), aqui **since**.
|
|||||||
`[k:KNOWS*..4]`
|
`[k:KNOWS*..4]`
|
||||||
É uma informação estrutural para usar em um *path* (visto posteriormente). Aqui, **\*..4** diz, “Corresponda o padrão, com a relação **k** que é repetida de 1 a 4 vezes.
|
É uma informação estrutural para usar em um *path* (visto posteriormente). Aqui, **\*..4** diz, “Corresponda o padrão, com a relação **k** que é repetida de 1 a 4 vezes.
|
||||||
|
|
||||||
|
## Paths
|
||||||
Paths
|
|
||||||
---
|
|
||||||
|
|
||||||
**A maneira de misturar nós e relacionamentos.**
|
**A maneira de misturar nós e relacionamentos.**
|
||||||
|
|
||||||
@ -80,9 +73,9 @@ Você pode encadear vários relacionamentos. Este path descreve o amigo de um am
|
|||||||
`(a:Person)-[:MANAGES]->(b:Person)-[:MANAGES]->(c:Person)`
|
`(a:Person)-[:MANAGES]->(b:Person)-[:MANAGES]->(c:Person)`
|
||||||
Uma encadeamento também pode ser direcionada. Este path descreve que **a** é o chefe de **b** e o grande chefe de **c**.
|
Uma encadeamento também pode ser direcionada. Este path descreve que **a** é o chefe de **b** e o grande chefe de **c**.
|
||||||
|
|
||||||
Padrões frequentemente usados (do Neo4j doc) :
|
Padrões frequentemente usados (do Neo4j doc):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
// Amigo de um amigo
|
// Amigo de um amigo
|
||||||
(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
|
(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
|
||||||
|
|
||||||
@ -96,13 +89,11 @@ path = shortestPath( (user)-[:KNOWS*..5]-(other) )
|
|||||||
(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
|
(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Crie consultas
|
||||||
Crie consultas
|
|
||||||
---
|
|
||||||
|
|
||||||
Crie um novo nó
|
Crie um novo nó
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
CREATE (a:Person {name:"Théo Gauchoux"})
|
CREATE (a:Person {name:"Théo Gauchoux"})
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
@ -111,52 +102,51 @@ RETURN a
|
|||||||
|
|
||||||
Crie um novo relacionamento (com 2 novos nós)
|
Crie um novo relacionamento (com 2 novos nós)
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
CREATE (a:Person)-[k:KNOWS]-(b:Person)
|
CREATE (a:Person)-[k:KNOWS]-(b:Person)
|
||||||
RETURN a,k,b
|
RETURN a,k,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Consultas que casam
|
## Consultas que casam
|
||||||
---
|
|
||||||
|
|
||||||
Casam todos os nós
|
Casam todos os nós
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (n)
|
MATCH (n)
|
||||||
RETURN n
|
RETURN n
|
||||||
```
|
```
|
||||||
|
|
||||||
Casam nós por label
|
Casam nós por label
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a:Person)
|
MATCH (a:Person)
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
|
|
||||||
Casam nós por label e propriedade
|
Casam nós por label e propriedade
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a:Person {name:"Théo Gauchoux"})
|
MATCH (a:Person {name:"Théo Gauchoux"})
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
|
|
||||||
Casam nós de acordo com os relacionamentos (não direcionados)
|
Casam nós de acordo com os relacionamentos (não direcionados)
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a)-[:KNOWS]-(b)
|
MATCH (a)-[:KNOWS]-(b)
|
||||||
RETURN a,b
|
RETURN a,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Casam nós de acordo com os relacionamentos (direcionados)
|
Casam nós de acordo com os relacionamentos (direcionados)
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a)-[:MANAGES]->(b)
|
MATCH (a)-[:MANAGES]->(b)
|
||||||
RETURN a,b
|
RETURN a,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Casam nós com um cláusula `WHERE`
|
Casam nós com um cláusula `WHERE`
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
|
MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
|
||||||
WHERE s.since = 2015
|
WHERE s.since = 2015
|
||||||
RETURN p,state
|
RETURN p,state
|
||||||
@ -164,19 +154,17 @@ RETURN p,state
|
|||||||
|
|
||||||
Você pode usa a cláusula `MATCH WHERE` com a cláusula `CREATE`
|
Você pode usa a cláusula `MATCH WHERE` com a cláusula `CREATE`
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a), (b)
|
MATCH (a), (b)
|
||||||
WHERE a.name = "Jacquie" AND b.name = "Michel"
|
WHERE a.name = "Jacquie" AND b.name = "Michel"
|
||||||
CREATE (a)-[:KNOWS]-(b)
|
CREATE (a)-[:KNOWS]-(b)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Atualizar consultas
|
||||||
Atualizar consultas
|
|
||||||
---
|
|
||||||
|
|
||||||
Atualizar uma propriedade específica de um nó
|
Atualizar uma propriedade específica de um nó
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p.age = 23
|
SET p.age = 23
|
||||||
@ -184,7 +172,7 @@ SET p.age = 23
|
|||||||
|
|
||||||
Substituir todas as propriedades de um nó
|
Substituir todas as propriedades de um nó
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p = {name: "Michel", age: 23}
|
SET p = {name: "Michel", age: 23}
|
||||||
@ -192,7 +180,7 @@ SET p = {name: "Michel", age: 23}
|
|||||||
|
|
||||||
Adicionar nova propriedade a um nó
|
Adicionar nova propriedade a um nó
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p + = {studies: "IT Engineering"}
|
SET p + = {studies: "IT Engineering"}
|
||||||
@ -200,19 +188,17 @@ SET p + = {studies: "IT Engineering"}
|
|||||||
|
|
||||||
Adicione um label a um nó
|
Adicione um label a um nó
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p:Internship
|
SET p:Internship
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Excluir consultas
|
||||||
Excluir consultas
|
|
||||||
---
|
|
||||||
|
|
||||||
Excluir um nó específico (os relacionamentos vinculados devem ser excluídos antes)
|
Excluir um nó específico (os relacionamentos vinculados devem ser excluídos antes)
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)-[relationship]-()
|
MATCH (p:Person)-[relationship]-()
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
DELETE relationship, p
|
DELETE relationship, p
|
||||||
@ -220,7 +206,7 @@ DELETE relationship, p
|
|||||||
|
|
||||||
Remover uma propriedade em um nó específico
|
Remover uma propriedade em um nó específico
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
REMOVE p.age
|
REMOVE p.age
|
||||||
@ -230,7 +216,7 @@ REMOVE p.age
|
|||||||
|
|
||||||
Remover um label de um nó específico
|
Remover um label de um nó específico
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
DELETE p:Person
|
DELETE p:Person
|
||||||
@ -238,7 +224,7 @@ DELETE p:Person
|
|||||||
|
|
||||||
Excluir o banco de dados inteiro
|
Excluir o banco de dados inteiro
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (n)
|
MATCH (n)
|
||||||
OPTIONAL MATCH (n)-[r]-()
|
OPTIONAL MATCH (n)-[r]-()
|
||||||
DELETE n, r
|
DELETE n, r
|
||||||
@ -246,9 +232,7 @@ DELETE n, r
|
|||||||
|
|
||||||
*Sério, é o `rm -rf /` do Cypher !*
|
*Sério, é o `rm -rf /` do Cypher !*
|
||||||
|
|
||||||
|
## Outras cláusulas úteis
|
||||||
Outras cláusulas úteis
|
|
||||||
---
|
|
||||||
|
|
||||||
`PROFILE`
|
`PROFILE`
|
||||||
Antes de uma consulta, mostre o plano de execução dela.
|
Antes de uma consulta, mostre o plano de execução dela.
|
||||||
@ -259,9 +243,7 @@ Contar entidades (nós ou relacionamentos) que casam com **e**.
|
|||||||
`LIMIT x`
|
`LIMIT x`
|
||||||
Limite o resultado aos primeiros x resultados.
|
Limite o resultado aos primeiros x resultados.
|
||||||
|
|
||||||
|
## Dicas Especiais
|
||||||
Dicas Especiais
|
|
||||||
---
|
|
||||||
|
|
||||||
- Há apenas comentários de uma linha no Cypher, com barras duplas : // Comentários
|
- Há apenas comentários de uma linha no Cypher, com barras duplas : // Comentários
|
||||||
- Você pode executar um script Cypher armazenado em um arquivo **.cql** diretamente no Neo4j (é uma importação). No entanto, você não pode ter várias instruções neste arquivo (separadas por **;**).
|
- Você pode executar um script Cypher armazenado em um arquivo **.cql** diretamente no Neo4j (é uma importação). No entanto, você não pode ter várias instruções neste arquivo (separadas por **;**).
|
||||||
|
@ -13,11 +13,9 @@ Cypher - це мова запитів Neo4j для спрощення робот
|
|||||||
|
|
||||||
[Деталі тут](https://neo4j.com/developer/cypher-query-language/)
|
[Деталі тут](https://neo4j.com/developer/cypher-query-language/)
|
||||||
|
|
||||||
|
## Вершини
|
||||||
|
|
||||||
Вершини
|
#### Відображує запис у графі
|
||||||
---
|
|
||||||
|
|
||||||
**Відображує запис у графі.**
|
|
||||||
|
|
||||||
`()`
|
`()`
|
||||||
Таким чином у запиті позначається пуста *вершина*. Використовується зазвичай для того, щоб позначити, що вона є, проте це не так вже й важливо для запиту.
|
Таким чином у запиті позначається пуста *вершина*. Використовується зазвичай для того, щоб позначити, що вона є, проте це не так вже й важливо для запиту.
|
||||||
@ -36,21 +34,18 @@ Cypher - це мова запитів Neo4j для спрощення робот
|
|||||||
|
|
||||||
Наступні типи дозволяється використовувати у властивостях:
|
Наступні типи дозволяється використовувати у властивостях:
|
||||||
|
|
||||||
- Чиселиний
|
- Чиселиний
|
||||||
- Булевий
|
- Булевий
|
||||||
- Рядок
|
- Рядок
|
||||||
- Списки попередніх примітивних типів
|
- Списки попередніх примітивних типів
|
||||||
|
|
||||||
*Увага! В Cypher не існує типу, що відображає час. Замість нього можна використовувати рядок із визначеним шаблоном або чисельне відображення певної дати.*
|
*Увага! В Cypher не існує типу, що відображає час. Замість нього можна використовувати рядок із визначеним шаблоном або чисельне відображення певної дати.*
|
||||||
|
|
||||||
`p.name`
|
`p.name`
|
||||||
За допомогою крапки можна звернутись до властивості вершини.
|
За допомогою крапки можна звернутись до властивості вершини.
|
||||||
|
|
||||||
|
## Зв'язки (або ребра)
|
||||||
Зв'язки (або ребра)
|
#### Сполучають дві вершини
|
||||||
---
|
|
||||||
|
|
||||||
**Сполучають дві вершини**
|
|
||||||
|
|
||||||
`[:KNOWS]`
|
`[:KNOWS]`
|
||||||
Це *зв'язок* з *ярликом* **KNOWS**. Це такий же самий *ярлик* як і у вершини. Починається з великої літери та використовує ВЕРХНІЙ\_РЕГІСТР\_ІЗ\_ЗМІЇНОЮ\_НОТАЦІЄЮ.
|
Це *зв'язок* з *ярликом* **KNOWS**. Це такий же самий *ярлик* як і у вершини. Починається з великої літери та використовує ВЕРХНІЙ\_РЕГІСТР\_ІЗ\_ЗМІЇНОЮ\_НОТАЦІЄЮ.
|
||||||
@ -64,11 +59,8 @@ Cypher - це мова запитів Neo4j для спрощення робот
|
|||||||
`[k:KNOWS*..4]`
|
`[k:KNOWS*..4]`
|
||||||
Це структурна інформація, яку використовують *шляхи*, які розглянуті нижче. В данному випадку, **\*..4** говорить: "Сумістити шаблон із зв'язком **k**, що повторюватиметься від одного до чотирьох разів."
|
Це структурна інформація, яку використовують *шляхи*, які розглянуті нижче. В данному випадку, **\*..4** говорить: "Сумістити шаблон із зв'язком **k**, що повторюватиметься від одного до чотирьох разів."
|
||||||
|
|
||||||
|
## Шляхи
|
||||||
Шляхи
|
#### Спосіб поєднувати вершини та зв'язки.
|
||||||
---
|
|
||||||
|
|
||||||
**Спосіб поєднувати вершини та зв'язки.**
|
|
||||||
|
|
||||||
`(a:Person)-[:KNOWS]-(b:Person)`
|
`(a:Person)-[:KNOWS]-(b:Person)`
|
||||||
Шлях описує, що вершини **a** та **b** знають (knows) один одного.
|
Шлях описує, що вершини **a** та **b** знають (knows) один одного.
|
||||||
@ -84,7 +76,7 @@ Cypher - це мова запитів Neo4j для спрощення робот
|
|||||||
|
|
||||||
Шаблони, які часто використовуються (з документації Neo4j):
|
Шаблони, які часто використовуються (з документації Neo4j):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
// Друг-мого-друга
|
// Друг-мого-друга
|
||||||
(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
|
(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
|
||||||
|
|
||||||
@ -98,13 +90,11 @@ path = shortestPath( (user)-[:KNOWS*..5]-(other) )
|
|||||||
(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
|
(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Запити на створення
|
||||||
Запити на створення
|
|
||||||
---
|
|
||||||
|
|
||||||
Створити нову вершину:
|
Створити нову вершину:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
CREATE (a:Person {name:"Théo Gauchoux"})
|
CREATE (a:Person {name:"Théo Gauchoux"})
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
@ -113,52 +103,51 @@ RETURN a
|
|||||||
|
|
||||||
Створити новий зв'язок (із двома вершинами):
|
Створити новий зв'язок (із двома вершинами):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
CREATE (a:Person)-[k:KNOWS]-(b:Person)
|
CREATE (a:Person)-[k:KNOWS]-(b:Person)
|
||||||
RETURN a,k,b
|
RETURN a,k,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Запити на знаходження
|
## Запити на знаходження
|
||||||
---
|
|
||||||
|
|
||||||
Знайти всі вершини:
|
Знайти всі вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (n)
|
MATCH (n)
|
||||||
RETURN n
|
RETURN n
|
||||||
```
|
```
|
||||||
|
|
||||||
Знайти вершини за ярликом:
|
Знайти вершини за ярликом:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a:Person)
|
MATCH (a:Person)
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
|
|
||||||
Знайти вершини за ярликом та властивістю:
|
Знайти вершини за ярликом та властивістю:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a:Person {name:"Théo Gauchoux"})
|
MATCH (a:Person {name:"Théo Gauchoux"})
|
||||||
RETURN a
|
RETURN a
|
||||||
```
|
```
|
||||||
|
|
||||||
Знайти вершини відповідно до зв'язків (ненаправлених):
|
Знайти вершини відповідно до зв'язків (ненаправлених):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a)-[:KNOWS]-(b)
|
MATCH (a)-[:KNOWS]-(b)
|
||||||
RETURN a,b
|
RETURN a,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Знайти вершини відповідно до зв'язків (направлених):
|
Знайти вершини відповідно до зв'язків (направлених):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a)-[:MANAGES]->(b)
|
MATCH (a)-[:MANAGES]->(b)
|
||||||
RETURN a,b
|
RETURN a,b
|
||||||
```
|
```
|
||||||
|
|
||||||
Знайти вершини за допомогою `WHERE`:
|
Знайти вершини за допомогою `WHERE`:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
|
MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
|
||||||
WHERE s.since = 2015
|
WHERE s.since = 2015
|
||||||
RETURN p,state
|
RETURN p,state
|
||||||
@ -166,19 +155,17 @@ RETURN p,state
|
|||||||
|
|
||||||
Можна використовувати вираз `MATCH WHERE` разом із операцією `CREATE`:
|
Можна використовувати вираз `MATCH WHERE` разом із операцією `CREATE`:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (a), (b)
|
MATCH (a), (b)
|
||||||
WHERE a.name = "Jacquie" AND b.name = "Michel"
|
WHERE a.name = "Jacquie" AND b.name = "Michel"
|
||||||
CREATE (a)-[:KNOWS]-(b)
|
CREATE (a)-[:KNOWS]-(b)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Запити на оновлення
|
||||||
Запити на оновлення
|
|
||||||
---
|
|
||||||
|
|
||||||
Оновити окрему властивість вершини:
|
Оновити окрему властивість вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p.age = 23
|
SET p.age = 23
|
||||||
@ -186,7 +173,7 @@ SET p.age = 23
|
|||||||
|
|
||||||
Оновити всі властивості вершини:
|
Оновити всі властивості вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p = {name: "Michel", age: 23}
|
SET p = {name: "Michel", age: 23}
|
||||||
@ -194,7 +181,7 @@ SET p = {name: "Michel", age: 23}
|
|||||||
|
|
||||||
Додати нову властивіcть до вершини:
|
Додати нову властивіcть до вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p + = {studies: "IT Engineering"}
|
SET p + = {studies: "IT Engineering"}
|
||||||
@ -202,19 +189,17 @@ SET p + = {studies: "IT Engineering"}
|
|||||||
|
|
||||||
Повісити ярлик на вершину:
|
Повісити ярлик на вершину:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
SET p:Internship
|
SET p:Internship
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Запити на видалення
|
||||||
Запити на видалення
|
|
||||||
---
|
|
||||||
|
|
||||||
Видалити окрему вершину (пов'язані ребра повинні бути видалені перед цим):
|
Видалити окрему вершину (пов'язані ребра повинні бути видалені перед цим):
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)-[relationship]-()
|
MATCH (p:Person)-[relationship]-()
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
DELETE relationship, p
|
DELETE relationship, p
|
||||||
@ -222,7 +207,7 @@ DELETE relationship, p
|
|||||||
|
|
||||||
Видалити властивість певної вершини:
|
Видалити властивість певної вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
REMOVE p.age
|
REMOVE p.age
|
||||||
@ -232,7 +217,7 @@ REMOVE p.age
|
|||||||
|
|
||||||
Видалити ярлик певної вершини:
|
Видалити ярлик певної вершини:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (p:Person)
|
MATCH (p:Person)
|
||||||
WHERE p.name = "Théo Gauchoux"
|
WHERE p.name = "Théo Gauchoux"
|
||||||
DELETE p:Person
|
DELETE p:Person
|
||||||
@ -240,7 +225,7 @@ DELETE p:Person
|
|||||||
|
|
||||||
Видалити всю базу даних:
|
Видалити всю базу даних:
|
||||||
|
|
||||||
```
|
```cypher
|
||||||
MATCH (n)
|
MATCH (n)
|
||||||
OPTIONAL MATCH (n)-[r]-()
|
OPTIONAL MATCH (n)-[r]-()
|
||||||
DELETE n, r
|
DELETE n, r
|
||||||
@ -248,9 +233,7 @@ DELETE n, r
|
|||||||
|
|
||||||
*Так, це `rm -rf /` на мові Cypher !*
|
*Так, це `rm -rf /` на мові Cypher !*
|
||||||
|
|
||||||
|
## Інші корисні запити
|
||||||
Інші корисні запити
|
|
||||||
---
|
|
||||||
|
|
||||||
`PROFILE`
|
`PROFILE`
|
||||||
Перед виконанням, показати план виконання запитів.
|
Перед виконанням, показати план виконання запитів.
|
||||||
@ -261,11 +244,9 @@ DELETE n, r
|
|||||||
`LIMIT x`
|
`LIMIT x`
|
||||||
Обмежити результат до x перших результатів.
|
Обмежити результат до x перших результатів.
|
||||||
|
|
||||||
|
## Особливі підказки
|
||||||
|
|
||||||
Особливі підказки
|
- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : `// Коментар`
|
||||||
---
|
|
||||||
|
|
||||||
- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : // Коментар
|
|
||||||
- Можна виконати скрипт Cypher, збережений у файлі **.cql** прямо в Neo4j (прямо як імпорт). Проте, не можна мати мати кілька виразів в цьому файлі (розділених **;**).
|
- Можна виконати скрипт Cypher, збережений у файлі **.cql** прямо в Neo4j (прямо як імпорт). Проте, не можна мати мати кілька виразів в цьому файлі (розділених **;**).
|
||||||
- Використовуйте командний рядок Neo4j для написання запитів Cypher, це легко і швидко.
|
- Використовуйте командний рядок Neo4j для написання запитів Cypher, це легко і швидко.
|
||||||
- Cypher планує бути стандартною мовою запитів для всіх графових баз даних (більш відома як **OpenCypher**).
|
- Cypher планує бути стандартною мовою запитів для всіх графових баз даних (більш відома як **OpenCypher**).
|
||||||
|
Loading…
Reference in New Issue
Block a user