TZT - Laboratorium 15 Zapytania w języku Cypher, program Gephi

Zadanie 0 – uruchomienie bazy i wyczyszczenie jej, zapoznanie się z nią Uruchamiamy bazę Neo4J i usuwamy z niej wszystko poleceniem: MATCH (n) DETACH DELETE n;

Zadanie 1 – utworzenie bazy polskich filmów Proszę w pustej bazie wykonać polecenia z pliku polishSmall.cypher (cat plik.cypher | cypher-shell). Jest to mała baza 13 polskich filmów, 80 aktorów, 25 producentów. Powinna się ona jeszcze dać wyświetlić w przeglądarce w Neo4J browser:

Proszę sobie przejrzeć, to co się utworzyło i nadać aktorom, reżyserom i producentom inne kolory – łatwiej czytać graf. Zadanie 2 – różne zapytania Dla bazy utworzonej w zadaniu 1 proszę wykonać poniższe polecenia, można sobie wybrać niektóre z nich, nie są trudne. Uporządkowałem je według różnych klauzul, mniej więcej.

Klauzula MATCH i RETURN - https://neo4j.com/docs/developer-manual/current/cypher/clauses/match/ czyli pobieranie danych: • tytuły wszystkich filmów • filmy, których reżyserem był , wynik powinien zawierać 5 filmów, film „Kiler” nie powinien występować dwa razy • typy relacji (funkcja type() ), które łączą Juliusza Machulskiego z filmem Kiler; korzystając z aliasu proszę zwrócić wyniki w kolumnie `Typy relacji`: • wszystkie osoby grające w filmie „Vinci”, wzorzec powinien zawierać typ relacji (GRAL_W) • wszystkie osoby, które reżyserowały albo produkowały film „Vinci”, trzeba określi dwa alternatywne typy relacji • wszystkie role jakie odgrywali „” i „Marek Konrad”; będzie potrzebne WHERE i operator IN • reżyser i tytuł filmu, w którym grał „Tomasz Kot” - troszkę dłuższy wzorzec • wszyscy aktorzy, którzy znają aktorów występujących w filmach reżyserowanych przez Marka Koterskiego, chodzi mi tutaj o wykorzystanie zmiennej długości ścieżki: https://neo4j.com/docs/developer-manual/current/cypher/clauses/match/#varlength-rels • MATCH ({nazwa:"Marek Koterski"})-[*4]-(n:AKTOR) RETURN n; • wszystko o filmie „Miś” (dane o samym filmie, aktorach, reżyserach i producentach; wszystko w jednej kolumnie – ścieżka zerowej długości) • najkrótsza ścieżka między Jerzym Stuhrem a Janem Machulskim – funkcja shortestPath(), zob https://neo4j.com/docs/developer-manual/current/cypher/clauses/match/#query-shortest-path, następnie wszystkie najkrótsze ścieżki, funkcja allShortestPaths() • informacje o węźle z id równym np. 3883 (u was będą inne wartości), użycie klauzuli WHERE i funkcji id()

Klauzula RETURN - https://neo4j.com/docs/developer-manual/current/cypher/clauses/return/ • Lista filmów z informacją czy zostały wyprodukowane po 1990 roku: "Film Kiler wyprodukowany po 1990 roku: true" "Film Seksmisja wyprodukowany po 1990 roku: false" "Film Vinci wyprodukowany po 1990 roku: true" "Film wyprodukowany po 1990 roku: false" …

Klauzula SET - https://neo4j.com/docs/developer-manual/current/cypher/clauses/set/ • dodać do węzła Cezarego Pazury właściwość: dataUr: "1962-06-13" • dodać do węzła Cezarego Pazury jednocześnie informacje: wzrost=185 i miejsceUr="Tomaszów Mazowiecki" • dodać do filmów reżyserowanych przez Tomasza Bagińskiego etykietę ANIMACJA

Klauzula REMOVE - https://neo4j.com/docs/developer-manual/current/cypher/clauses/remove/ • usunąć z węzła Tomasza Bagińskiego etykietę REZYSER, właściwość zdjeceURL i jednocześnie dodać etykietę osoba i właściwość dataUr="1976-01-10"

Klauzule ODRER BY, SKIP, LIMIT - https://neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/ • lista tytułów wszystkich filmów posortowana malejąco według średniej oceny filmu, tylko pierwsze 5 wyników • tak samo jak wyżej, tylko proszę wyświetlić drugą piątkę Klauzula FOREACH - https://neo4j.com/docs/developer-manual/current/cypher/clauses/foreach/ • dodanie do wszystkich węzłów osobowych (aktorzy, reżyserzy i producenci) połączonych z Juliuszem Machulskim etykiety OSOBA, do pozostałych grafów, odłączonych nie dodajemy; tutaj nie trzeba koniecznie wykorzystać FOREACH, ale można • mamy ścieżkę o długości 4 między dwoma filmami, pierwszym z nich jest „Dzień świra”, trzeba dodać do wszystkich relacji leżących na tej ścieżce właściwość dluzszyFilm=true, pod warunkiem, że film z drugiego końca ścieżki ma długość większą niż 105 min. Poniższe zapytanie zwróci wynik czyli te ścieżki, które spęłniły powyższe zapytanie: MATCH (n)-[{dluzszyFilm:true}]-() RETURN n;

Zadanie 3 – większy graf, zapytanie, którego wynik trudniej przewidzieć :) - dla chętnych Można sobie wyczyścić bazę z filmów polskich (DETACH DELETE...) i utworzyć większą bazę pobraną z portalu Filmweb: grafLab15.cypher (676 węzłów, 714 relacji). Może być ciężko to zwizualizować, wymaga sporo pamięci. Całość graficznie wygląda tak: grafLab15.png. Można sobie spróbować znaleźć najkrótszą ścieżkę między dwoma filmami: • Cast Away - poza światem • Wichry namiętności i wyświetlić wszystkie osoby leżące na tej ścieżce.