-
Notifications
You must be signed in to change notification settings - Fork 88
Unary Graph Collection Operators
This section provides an overview of unary graph collection operators, which operate on a single GraphCollection and return a subset or transformation of the input collection.
| Unary Graph Collection Operators |
|---|
| Selection |
| Matching |
| Limit |
| Distinct |
Given a collection, the select operator filters all contained graphs based on their associated graph head and return a collection with logical graphs that fulfill the predicate.
| Method | Expects | Returns |
|---|---|---|
| select | Predicate function (FilterFunction<GraphHead>) for a graph head |
GraphCollection which contains all logical graphs that fulfill the predicate. |
Consider the Social Network example graph, which contains multiple logical graphs with different relations.
This example takes a single graph collection and selects a subset of logical graphs that fulfill the predicate function.
In order to select all graphs that contain edges labeled 'hasMember', we would do the following:
- aggregate the property
hasEdgeLabel_hasMemberfor each graph in the collection - use the select method to retrieve graphs for which the newly set property is
true
FlinkAsciiGraphLoader loader = getSocialNetworkLoader();
GraphCollection collection = loader.getGraphCollectionByVariables("g0", "g1", "g2", "g3");
// create aggregation function
HasEdgeLabel hasLabelHasMember = new HasEdgeLabel("hasMember");
// apply aggregation
collection = collection.apply(new ApplyAggregation(hasLabelHasMember));
// select graphs
GraphCollection result = collection.select(hasLabelHasMember);The graph collection result now contains the logical graph g3:Forum, since it is the only one which contains edges labeled 'hasMember'. Or to be more precise: it is the only one with a property 'hasEdgeLabel_hasMember' that is set to true after we applied the aggregation.
tbd.
Given a collection, the limit operator return the first n arbitrary logical graphs contained in that collection.
| Method | Expects | Returns |
|---|---|---|
| limit | Positive integer limit which defines the number of graphs to return from the collection |
Subset of the graph collection |
Using the limit operator is fairly straight forward. We define some limit n of graphs that are being returned by the method.
If n is greater or equal than the total amount of graphs contained in the initial collection, then every graph will be contained in the resulting GraphCollection. Using the Social Network example graph, one could apply the limit operator as follows:
FlinkAsciiGraphLoader loader = getSocialNetworkLoader();
GraphCollection collection = loader.getGraphCollectionByVariables("g0", "g1", "g2", "g3");
// define some limit
int limit = 2;
// apply limit
GraphCollection result = collection.limit(limit);The resulting graph collection result contains the first two arbitrary logical graphs, which are g0 and g1.
tbd.