1. Wprowadzenie do baz grafowych na przykładzie Neo4j/ONgDB
W analizie danych bazy grafowe stają się istotne wtedy, gdy kluczowe są zależności między obiektami. Sekcja wyjaśnia znaczenie Neo4j/ONgDB, omawia architekturę platformy oraz obejmuje instalację i konfigurację tych rozwiązań bazodanowych.
- znaczenie baz grafowych w analizie danych,
- architektura platformy,
- omówienie Neo4j/ONgDB jako popularnych rozwiązań baz grafowych,
- instalacja i konfiguracja Neo4j/ONgDB.
2. Podstawy języka zapytań CYPHER
CYPHER od strony praktycznej zaczyna się od zrozumienia budowy zapytań i sposobu poruszania się po relacjach. Uczestnicy tworzą węzły i połączenia, pobierają dane, stosują selekcję i filtrowanie, importują dane oraz wykonują traversowanie grafu.
- struktura zapytań CYPHER,
- tworzenie węzłów i relacji w bazie grafowej,
- proste zapytania CYPHER do pobierania danych,
- selekcja i filtrowanie,
- import danych,
- przechodzenie przez graf.
3. Teoria grafów
Teoria grafów wyznacza aparat pojęciowy potrzebny do opisu danych jako węzłów, krawędzi i relacji. Sekcja porządkuje podstawową terminologię, rozróżnia grafy skierowane, nieskierowane, ważone i etykietowane oraz wskazuje ich zastosowania w różnych dziedzinach.
- podstawowe pojęcia i terminologia grafów,
- rodzaje grafów: skierowane, nieskierowane, ważone, etykietowane,
- zastosowanie grafów w różnych dziedzinach.
4. Podstawowe algorytmy grafowej analizy danych – aspekty teoretyczne
Teoretyczne podstawy analizy grafowej porządkują najważniejsze klasy algorytmów wykorzystywanych później w praktyce. Omawiane są BFS, DFS, Dijkstra, Bellman-Ford, Kruskal, Prim, silnie spójne składowe, PageRank oraz inne dobrane algorytmy grafowe.
- grafy: BFS (Breadth-First Search) i DFS (Depth-First Search),
- najkrótsza ścieżka: Dijkstra i Bellmana-Forda,
- minimalne drzewo rozpinające: Kruskal i Prim,
- wyszukiwanie w głąb (DFS) i silnie spójne składowe,
- algorytm PageRank,
- inne algorytmy grafowe w zależności od potrzeb i zainteresowań uczestników.
5. Podstawy języka zapytań CYPHER – teoria i praktyka w Neo4j/ONgDB
Bardziej złożone zapytania CYPHER wymagają łączenia warunków, filtrów, sortowania i ograniczeń w spójną logikę pobierania danych. Uczestnicy tworzą zaawansowane konstrukcje w Neo4j/ONgDB, w tym zapytania służące do wyszukiwania najkrótszej ścieżki.
- zaawansowane zapytania CYPHER,
- filtry, warunki, sortowanie i ograniczenia w zapytaniach CYPHER,
- tworzenie skomplikowanych zapytań CYPHER, takich jak wyszukiwanie najkrótszej ścieżki.
6. Praktyczne zastosowanie algorytmów grafowych dostępnych w bibliotekach APOC i GDSL oraz interpretacja informacji wynikowej
APOC i GDSL rozszerzają możliwości Neo4j/ONgDB o procedury oraz gotowe algorytmy przydatne w pracy analitycznej. Sekcja koncentruje się na ich praktycznym użyciu oraz na poprawnej interpretacji informacji wynikowych generowanych przez algorytmy grafowe.
- wykorzystanie bibliotek APOC i GDSL w Neo4j/ONgDB,
- praktyczne zastosowanie algorytmów grafowych dostępnych w bibliotekach,
- interpretacja informacji wynikowych z algorytmów grafowych.
7. Praktyczne wykorzystanie informacji wynikowych algorytmów grafowych w procesach analizy danych
Wyniki algorytmów grafowych nabierają wartości dopiero wtedy, gdy zostaną powiązane z modelem danych i celem analizy. Uczestnicy pracują nad modelowaniem danych w Neo4j/ONgDB oraz nad wykorzystaniem miar i struktur wyznaczonych przez algorytmy.
- modelowanie danych w Neo4j/ONgDB,
- wykorzystanie informacji wynikowych algorytmów grafowych w analizie danych.
8. Zaawansowane techniki analizy grafowej
Poza podstawowymi algorytmami analiza grafowa obejmuje techniki ujawniające wpływ, strukturę i lokalne wzorce. W tej części omawiane są wzorce podgrafów, miary centralności, wykrywanie społeczności oraz użycie algorytmów grafowych w rekomendacjach.
- algorytmy wyszukiwania wzorców w grafach (np. wzorzec podgrafu),
- wyznaczanie centralności w grafach (np. centralność węzłów, centralność pośrednictwa),
- algorytmy wykrywania społeczności w sieciach społecznościowych,
- wykorzystanie algorytmów grafowych do rekomendacji.
9. Analiza podobieństwa grafów
Gdy celem jest porównanie struktur, analiza podobieństwa grafów pozwala wychwycić wspólne cechy i istotne różnice. Omawiane są metody mierzenia podobieństwa, identyfikowanie zbliżonych wzorców oraz wykorzystanie takich wyników w analizie danych.
- mierzenie podobieństwa między grafami,
- porównywanie struktury grafów i identyfikowanie podobnych wzorców,
- zastosowanie analizy podobieństwa grafów w analizie danych.
10. Przykłady praktycznych zastosowań baz grafowych
Na przykładach widać, w jakich obszarach model grafowy najlepiej odwzorowuje dane powiązane. Sekcja obejmuje analizę relacji w sieciach społecznościowych, modelowanie dróg i tras w transporcie oraz zależności wykorzystywane w systemach rekomendacyjnych.
- analiza sieci społecznościowych i relacji między użytkownikami,
- modelowanie dróg i tras w systemach transportowych,
- analiza zależności i powiązań w systemach rekomendacyjnych.
11. Wprowadzenie do języka zapytań GraphQL w kontekście baz grafowych
GraphQL zostaje osadzony w kontekście baz grafowych, ze wskazaniem różnic względem CYPHER. Uczestnicy tworzą zapytania GraphQL do pobierania danych z grafu i porównują oba języki pod kątem składni, sposobu pracy oraz typowych zastosowań.
- porównanie CYPHER i GraphQL,
- tworzenie zapytań GraphQL do pobierania danych z bazy grafowej.
12. Case study: Analiza danych w konkretnej dziedzinie z wykorzystaniem Neo4j/ONgDB
Studium przypadku porządkuje wcześniej omawiane elementy w jeden proces analityczny, od modelu danych po interpretację wyników. Na konkretnym przykładzie pokazuje, jak Neo4j/ONgDB wspiera analizę relacji, wzorców i zależności w wybranej dziedzinie.
13. Integracja z językami programowania
Java i JavaScript służą tu jako praktyczny kontekst integracji aplikacji z Neo4j/ONgDB. Uczestnicy pracują z bazą z poziomu kodu, ucząc się wykonywania zapytań oraz obsługi danych grafowych bezpośrednio w warstwie programistycznej projektu.
- integracja z projektem w języku Java i JavaScript,
- praca z bazą z poziomu języka programowania.