Database Reference
In-Depth Information
Zuerst teilen wir der Gremlin-Engine mit, dass wir einen neuen Schritt na-
mens varietal einfügen. Die zweite Zeile weist Gremlin an, die Vertex -und
Pipe -Klassen einzubinden. Die letzte Zeile sorgt für den magischen Moment.
Tatsächlich erzeugt sie die Closure, die den Code enthält, die dieser Schritt
ausführen soll. Der Unterstrich und die Klammern repräsentieren das ak-
tuelle Pipeline-Objekt. Von diesem Objekt aus gehen wir alle Nachbarknoten
durch, die über einen grape _ type -Knoten miteinander verbunden sind, d. h.
die Rebsorten-Knoten. Wir schließen die Sache mit dedup ab, um mögliche
Duplikate zu entfernen.
Der Aufruf unseres neuen Schrittes erfolgt wie bei jedem anderen Schritt
auch. Zum Beispiel liefert die folgende Zeile den Namen der Rebsorte des
Eisweins zurück:
g.V.filter{it.name=='Prancing Wolf Ice Wine 2007'}.varietal.name
==> riesling
Probieren wir etwas anderes. Diesmal wollen wir einen Schritt entwickeln, der
eine häufig gestellte Frage beantwortet: Welchen Wein mögen die Freunde am
liebsten?
neo4j/friendsuggest.groovy
Gremlin.defineStep( 'friendsuggest' ,
[Vertex, Pipe ],
{
_ ().sideEffect{start = it}.both( 'friends' ).
except([start]).out( 'likes' ).dedup
}
)
Genau wie beim letzten Mal übergeben wir Gremlin den Namen des neu-
en Schritts ( friendsuggest ) und binden es an Vertex und Pipe . Diesmal fil-
tert unser Code die aktuelle Person heraus. Dazu legen wir die aktuelle Ver-
tex/Pipe mit Hilfe der Funktion sideEffect{start = it} in einer Variablen
(start) ab. Dann rufen wir alle friends -Knoten ab, wobei wir die aktuelle Per-
son ausschließen (Alice soll nicht in der Liste Ihrer eigenen Freunde stehen).
Nun brauen wir uns etwas mit Pipes zusammen! Wir können den neuen
Schritt aufrufen, wie jeden anderen auch.
g.V.filter{it.name=='Patty'}.friendsuggest.name
==> Prancing Wolf Ice Wine 2007
==> Prancing Wolf Kabinett 2002
 
Search WWH ::




Custom Search