code: public <T> Graph<K, VV, EV> joinWithEdgesOnSource(DataSet<Tuple2<K, T>> inputDataSet,
  			final EdgeJoinFunction<EV, T> edgeJoinFunction) {
  
  		DataSet<Edge<K, EV>> resultedEdges = this.getEdges()
  				.coGroup(inputDataSet).where(0).equalTo(0)
  				.with(new ApplyCoGroupToEdgeValuesOnEitherSourceOrTarget<>(edgeJoinFunction))
  					.name("Join with edges on source");
  
  		return new Graph<>(this.vertices, resultedEdges, this.context);
  	}
docs: Joins the edge DataSet with an input Tuple2 DataSet and applies a user-defined transformation
  on the values of the matched records.
  The source ID of the edges input and the first field of the input DataSet are used as join keys.
  
  @param inputDataSet the DataSet to join with.
  The first field of the Tuple2 is used as the join key
  and the second field is passed as a parameter to the transformation function.
  @param edgeJoinFunction the transformation function to apply.
  The first parameter is the current edge value and the second parameter is the value
  of the matched Tuple2 from the input DataSet.
  @param <T> the type of the second field of the input Tuple2 DataSet.
  @return a new Graph, where the edge values have been updated according to the
  result of the edgeJoinFunction.