Graphentechnologien

Table of Contents


Graphentechnologien

Andreas Kuczera

Ein Beispielgraph

Beispielgraph

Erläuterungen

  1. Der Beispielgraph zeigt oben einen Knoten (engl.Nodes) vom Typ Person mit der Eigenschaft Name. Diese hat den Wert "Karl der Große".
  2. Links unten ist ein weiter Knoten vom Typ Person mit dem Namen "Einhard"
  3. Rechts unten ist ein Knoten vom Typ Buch und dem Titel "Vita Karoli Magni".
  4. Die Kanten (engl. Edges) geben an, dass Karl der Große Einhart kannte, Einhard ca. 828-830 das Buch "Vita Karoli Magni" schrieb und Karl der Große in dem Buch vorkommt.

Die Arbeitsdatenbank:

https://neo4j.adwmainz.net/browser/ Login: digme Passwort: |Rpmx18YvM6Zn-

Die Befehle in cypher

  1. CREATE (); (Erstellt einen Knoten)
  2. CREATE () RETURN *; (Erstellt einen Knoten und liefert die Aktion zurück)
  3. CREATE (n) RETURN *; (Man muss bei Erstellung einen Namen angeben, damit anschließend etwas zurückgeliefert werden kann)
  4. CREATE (n:Person) RETURN *; (Erstellt einen Knoten mit einem Label und liefert das erstellte als Ergebnis zurück)
  5. CREATE (n:Person {name:'Andreas'}) RETURN *; (Erstellt einen Knoten mit Label und einer Eigenschaft)
  6. MERGE (n:Person {name:'Andreas'}) RETURN *; (Erstellt einen Knoten mit Label und einer Eigenschaft, falls es ihn noch nicht gibt)
  7. MATCH (n:Person {name:'Andreas'}) SET n.Geburtsort = 'Giessen' RETURN *; (Ergänzt einen Personenknoten um die Eigenschaft Geburtsort)

Verknüpfungen und Auswertung

MATCH (n1:Person {name:'Andreas'})
MATCH (n2:Person {name:'Melanie'})
MERGE (n1)-[:KENNT]->(n2)
RETURN *; (Ergänzt eine Verküpfung zum rechten Nachbarn)

MATCH (n:Person)
RETURN n.Geburtsort, count(*) as count, collect(n.Nachname) as Nachname
ORDER BY count DESC;
(Ranking der Geburtsorte)

Import der CSV-Daten von Google

Link zum Google-Spreadsheet:
https://drive.google.com/open?id=1q1n2TqH4blCm0LU3GFisCFLU91f9hm7TROk4eh0auyw

LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/1q1n2TqH4blCm0LU3GFisCFLU91f9hm7TROk4eh0auyw/export?format=csv&id=1q1n2TqH4blCm0LU3GFisCFLU91f9hm7TROk4eh0auyw&gid=0"
AS line FIELDTERMINATOR ','
CREATE (p:Person {pid:line.Nummer, Nachname:line.Nachname, Vorname:line.Vorname, Geburtsort:line.Geburtsort})
RETURN *;

ORDER BY Geburtsort

MATCH (n:Person)
RETURN n.Geburtsort, count(*) as count, collect(n.Nachname) as Nachname
ORDER BY count DESC;

Wer kennt wen ergänzen

LOAD CSV WITH HEADERS FROM "https://docs.google.com/spreadsheets/d/1q1n2TqH4blCm0LU3GFisCFLU91f9hm7TROk4eh0auyw/export?format=csv&id=1q1n2TqH4blCm0LU3GFisCFLU91f9hm7TROk4eh0auyw&gid=0"
AS line FIELDTERMINATOR ','
MATCH (p1:Person {pid:line.Nummer}), (p2:Person {pid:line.kennt})
CREATE (p1)-[:KENNT]->(p2) CREATE (p1)-[:KENNT]->(p3)
RETURN *;


Literatur

WS 2018/19 – Summer School Digitale Methodik CC BY-NC-SA 4.0