gradoop
gradoop copied to clipboard
Should operators create new graph heads?
Many operators and transformations assign a new graph head, therefore creating a new logical graph (in the EPGM model). Creating a new graph head results in losing information like graph head labels and properties.
I think the Javadoc of those operators should clarify that a new head is created and assigned OR the existing graph heads should be reused. We should discuss this and related issues in the next meetup.
I think we should talk about that again ... the deletion of the existing graph head and addition of a new one is suspect ... maybe we should first list all operators that are doing that and decide then, which one to refactor
I looked up the handling of graph heads in our current operators. This includes 61 operators. Some are missing (e.g. DIMSpan).
legend | |
---|---|
Y | LogicalGraph input: passes head |
N | LogicalGraph input: creates new head |
A | GraphCollection input: passes all heads |
K | GraphCollection input: passes no heads |
YN/KK/etc. | binary input, value for each input |
output | category | name | passes head | modifications |
---|---|---|---|---|
LogicalGraph | Main | Aggregation | Y | SetAggregateProperty |
LogicalGraph | Main | Clone | N | clone |
LogicalGraph | Main | Combination | NN | default |
LogicalGraph | Main | ReduceCombination | K | default |
LogicalGraph | Main | Exclusion | NN | default |
LogicalGraph | Main | ReduceExclusion | K | default |
LogicalGraph | Main | VertexFusion | YN | none |
LogicalGraph | Main | GroupingGroupCombine | N | default |
LogicalGraph | Main | GroupingGroupReduce | N | default |
LogicalGraph | Main | ReduceEdgeNeighbourhood | Y | none |
LogicalGraph | Main | ReduceVertexNeighbourhood | Y | none |
LogicalGraph | Main | Overlap | NN | default |
LogicalGraph | Main | ReduceOverlap | K | default |
LogicalGraph | Main | Subgraph | N | default |
LogicalGraph | Main | Transformation | ? | dependent on GraphHead TransformationFunction (category Transformation) |
LogicalGraph | Sampling | PageRankSampling | Y | none |
LogicalGraph | Sampling | RandomEdgeSampling | N | default |
LogicalGraph | Sampling | RandomLimitedDegreeVertexSampling | Y | none |
LogicalGraph | Sampling | RandomNonUniformVertexSampling | Y | none |
LogicalGraph | Sampling | RandomVertexEdgeSampling | N | default (von anderen Samplings abhängig) |
LogicalGraph | Sampling | RandomVertexNeighborhoodSampling | N | default |
LogicalGraph | Sampling | RandomVertexSampling | N | default |
LogicalGraph | Sampling | RandomWalkSampling | N | default |
LogicalGraph | Sampling Statistics | AverageClusteringCoefficient | Y | AddAverageCCValueToGraphHeadMap |
LogicalGraph | Sampling Statistics | AverageDegree | Y | AddSumDegreesToGraphHeadCrossFunction und CalculateAverageDegree |
LogicalGraph | Sampling Statistics | AverageIncomingDegree | Y | AddSumDegreesToGraphHeadCrossFunction und CalculateAverageDegree |
LogicalGraph | Sampling Statistics | AverageOutgoingDegree | Y | AddSumDegreesToGraphHeadCrossFunction und CalculateAverageDegree |
LogicalGraph | Sampling Statistics | GraphDensity | Y | Aggregation und CalculateDensity |
LogicalGraph | Gelly | GellyGlobalClusteringCoefficientDirected | Y | WritePropertyToGraphHeadMap |
LogicalGraph | Gelly | GellyGlobalClusteringCoefficientUndirected | Y | WritePropertyToGraphHeadMap |
LogicalGraph | Gelly | GellyLocalClusteringCoefficientDirected | Y | none |
LogicalGraph | Gelly | GellyLocalClusteringCoefficientUndirected | Y | none |
LogicalGraph | Gelly | AnnotateWeaklyConnectedComponents | Y | none |
LogicalGraph | Gelly | HITS | N | default |
LogicalGraph | Gelly | LabelPropagation | N | default |
LogicalGraph | Gelly | PageRank | Y | none |
LogicalGraph | Gelly | KRandomJumpGellyVCI | Y | none |
LogicalGraph | Gelly | SingleSourceShortestPaths | N | default |
LogicalGraph | Gelly | GellyTriangleCounting | Y | WritePropertyToGraphHeadMap |
LogicalGraph | Gelly | DistinctVertexDegrees | N | default |
LogicalGraph | DIMSpan | ? | ? | ? |
LogicalGraph | Transformation | ExtractPropertyFromVertex | Y | none |
LogicalGraph | Transformation | ConnectNeighbors | N | default |
LogicalGraph | Transformation | EdgeToVertex | N | default |
LogicalGraph | Transformation | PropagatePropertyToNeighbor | N | default |
LogicalGraph | Transformation | VertexToEdge | N | default |
GraphCollection | Main | ApplyAggregation | A | SetAggregateProperties |
GraphCollection | Main | Difference | K/1? | ? |
GraphCollection | Main | DifferenceBroadcast | ^ | |
GraphCollection | Main | DistinctById | A | |
GraphCollection | Main | DistinctByIsomorphism | A | |
GraphCollection | Main | GroupByIsomorphism | ? | dependent on GraphHeadReduceFunction - CountGraphHeads nimmt zb nur den ersten |
GraphCollection | Main | Intersection | K/1? | bei bestimmter Größe das letzte Element, sonst nichts? |
GraphCollection | Main | IntersectionBroadcast | ^ | |
GraphCollection | Main | Limit | A | |
GraphCollection | Main | RollUp | N | default (Abhängig von Grouping) |
GraphCollection | Main | Selection | ? | dependent on FilterFunction |
GraphCollection | Main | Split | N | generiert GraphIds aus split properties |
GraphCollection | Main | ApplySubgraph | K | leer - Typo in Exception in Constructor |
GraphCollection | Main | Union | A | |
GraphCollection | Gelly | WeaklyConnectedComponentsAsCollection | Y | none (Abhängig von AnnotateWeaklyConnectedComponents) |
GraphCollection | btgs | BusinessTransactionGraphs | N | generiert das irgendwie |