Gremlin step兼容情況
使用限制
iGraph在SDK接口的使用規(guī)則上與TinkerPop的差異如下:
目前僅支持API方式構(gòu)建query,不支持明文
構(gòu)建traversal時需要以內(nèi)置方法g開頭,并指明圖名,形如
g("graph_name")
,等同于tinkerPop中的Graph.traversal()
不支持游走中的插入和刪除
擴(kuò)展結(jié)果集數(shù)據(jù)類型,詳見查詢結(jié)果獲取。
對TinkerPop Gremlin的Step接口支持情況
下表中 ? 代表支持,? 代表不支持。
iGraph Gremlin語法及算子介紹
step | 開源 | iGraph | |
GraphTraversalSource | g("graph_name") | ? | ? |
getStrategies() | ? | ? | |
getGraph() | ? | ? | |
getBytecode() | ? | ? | |
with(String key, Object value)等2個接口 | ? | ? | |
withComputer() | ? | ? | |
withSideEffect(String key, A initialValue)等4個接口 | ? | ? | |
clone() | ? | ? | |
withStrategies(TraversalStrategy... traversalStrategies)等 | ? | ? | |
withStrategies(final StrategyBase... strategies) | ? | ? | |
withoutStrategies(Class<? extends TraversalStrategy>... traversalStrategyClasses) | ? | ? | |
withComputer(final Computer computer)等3個接口 | ? | ? | |
withSideEffect(final String key, final A initialValue)等4個接口 | ? | ? | |
withSack(final A initialValue)等8個接口 | ? | ? | |
withSack(final Supplier supplier, final Splitter sackSpliter, final Operator sackMerger) | ? | ? | |
withBulk( boolean useBulk) | ? | ? | |
withPath() | ? | ? | |
addV(String label) | ? | ? | |
addV(final Traversal<?, String> vertexLabelTraversal) | ? | ? | |
addV() | ? | ? | |
addE(final String label) | ? | ? | |
addE(final Traversal<?, String> edgeLabelTraversal) | ? | ? | |
inject(T... starts) | ? | ? | |
V(Object... vertexIds) | ? | ? | |
V(final String... keys) | ? | ? | |
V(@NonNull List<KeyList> keyLists) | ? | ? | |
V(@NonNull KeyList keyList) | ? | ? | |
E(Object... edgesIds) | ? | ? | |
E(final String... keys) | ? | ? | |
E(@NonNull List<KeyList> keyLists) | ? | ? | |
E(@NonNull KeyList keyList) | ? | ? | |
noSupportedStep(final String stepName, final Object... parameters) | ? | ? | |
Traversal | asAdmin() | ? | ? |
tryNext() | ? | ? | |
next(final int amount) | ? | ? | |
List<E> toList() | ? | ? | |
toSet() | ? | ? | |
toBulkSet() | ? | ? | |
toStream() | ? | ? | |
promise(final Function<Traversal<S, E>, T> traversalFunction) | ? | ? | |
fill(final C collection) | ? | ? | |
none() | ? | ? | |
Traversal<S, TraversalMetrics> profile() | ? | ? | |
TraversalExplanation explain() | ? | ? | |
forEachRemaining(final Class<E2> endType, final Consumer<E2> consumer) | ? | ? | |
close() | ? | ? | |
Map Step | map(final Function<Traverser<E>, E2> function) | ? | ? |
map(final Traversal<?, E2> mapTraversal) | ? | ? | |
flatMap(final Function<Traverser<E>, Iterator<E2>> function) | ? | ? | |
flatMap(final Traversal<?, E2> flatMapTraversal) | ? | ? | |
id() | ? | ? | |
label() | ? | ? | |
identity() | ? | ? | |
constant(final E2 e) | ? | ? | |
V(final Object... vertexIdsOrElements) | ? | ? | |
to(final Direction direction, final String... edgeLabels) | ? | ? | |
out(final String... edgeLabels) | ? | ? | |
in(final String... edgeLabels) | ? | ? | |
both(final String... edgeLabels) | ? | ? | |
toE(final Direction direction, final String... edgeLabels) | ? | ? | |
outE(final String... edgeLabels) | ? | ? | |
inE(final String... edgeLabels) | ? | ? | |
bothE(final String... edgeLabels) | ? | ? | |
toV(final Direction direction) | ? | ? | |
inV() | ? | ? | |
outV() | ? | ? | |
bothV() | ? | ? | |
otherV() | ? | ? | |
order() | ? | ? | |
order(final Scope scope) | ? | ? | |
properties(final . String... propertyKeys) | ? | ? | |
values(final String... propertyKeys) | ? | ? | |
propertyMap(final String... propertyKeys) | ? | ? | |
elementMap(final String... propertyKeys) | ? | ? | |
valueMap(final String... propertyKeys) | ? | ? | |
valueMap(final boolean includeTokens, final String... propertyKeys) | ? | ? | |
key() | ? | ? | |
value() | ? | ? | |
path() | ? | ? | |
match(final Traversal<?, ?>... matchTraversals) | ? | ? | |
sack() | ? | ? | |
loops() | ? | ? | |
loops(final String loopName) | ? | ? | |
project(final String projectKey, final String... otherProjectKeys) | ? | ? | |
select(final Pop pop, final String selectKey1, final String selectKey2, String... otherSelectKeys) | ? | ? | |
select(final String selectKey1, final String selectKey2, String... otherSelectKeys) | ? | ? | |
select(final Pop pop, final String selectKey) | ? | ? | |
select(final String selectKey) | ? | ? | |
select(final Pop pop, final Traversal<S, E2> keyTraversal) | ? | ? | |
select(final Traversal<S, E2> keyTraversal) | ? | ? | |
select(final Column column) | ? | ? | |
unfold() | ? | ? | |
fold() | ? | ? | |
fold(final E2 seed, final BiFunction<E2, E, E2> foldFunction) | ? | ? | |
count() | ? | ? | |
count(final Scope scope) | ? | ? | |
sum() | ? | ? | |
sum(final Scope scope) | ? | ? | |
max() | ? | ? | |
max(final Scope scope) | ? | ? | |
min(); | ? | ? | |
min(final Scope scope) | ? | ||
mean(); | ? | ? | |
mean(final Scope scope) | ? | ? | |
group() | ? | ? | |
groupCount() | ? | ? | |
tree() | ? | ? | |
addV(final String vertexLabel)等3個接口 | ? | ? | |
addE(final String edgeLabel)等2個接口 | ? | ? | |
to(final String toStepLabel) | ? | ? | |
from(final String fromStepLabel) | ? | ? | |
to(final Traversal<?, Vertex> toVertex) | ? | ? | |
from(final Traversal<?, Vertex> fromVertex); | ? | ? | |
to(final Vertex toVertex) | ? | ? | |
from(final Vertex fromVertex); | ? | ? | |
math(final String expression) | ? | ? | |
Filter Step | filter(final Predicate<Traverser<E>> predicate) | ? | ? |
filter(final Traversal<?, ?> filterTraversal) | ? | ? | |
or(final Traversal<?, ?>... orTraversals) | ? | ? | |
and(final Traversal<?, ?>... andTraversals) | ? | ? | |
inject(final E... injections) | ? | ? | |
dedup(final Scope scope, final String... dedupLabels) | ? | ? | |
dedup(final String... dedupLabels) | ? | ? | |
where(final String startKey, final P<String> predicate | ? | ? | |
where(final P<String> predicate) | ? | ? | |
where(final Traversal<?, ?> whereTraversal) | ? | ? | |
has(final String propertyKey, final P<?> predicate) | ? | ? | |
has(final T accessor, final P<?> predicate) | ? | ? | |
has(final String propertyKey, final Object value) | ? | ? | |
has(final T accessor, final Object value) | ? | ? | |
has(final String label, final String propertyKey, final P<?> predicate) | ? | ? | |
has(final String label, final String propertyKey, final Object value) | ? | ? | |
has(final T accessor, final Traversal<?, ?> propertyTraversal) | ? | ? | |
has(final String propertyKey, final Traversal<?, ?> propertyTraversal) | ? | ? | |
has(final String propertyKey) | ? | ? | |
hasNot(final String propertyKey) | ? | ? | |
hasLabel(final String label, final String... otherLabels) | ? | ? | |
hasLabel(final P<String> predicate) | ? | ? | |
hasId(final Object id, final Object... otherIds) | ? | ? | |
hasId(final P predicate) | ? | ? | |
hasKey(final String label, final String... otherLabels) | ? | ? | |
hasKey(final P<String> predicate) | ? | ? | |
hasValue(final Object value, final Object... otherValues) | ? | ? | |
hasValue(final P<Object> predicate) | ? | ? | |
is(final P<E> predicate) | ? | ? | |
is(final Object value) | ? | ? | |
not(final Traversal<?, ?> notTraversal) | ? | ? | |
coin(final double probability) | ? | ? | |
range(final long low, final long high) | ? | ? | |
range(final Scope scope, final long low, final long high) | ? | ? | |
limit(final long limit) | ? | ? | |
limit(final Scope scope, final long limit) | ? | ? | |
tail() | ? | ? | |
tail(final long limit) | ? | ? | |
tail(final Scope scope) | ? | ? | |
tail(final Scope scope, final long limit) | ? | ? | |
skip(final long skip) | ? | ? | |
skip(final Scope scope, final long skip) | ? | ? | |
timeLimit(final long timeLimit) | ? | ? | |
simplePath() | ? | ? | |
cyclicPath() | ? | ? | |
sample(final int amountToSample) | ? | ? | |
sample(final Scope scope, final int amountToSample) | ? | ? | |
sample(final Sample sampleOption, final int amountToSample) | ? | ? | |
sample(final Sample sampleOption, final Sample sampleOption2, final int amountToSample) | ? | ? | |
drop() | ? | ? | |
distinct() | ? | ? | |
Side-Effect Steps | alias(String sideEffectKey) | ? | ? |
sideEffect(final Consumer<Traverser<E>> consumer) | ? | ? | |
sideEffect(final Traversal<?, ?> sideEffectTraversal) | ? | ? | |
cap(final String sideEffectKey, final String... sideEffectKeys) | ? | ? | |
subgraph(final String sideEffectKey) | ? | ? | |
aggregate(final String sideEffectKey) | ? | ? | |
aggregate(final Scope scope, final String sideEffectKey) | ? | ? | |
group(final String sideEffectKey) | ? | ? | |
groupCount(final String sideEffectKey) | ? | ? | |
tree(final String sideEffectKey) | ? | ? | |
sack(final BiFunction<V, U, V> sackOperator) | ? | ? | |
store(final String sideEffectKey) | ? | ? | |
profile(final String sideEffectKey) | ? | ? | |
profile() | ? | ? | |
property(final VertexProperty.Cardinality cardinality, final Object key, final Object value, final Object... keyValues) | ? | ? | |
property(final Object key, final Object value, final Object... keyValues) | ? | ? | |
branch(final Traversal<?, M> branchTraversal); | ? | ? | |
branch(final Function<Traverser<E>, M> function) | ? | ? | |
choose(final Traversal<?, M> choiceTraversal) | ? | ? | |
choose(final Traversal<?, ?> traversalPredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice); | ? | ? | |
choose(final Traversal<?, ?> traversalPredicate, final Traversal<?, E2> trueChoice) | ? | ? | |
choose(final Function<E, M> choiceFunction) | ? | ? | |
choose(final Predicate<E> choosePredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice) | ? | ? | |
choose(final Predicate<E> choosePredicate, final Traversal<?, E2> trueChoice) | ? | ? | |
optional(final Traversal<?, E2> optionalTraversal) | ? | ? | |
union(final Traversal<?, E2>... unionTraversals) | ? | ? | |
coalesce(final Traversal<?, E2>... coalesceTraversals) | ? | ? | |
repeat(final Traversal<?, E> repeatTraversal) | ? | ? | |
repeat(final String loopName, final Traversal<?, E> repeatTraversal) | ? | ? | |
emit(final Traversal<?, ?> emitTraversal) | ? | ? | |
emit(final Predicate<Traverser<E>> emitPredicate) | ? | ? | |
emit() | ? | ? | |
until(final Traversal<?, ?> untilTraversal) | ? | ? | |
until(final Predicate<Traverser<E>> untilPredicate) | ? | ? | |
times(final int maxLoops) | ? | ? | |
local(final Traversal<?, E2> localTraversal) | ? | ? | |
Vertex Program Steps | pageRank() | ? | ? |
pageRank(final double alpha) | ? | ? | |
peerPressure() | ? | ? | |
connectedComponent() | ? | ? | |
shortestPath() | ? | ? | |
program(final VertexProgram<?> vertexProgram) | ? | ? | |
Utility Steps | as(final String stepLabel, final String... stepLabels) | ? | ? |
barrier() | ? | ? | |
barrier(final int maxBarrierSize) | ? | ? | |
index() | ? | ? | |
barrier(final Consumer<TraverserSet<Object>> barrierConsumer) | ? | ? | |
barrier(final Barrier barrierOption) | ? | ? | |
with(final String key) | ? | ? | |
with(final String key, final Object value) | ? | ? | |
by() | ? | ? | |
by(final Traversal<?, ?> traversal) | ? | ? | |
by(final T token) | ? | ? | |
by(final String key) | ? | ? | |
by(final Function<V, Object> function) | ? | ? | |
by(final Traversal<?, ?> traversal, final Comparator<V> comparator) | ? | ? | |
by(final Comparator<E> comparator) | ? | ? | |
by(final Order order) | ? | ? | |
by(final String key, final Comparator<V> comparator) | ? | ? | |
by(final Function<U, Object> function, final Comparator comparator) | ? | ? | |
by(final String table, final String field) | ? | ? | |
by(final Traversal traversal, final Order order) | ? | ? | |
by(final T accessor, final Order order) | ? | ? | |
by(final String key, final Order order) | ? | ? | |
by(final Column column, final Order order) | ? | ? | |
option(final M pickToken, final Traversal<?, E2> traversalOption) | ? | ? | |
option(final Traversal<?, E2> traversalOption) | ? | ? | |
option(final int pick, final Traversal optionTraversal) | ? | ? | |
option(final String pick, final Traversal optionTraversal) | ? | ? | |
option(final Pick pick, final Traversal optionTraversal) | ? | ? | |
bulk() | ? | ? | |
withBulk() | ? | ? | |
withSack() | ? | ? | |
needFold() | ? | ? | |
fields(final String... fieldNames) | ? | ? | |
IO Steps | read() | ? | ? |
write() | ? | ? | |
iterate() | ? | ? |