This seems like a great idea, its nice to have a go to standard and if it hooks into source control well there's no need to rely on someone to do it manually.
This is also a lot cleaner than Microsoft's versioning
but you can understand why they needed to include the complexity of having service pack in there. If you have build number do you really need a major and minor. Might as well of been build.service pack.hotfix.
SemVer relies on bumping the correct component up at the right time. Therefore, determining which type of version you should be releasing is simple. If you are mostly fixing bugs, then this would be categorized as a patch, in which case you should bump z. If you are implementing new features in a backward-compatible way, then you will bump y because this is what’s called a minor version. On the other hand, if you implement new stuff that is likely to break the existing API, you need to bump x because it is a major version.