Anyone has an idea?
Am Montag, 5. Dezember 2016 15:39:45 UTC-2 schrieb Ray Neiheiser:
>
> It's very strange also with:
>
> StreamSupport.stream(startNodes.spliterator(), false).flatMap(vertex1 ->
> StreamSupport.stream(vertex1.getEdges(Direction.OUT,
> relationshipId).spliterator(), false)).collect(Collectors.toList())
> It seems like I am unable to detect the outgoing edges of the vertices.
> They seem to be all null.
>
> I've added them like this:
>
>
> Iterable<Vertex> startNodes = this.getVertexList(storage.getStartNode(),
> graph);
> Iterable<Vertex> endNodes = this.getVertexList(storage.getEndNode(), graph);
>
> for (Vertex startNode : startNodes)
> {
> for (Vertex endNode : endNodes)
> {
> String edgeClass = "class:" + storage.getId();
> Edge edge = startNode.addEdge(edgeClass, endNode);
>
> for (Map.Entry<String, Object> entry :
> storage.getProperties().entrySet())
> {
> edge.setProperty(entry.getKey(), entry.getValue());
> }
> edge.setProperty(Constants.TAG_HASH,
> HashCreator.sha1FromRelationship(storage));
> edge.setProperty(Constants.TAG_SNAPSHOT_ID, snapshotId);
> }
> }
> graph.commit();
>
> And it only detect ingoing vertices not the outgoing ones.
>
>
> Am Freitag, 2. Dezember 2016 23:07:29 UTC-2 schrieb Ray Neiheiser:
>>
>> That seems like an option.
>> But isn't there any option in gremlin/blueprints for it?
>>
>> Titan also uses gremlin and I can use:
>>
>> GraphTraversal<Vertex, Edge> tempOutput =
>> graph.traversal().V(nodeStartList.toArray()).bothE().filter(__.otherV().is(P.within(nodeEndList.toArray())));
>>
>> Which will give me exactly what I want.
>>
>>
>> Am Freitag, 2. Dezember 2016 01:23:04 UTC-2 schrieb Ivan Mainetti:
>>>
>>> not sure if this may work for you, but you could query via sql something
>>> like
>>>
>>> select from E where out contains [<start-rid1>, <start-rid2>, <start-
>>> ridn>] and in contains [<end-rid1>, <end-rid2>, <end-ridn>] and <some-
>>> property>="something"
>>>
>>>
>>>
>>> Il giorno mercoledì 30 novembre 2016 15:19:24 UTC+1, Ray Neiheiser ha
>>> scritto:
>>>>
>>>> I have some performance problems with reading edges depending on their
>>>> start and end nodes. Is there a better way than checking every edges end
>>>> vertex of every start vertex?
>>>>
>>>> Iterable<Vertex> startNodes =
>>>> getVertexList(relationshipStorage.getStartNode(), graph);
>>>> Iterable<Vertex> endNodes =
>>>> getVertexList(relationshipStorage.getEndNode(), graph);
>>>>
>>>> List<Edge> list =
>>>> StreamSupport.stream(startNodes.spliterator(), false)
>>>> .flatMap(vertex1 ->
>>>> StreamSupport.stream(vertex1.getEdges(Direction.OUT,
>>>> relationshipId).spliterator(), false))
>>>> .filter(edge ->
>>>> StreamSupport.stream(endNodes.spliterator(), false).anyMatch(vertex ->
>>>> edge.getVertex(Direction.OUT).equals(vertex)))
>>>> .collect(Collectors.toList());
>>>>
>>>>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.