Neo4j má svůj vlastní dotazovací jazyk s názvem Cypher. Cypher používá podobnou syntaxi jako SQL (Structured Query Language).
Příklad
Zde je příklad příkazu Cypher:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Tento příkaz Cypher vrací uzel "Person", kde vlastnost name je "Homer Flinstone".
Pokud by to byl dotaz SQL na relační databázi, mohlo by to vypadat spíš takto:
SELECT * FROM Person WHERE name = "Homer Flinstone";
Pamatujte však, že Neo4j neukládá svá data do tabulek jako model relační databáze. Vše je v uzlech a vztazích. Výše uvedený dotaz Cypher tedy dotazuje uzly, jejich štítky a jejich vlastnosti. Příklad SQL na druhé straně je dotazování na tabulky, řádky a sloupce.
SQL byl navržen pro použití s relačním systémy pro správu databází (DBMS). Neo4j je NoSQL DBMS v tom, že nepoužívá relační model a nepoužívá SQL.
Cypher byl navržen speciálně pro práci s datovým modelem Neo4j, který je celý o uzlech a jejich vzájemných vztazích.
Syntaxe ASCII-Art
Cypher používá ASCII-Art k reprezentaci vzorů. To je užitečné mít na paměti, když se poprvé učíte jazyk. Pokud zapomenete, jak něco napsat, představte si, jak bude graf vypadat, a mělo by to pomoci.
(a)-[:KNOWS]->(b)
Hlavní věci k zapamatování:
- Uzly jsou reprezentovány závorkami, které vypadají jako kruhy. Takto:
(node)
- Vztahy jsou znázorněny šipkami. Takto:
->
- Informace o vztahu lze vložit do hranatých závorek. Asi takto:
[:KNOWS]
Definování dat
Zde je několik dalších bodů, které je třeba pamatovat při práci s Cypher:
- Uzly mají obvykle štítky. Příklady mohou zahrnovat „Osoba“, „Uživatel“, „Herec“, „Zaměstnanec“, „Zákazník“.
- Uzly obvykle mají vlastnosti. Vlastnosti poskytují další informace o uzlu. Příklady mohou zahrnovat „Jméno“, „Věk“, „Narození“ atd.
- Vztahy mohou mít také vlastnosti.
- Vztahy mají obvykle svůj typ (v podstatě je to jako označení uzlu). Příklady mohou zahrnovat „VÍ, „LIKE“, „PRÁCE_PRO“, „ZAKOUPENO“ atd.
Takže se znovu podíváme na výše uvedený příklad:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Můžeme to vidět:
- Uzel je ohraničen závorkami
()
. Person
je štítek uzlu.name
je vlastnost uzlu.