blazegraph / tinkerpop3

Blazegraph Tinkerpop3 Implementation
GNU General Public License v2.0
59 stars 10 forks source link

Search should be a P-predicate (match.any(), match.exact(), etc.) #2

Open okram opened 8 years ago

okram commented 8 years ago

I noticed this in the documentation.

graph.search("hell*", Match.ANY).count()

If a P-predicate is created for Match.ANY (and the others) then, when the TraversalStrategy that folds has()-steps into BlazeGraphStep, it can do what it needs with the P-predicate and thus, the following would work:

g = graph.traversal()
g.V().has("key",matches.any("hell*")).count()

The reason that reg-ex (and stuff like geo) are NOT in TinkerPop is that various backends have different semantics for such predicates. Thus, we recommend that graph providers simply create respective P-predicates and GraphStep rules for handling the HasContainers.


https://github.com/apache/incubator-tinkerpop/blob/master/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java

https://github.com/apache/incubator-tinkerpop/blob/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java

https://github.com/apache/incubator-tinkerpop/blob/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java

beebs-systap commented 8 years ago

@mikepersonick