How can I extract edges of different types

I can print all the vertices even if they have different types:

CREATE QUERY allvertices() FOR GRAPH gr1 SYNTAX v2 {
allVertices = {ANY};
PRINT allVertices;
}
if I try the simpliest query to see all edges

CREATE QUERY alledges() FOR GRAPH gr2 SYNTAX v2 {

allVertices = {ANY};
allEdges = SELECT e
            FROM allVertices:s - (:e) - allVertices:s2;
PRINT allEdges;

}

I have error

Type Check Error in query qc2_alledges (TYP-8017): line 8, col 15
no type can be inferred for SELECT e
FROM allVertices:s - (:e) - allVertices:s2

Even if I try to see only one edge, I have the same problem

CREATE QUERY qc2_edges() FOR GRAPH social SYNTAX v2 {

allVertices = {vertexname.*};
allEdges = SELECT e
            FROM allVertices:s - (edgename:e) - person:s2;
PRINT allEdges;

}

Is there a simple way in gsql to extract edges?
I know only variant in gsql shell
select * from vertexname-(edgename)-vertexname2
But how can I extract edges of different types?
Thank you

1 Like

@tigergraphuser my recommendation is using an Accumulator function. Below I’ve used the ListAccum to “accumulate” edges.

Example 1:

  ListAccum <EDGE> @@edgeList;
  seed =  {vertex.*};
  myEdges = SELECT tgt 
            FROM seed:s-(myEdge:e)-:tgt
            ACCUM @@edgeList += e;
  PRINT @@edgeList;
  }

If you’re looking to do a combination of edges you could do something like this.

Example 2:

CREATE QUERY getEdges() FOR GRAPH myGraph { 
  ListAccum <EDGE> @@edgeList1;
  ListAccum <EDGE> @@edgeList2;
  ListAccum <EDGE> @@edgeList3;

  seed1 =  {vertex1.*};
  seed2 =  {vertex2.*};

  myEdges1 = SELECT tgt 
             FROM seed1:s-(myEdge1:e)-:tgt
             ACCUM @@edgeList1 += e;
  
  myEdges2 = SELECT tgt 
             FROM seed1:s-(myEdge2:e)-:tgt
             ACCUM @@edgeList2 += e;  

 myEdges3 = SELECT tgt 
            FROM seed2:s-(myEdge3:e)-:tgt
            ACCUM @@edgeList3 += e;  

 PRINT @@edgeList1, @@edgeList2, @@edgeList3;

}

Documentation link to ListAccum

Thank you for your answer. It is a reliable way to use Accumulators for this purpose but if I do not now how many edge types are there in my graph?

With TigerGraph you need to have a schema. With a Schema you should know all the edges that exist.

You could use ANY like you were doing and have a huge edge list of all edges.

Thank you! I’ll try to get the list of all my edges in that way

1 Like