Neo4j posiada własny język zapytań o nazwie Cypher. Cypher używa podobnej składni do SQL (Structured Query Language).
Przykład
Oto przykład instrukcji Cypher:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Ta instrukcja Cypher zwraca węzeł „Osoba”, w którym właściwością nazwy jest „Homer Flinstone”.
Gdyby to był SQL wysyłający zapytanie do relacyjnej bazy danych, mogłoby to wyglądać mniej więcej tak:
SELECT * FROM Person WHERE name = "Homer Flinstone";
Pamiętaj jednak, że Neo4j nie przechowuje swoich danych w tabelach, tak jak w modelu relacyjnej bazy danych. Wszystko tkwi w węzłach i relacjach. Tak więc powyższe zapytanie Cypher dotyczy węzłów, ich etykiet i ich właściwości. Z drugiej strony przykład SQL polega na wysyłaniu zapytań do tabel, wierszy i kolumn.
SQL został zaprojektowany do użycia z relacyjnymi systemy zarządzania bazami danych (DBMS). Neo4j jest systemem DBMS NoSQL, w tym sensie, że nie korzysta z modelu relacyjnego i nie używa SQL.
Cypher został zaprojektowany specjalnie do pracy z modelem danych Neo4j, który dotyczy węzłów i ich wzajemnych relacji.
Składnia ASCII-Art
Cypher używa ASCII-Art do reprezentowania wzorców. Jest to przydatna rzecz do zapamiętania przy pierwszej nauce języka. Jeśli zapomnisz, jak coś napisać, po prostu wizualizuj, jak będzie wyglądał wykres, a to powinno pomóc.
(a)-[:KNOWS]->(b)
Najważniejsze rzeczy do zapamiętania:
- Węzły są reprezentowane przez nawiasy, które wyglądają jak koła. Tak:
(node)
- Relacje są reprezentowane przez strzałki. Tak:
->
- Informacje o relacji można wstawić w nawiasy kwadratowe. Tak:
[:WIE]
Definiowanie danych
Oto kilka punktów, o których należy pamiętać podczas pracy z Cypher:
- Węzły zwykle mają etykiety. Przykładami mogą być „Osoba”, „Użytkownik”, „Aktor”, „Pracownik”, „Klient”.
- Węzły zwykle mają właściwości. Właściwości dostarczają dodatkowych informacji o węźle. Przykładami mogą być „Imię”, „Wiek”, „Urodzony” itp.
- Relacje również mogą mieć właściwości.
- Relacje zwykle mają typ (jest to zasadniczo jak etykieta węzła). Przykładami mogą być „WIE”, „LUBIĘ”, „PRACUJE”, „ZAKUPIONE” itp.
Patrząc ponownie na powyższy przykład:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Widzimy, że:
- Węzeł jest otoczony nawiasami
()
. Osoba
jest etykietą węzła.nazwa
jest właściwością węzła.