Database Reference
In-Depth Information
}
}
return
wine
_
list;
}
Anstelle der obigen Verschachtelung und Iteration entwickelte das Pipes-Pro-
jekt eine Möglichkeit, ein- und ausgehende Knoten zu deklarieren. Sie bau-
en eine Folge ein- und ausgehender Pipes, Filter und Request-Werte aus der
Pipeline auf. Dann rufen Sie iterativ die
hasNext
-Methode der Pipeline auf,
die den nächsten passenden Knoten zurückliefert. Mit anderen Worten: Die
Pipeline geht den Baum für Sie durch. Bis die Pipeline angefordert wird, de-
klarieren Sie nur, wie der Durchlauf erfolgen soll.
Jim sagt:
jQuery und Gremlin
Nutzern der beliebten JavaScript-Bibliothek jQuery wird diese Collection-orientierte
Traversierung vertraut vorkommen. Betrachten Sie das folgende HTML-Fragment:
<ul
id=
"navigation"
>
<li>
<a
name=
"section1"
>
section 1
</a>
</li>
<li>
<a
name=
"section2"
>
section 2
</a>
</li>
</ul>
Nehmen wir nun an, wir wollen den Text aller Tags mit dem Namen
section1
finden,
die Child-Elemente von Listenelementen (
li
) unterhalb des Navigationselements
sind (
id=navigation
). Eine mögliche Lösung ist jQuery-Code wie dieser:
$('[id=navigation]').children('li').children('[name=section1]').text()
Betrachten Sie nun eine Gremlin-Query, die nach einem ähnlichen Datensatz sucht,
wobei wir annehmen, dass jeder Parent-Knoten eine Kante besitzt, die auf jedes
Child-Element verweist. Ganz schön ähnlich, nicht wahr?
g.V.filter{it.id=='navigation'}.out.filter{it.tag=='li'}.
out.filter{it.name=='section1'}.text
Um das zu verdeutlichen, hier eine weitere Implementierung der
same
_
variety
-Methode, die Pipes anstelle von Schleifen nutzt:
public static void
same
_
variety( Vertex wine ) {
List
<Vertex> wine
_
list =
new ArrayList
<Vertex>();
Pipe
inE
=
new
InPipe(
"grape
_
type"
);
=
new
OutPipe(
"grape
_
type"
);
Pipe
outE