4.10.4 Using a Vertex Set to Create a Bipartite Subgraph
You can create a bipartite subgraph by specifying a set of vertices (nodes), which are used as the left side. A bipartite subgraph has edges only between the left set of vertices and the right set of vertices. There are no edges within those sets, such as between two nodes on the left side. In the in-memory graph server (PGX), vertices that are isolated because all incoming and outgoing edges were deleted are not part of the bipartite subgraph.
The following figure shows a bipartite subgraph. No properties are shown.
The following examples create a bipartite subgraph from a simple graph consisting of
      four vertices and four edges. The vertex ID values for the four vertices are
        99, 128, 1908 and 333
      respectively. See Figure 4-5 in About Filter Expressions for more information on the vertex and edge property values including the edge
      direction between the vertices.
               
You must first create a vertex collection and fill it
                                                with the vertices for the left side. In the example
                                                shown, vertices with vertex ID values
                                                  333 and 99 are
                                                added to the left side of the vertex collection.
               
Using the Shell to Create a Bipartite Subgraph
opg4j> s = graph.createVertexSet() ==> ... opg4j> s.addAll([graph.getVertex(333), graph.getVertex(99)]) ==> ... opg4j> s.size() ==> 2 opg4j> bGraph = graph.bipartiteSubGraphFromLeftSet(s) ==> PGX Bipartite Graph named sample-sub-graph-4
Using Java to Create a Bipartite Subgraph
import oracle.pgx.api.*; VertexSet<Integer> s = graph.createVertexSet(); s.addAll(graph.getVertex(333), graph.getVertex(99)); BipartiteGraph bGraph = graph.bipartiteSubGraphFromLeftSet(s);
When you create a subgraph, the in-memory graph server (PGX) automatically creates a Boolean vertex (node) property that indicates whether the vertex is on the left side. You can specify a unique name for the property.
The resulting bipartite subgraph looks like this:
Vertex with ID 1908 is excluded from the bipartite subgraph. The
                                                  only edge that connected that vertex extended from
                                                  128 to 1908. The
                                                  edge was removed, because it violated the
                                                  bipartite properties of the subgraph. Vertex
                                                  1908 had no other edges, and so
                                                  was removed as well. Moreover, the edge from the
                                                  vertex with the ID 128 to the
                                                  vertex with ID 99 is not present
                                                  in the bipartite subgraph, because edges are only
                                                  allowed to go from left to right (and not from
                                                  right to left).
                  
Parent topic: Creating Subgraphs

