[
https://issues.apache.org/jira/browse/TINKERPOP-1817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16234246#comment-16234246
]
Marko A. Rodriguez commented on TINKERPOP-1817:
-----------------------------------------------
There are two solutions to this problem w/ one of them being extremely
backwards incompatible.
1. Ensure that adjacent vertices in a {{StarGraph}} have labels and not just
ids.
2. Make path storing done after a message pass.
The first is deadly for backwards compatibility as providers have always
assumed that adjacents don't include labels. The latter is possible, but it
would introduce more message passing than desirable (i.e. outside the scope of
using {{TraverserRequirement.PATH}}).
> OLAP loses vertex labels
> ------------------------
>
> Key: TINKERPOP-1817
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1817
> Project: TinkerPop
> Issue Type: Bug
> Components: process
> Affects Versions: 3.3.0, 3.2.6
> Reporter: Daniel Kuppitz
> Priority: Major
>
> Working on this SO question:
> https://stackoverflow.com/questions/46962237/how-to-perform-cross-join-on-different-vertices-in-gremlin-tinkerpop/46977603
> ...I noticed that the connected components query randomly loses the vertex
> labels.
> *Init Graph:*
> {noformat}
> graph = TinkerGraph.open()
> g = graph.traversal()
> a = graph.addVertex(label, "person", "user", "A")
> b = graph.addVertex(label, "person", "user", "B")
> c = graph.addVertex(label, "person", "user", "C")
> d = graph.addVertex(label, "person", "user", "D")
> one = graph.addVertex('rec_id')
> one.property('ids', '1')
> two = graph.addVertex('rec_id')
> two.property('ids', '2')
> three = graph.addVertex('rec_id')
> three.property('ids', '3')
> four = graph.addVertex('rec_id')
> four.property('ids', '4')
> five = graph.addVertex('rec_id')
> five.property('ids', '5')
> a.addEdge('part_of',one)
> a.addEdge('part_of',two)
> b.addEdge('part_of', three)
> b.addEdge('part_of',four)
> c.addEdge('part_of',five)
> d.addEdge('part_of',four)
> d.addEdge('part_of',two)
> g = graph.traversal().withComputer()
> {noformat}
> *Query:*
> {noformat}
> g.V().
> emit(cyclicPath().or().not(both())).
> repeat(both()).
> until(cyclicPath()).
> aggregate("p").by(path()).cap("p").
> unfold().limit(local, 1).dedup().
> map(__.as("v").select("p").unfold().
> filter(unfold().where(eq("v"))).
> unfold().dedup().order().by(id).fold()).dedup().
> project("Users","associated_ids").
> by(unfold().label().fold()).
> by(unfold().label().fold())
> {noformat}
> *Sample Output:*
> {noformat}
> gremlin> g.V().
> ......1> emit(cyclicPath().or().not(both())).
> ......2> repeat(both()).
> ......3> until(cyclicPath()).
> ......4> aggregate("p").by(path()).cap("p").
> ......5> unfold().limit(local, 1).dedup().
> ......6> map(__.as("v").select("p").unfold().
> ......7> filter(unfold().where(eq("v"))).
> ......8> unfold().dedup().order().by(id).fold()).dedup().
> ......9> project("Users","associated_ids").
> .....10> by(unfold().label()./*hasLabel("person").*/fold()).
> .....11> by(unfold().label()./*hasLabel("rec_id").*/fold())
> ==>[Users:[person,person,person,vertex,vertex,vertex,vertex],associated_ids:[person,person,person,vertex,vertex,vertex,vertex]]
> ==>[Users:[vertex,rec_id],associated_ids:[vertex,rec_id]]
> gremlin> g = graph.traversal().withComputer()
> ==>graphtraversalsource[tinkergraph[vertices:9 edges:7], graphcomputer]
> gremlin> g.V().
> ......1> emit(cyclicPath().or().not(both())).
> ......2> repeat(both()).
> ......3> until(cyclicPath()).
> ......4> aggregate("p").by(path()).cap("p").
> ......5> unfold().limit(local, 1).dedup().
> ......6> map(__.as("v").select("p").unfold().
> ......7> filter(unfold().where(eq("v"))).
> ......8> unfold().dedup().order().by(id).fold()).dedup().
> ......9> project("Users","associated_ids").
> .....10> by(unfold().label()./*hasLabel("person").*/fold()).
> .....11> by(unfold().label()./*hasLabel("rec_id").*/fold())
> ==>[Users:[person,person,person,rec_id,vertex,vertex,vertex],associated_ids:[person,person,person,rec_id,vertex,vertex,vertex]]
> ==>[Users:[vertex,rec_id],associated_ids:[vertex,rec_id]]
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)