Database Reference
In-Depth Information
Pipe not _ wine = new ObjectFilterPipe( wine, true );
Pipe<Vertex,Vertex> pipeline =
new Pipeline<Vertex,Vertex>( outE, inE, not _ wine );
pipeline.setStarts( Arrays .asList( wine ) );
while ( pipeline.hasNext() ) {
wine _ list.add( pipeline.next() );
}
return wine _ list;
}
Tief im Inneren ist Gremlin eine Pipe -bauende Sprache. Das Durchgehen des
Graphen erfolgt immer noch auf dem Neo4j-Server, aber Gremlin vereinfacht
den Aufbau von Queries, die Neo4j versteht.
Pipeline vs. Vertex
Um eine Collection abzurufen, die nur eine bestimmte Vertex enthält, kön-
nen wir sie aus der Liste aller Knoten herausfiltern. Genau das haben wir
zum Beispiel bei g. V.filter{it.name=='reisling'} getan. Die V -Property ist
eine Liste aller Knoten, aus der wir eine Subliste abrufen. Doch wenn wir den
Knoten selbst wollen, müssen wir next aufrufen. Diese Methode ruft die ers-
te Vertex aus der Pipeline ab. Das ähnelt dem Unterschied zwischen einem
Array mit einem Element und dem Element selbst.
Eric sagt:
Cypher
Cypher ist eine weitere von Neo4j unterstützte Graphen-Abfragesprache. Sie ba-
siert auf Mustererkennung (pattern matching) und einer SQL-ähnlichen Syntax.
Die Klauseln fühlen sich vertraut an, was es einfacher macht, zu verstehen, was
vorgeht. Insbesondere die MATCH -Klausel ist sehr intuitiv und führt zu Ausdrücken,
die an ASCII-Art erinnern.
Zuerst habe ich Cyphers Langatmigkeit nicht gemocht, doch mit der Zeit haben sich
meine Augen an das Lesen der Grammatik gewöhnt und ich bin zum Fan geworden.
Sehen wir uns das Cypher-Äquivalent unserer „gleiche Weine“-Query an:
START ice _ wine=node(0)
MATCH (ice _ wine) -[:grape _ type]-> () <-[:grape _ type]- (similar)
RETURN similar
Wir beginnen damit, ice _ wine an den Knoten 0 zu binden. Die MATCH -Klausel
verwendet Identifier innerhalb runder Klammern für Knoten und „Pfeile“ wie
-[:grape _ type]-> für gerichtete Beziehungen. Ich mag dieses Konstrukt, da es ein-
fach ist, die Traversierung der Knoten zu visualisieren.
Doch es kann schnell anspruchsvoll werden. Hier ein etwas praxisgerechteres Bei-
spiel - jeder Teil so leistungsfähig und wortreich wie SQL.
 
Search WWH ::




Custom Search