Stephen Mallette created TINKERPOP-2325:
-------------------------------------------
Summary: Generate traversals that will better yield index lookups
with SPARQL
Key: TINKERPOP-2325
URL: https://issues.apache.org/jira/browse/TINKERPOP-2325
Project: TinkerPop
Issue Type: Improvement
Components: sparql
Affects Versions: 3.4.4
Reporter: Stephen Mallette
The following simple bit of SPARQL generates a {{match()}} that wont easily be
converted to further utilize indices.
{code}
gremlin> s.sparql("SELECT ?x WHERE { ?x v:name 'marko' }").explain()
==>Traversal Explanation
===========================================================================================================================================================================================
Original Traversal [InjectStep([SELECT ?x WHERE { ?x v:name
'marko' }])]
ConnectiveStrategy [D] [InjectStep([SELECT ?x WHERE { ?x v:name
'marko' }])]
SparqlStrategy [D] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
MatchPredicateStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
FilterRankingStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
EarlyLimitStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
InlineFilterStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
IncidentToAdjacentStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
AdjacentToIncidentStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
RepeatUnrollStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
CountStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
PathRetractionStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
LazyBarrierStrategy [O] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
TinkerGraphCountStrategy [P] [GraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
TinkerGraphStepStrategy [P] [TinkerGraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
ProfileStrategy [F] [TinkerGraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
StandardVerificationStrategy [V] [TinkerGraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
Final Traversal [TinkerGraphStep(vertex,[]),
MatchStep(AND,[[MatchStartStep(x), PropertiesStep([name],value),
IsStep(eq(marko)), MatchEndStep]]), SelectOneStep(last,x)]
{code}
{{sparql-gremlin}} needs some improvements in this area.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)