Database Reference
In-Depth Information
Um alle Personen und die Weine, die sie mögen, auszugeben, transformieren
wir die Ausgabe der Personen (die als Knoten mit Freunden gekennzeichnet
sind) in eine Liste mit zwei Elementen: dem Namen der Person und einer
Liste der Weine, die sie mag.
g.V.both('friends').dedup.transform{
[ it.name, it.out('likes').name.toList() ]
}
==> [Alice, [Prancing Wolf Ice Wine 2007]]
==> [Patty, []]
==> [Tom, [Prancing Wolf Ice Wine 2007, Prancing Wolf Kabinett 2002]]
Ja, an Gremlin muss man sich definitiv erst gewöhnen, insbesondere wenn
man vorher noch nie in Groovy programmiert hat. Sobald Sie sich aber dar-
an gewöhnt haben, verfügen Sie über eine ausdrucksstarke und mächtige
Möglichkeit, Neo4j-Queries auszuführen.
Domänenspeziische Schritte
Die Traversierung von Graphen ist nett, aber Unternehmen und Organisa-
tionen neigen dazu, sich über domänenspezifische Sprachen miteinander zu
unterhalten. Wir würden normalerweise zum Beispiel nicht fragen: „Welcher
Knoten der eingehenden Kante von grape_type teilt sich die ausgehende Kan-
te dieses Wein-Knotens?“, sondern einfach: „Aus welcher Rebsorte wurde die-
ser Wein gekeltert?“
Gremlin ist bereits eine domänenspezifische Sprache zur Abfrage von Graph-
Datenbanken, doch wie wäre es, wenn wir die Sprache noch spezifischer ma-
chen würden? Gremlin erlaubt uns das durch die Entwicklung neuer Schrit-
te, die für die im Graph gespeicherten Daten eine semantische Bedeutung
haben.
Wie wollen mit einem neuen Schritt namens varietal (Rebsorte) beginnen,
der uns die Antwort auf die obige Frage liefert. Wird varietal für einen Kno-
ten aufgerufen, sieht sie sich die ausgehenden Kanten vom Typ grape _ type
an und geht die verbundenen Knoten durch.
Wir werden hier ein wenig Groovy-lastig, weshalb wir hier zuerst den Code
abbilden und ihn dann Schritt für Schritt erläutern.
neo4j/varietal.groovy
Gremlin.defineStep( 'varietal' ,
[Vertex, Pipe ],
{ _ ().out( 'grape _ type' ).dedup}
)
 
Search WWH ::




Custom Search