There are various semantics I've seen over the years for aggregation and composition, but UML's have become something of a de facto standard.
UML states that an aggregation relationship indicates a whole part relationship which is "transitive and anti-symmetric". The "transitive" part means that if C is part-of B and B is part-of A, then C is part-of A, which makes intuitive sense. The "anti-symmetric" part means that you cannot have cycles in the aggregation graph, meaning that an object may not be directly or indirectly part of itself, which also makes sense intuitively.
Composition (or "composite aggregation" as UML terms it) is aggregation with the additional constraints of "strong ownership" (a part may only be part of one composite at a time) and "coincident lifetimes" (so parts contained within a composite at the time of its deletion are deleted with it).
For Job and Comment, in my judgement it is definitely composition because a comment wouldn't be shared between jobs and when you remove a job you would remove its comments at the same time.