27.10.5.6 Combining Filter Expressions
Any filter expression used for subgraph filtering, can be combined with any other filter expression to form a new filter expression.
Filters can be combined using the following operations:
- intersection
- union
The intersection of two filters will only keep a vertex or edge, if both filters
would accept it. Note that the intersection of two filters will not behave
as an AND
in the filter expression.
The union of two filters will keep a vertex or edge, if one of the filters would
accept it. Note that the union of filters will not behave as an
OR
in the filter expression.
In the following example an edge filter is intersected with a vertex filter. The resulting subgraph will only include vertices that have the name 'PGX
' and will only include edges that have a cost greater than 5
.
opg4j> var edgeFilter = EdgeFilter.fromExpression("edge.cost > 5")
opg4j> var vertexFilter = VertexFilter.fromExpression("vertex.name = 'PGX'")
opg4j> var combinedFilter = edgeFilter.intersect(vertexFilter)
EdgeFilter edgeFilter = EdgeFilter.fromExpression("edge.cost > 5");
VertexFilter vertexFilter = VertexFilter.fromExpression("vertex.name = 'PGX'");
GraphFilter combinedFilter = edgeFilter.intersect(vertexFilter);
from pypgx.api.filters import VertexFilter
from pypgx.api.filters import EdgeFilter
edge_filter = EdgeFilter.from_expression("edge.cost > 5")
vertex_filter = VertexFilter.from_expression("vertex.name = 'PGX'")
combined_filter = edge_filter.intersect(vertex_filter)
In contrast, the subgraph created by the union of those
filters will include vertices that either have the name
'PGX
' or that has an incoming or outgoing
edge with a cost greater than 5
. It will also
include edges with a cost greater than 5
, as well
as edges for which the source and destination vertex have the name
'PGX
'.
Parent topic: Operations on Filter Expressions