You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "stephen mallette (JIRA)" <ji...@apache.org> on 2016/12/28 21:34:58 UTC
[jira] [Commented] (TINKERPOP-1587) Gremlin Server Subgraph
Cardinality Not Respected
[ https://issues.apache.org/jira/browse/TINKERPOP-1587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15783746#comment-15783746 ]
stephen mallette commented on TINKERPOP-1587:
---------------------------------------------
I tried a bunch of things with this and the only one that ended up making sense was to default the instantiated TinkerGraph with default cardinality of {{list}}. I can't think of any reason why this is a bad approach and should only cause trouble if you were mutating the subgraph after it was returned from Gremlin Server and expected the default of {{property(k,v)}} to be {{single}} and ended up with {{list}} instead. The obvious fix would be to specify {{Cardinality}} when setting the property.
I will give it some more thought over night and will likely push the fix tomorrow as CTR as it is a very small change.
> Gremlin Server Subgraph Cardinality Not Respected
> -------------------------------------------------
>
> Key: TINKERPOP-1587
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1587
> Project: TinkerPop
> Issue Type: Bug
> Components: io
> Affects Versions: 3.2.3
> Reporter: Michael Margitus
> Assignee: stephen mallette
>
> The subgraph traversal step does not respect the cardinality of properties when executed on a graph remotely accessed from Gremlin Server. When queried, only one value of a multi-value property is returned. The following Java-based traversal illustrates the issue on The Crew graph. Below g is a Graph Traversal Source created using the withRemote() method on the EmptyGraph.
> {code}
> GraphTraversal<Edge, Object> traversal =g.E().hasLabel("develops").subgraph("subgraph").cap("subgraph");
> TinkerGraph subgraph = (TinkerGraph)traversal.next();
> GraphTraversalSource sg = subgraph.traversal();
> GraphTraversal<Vertex, Object> locationTraversal = sg.V(1L).values("location");
> while (locationTraversal.hasNext()) {
> System.out.println(locationTraversal.next());
> }
> {code}
> This traversal should return four locations {code} {id=1, name=[marko], location=[san diego, santa cruz, brussels, santa fe], label=person} {code} however it only returns santa fe.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)