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)