def METHOD_NAME(self, value, required=True):
    super(SemanticVersionProperty, self).METHOD_NAME(value, required)
    if not self.required and not value:
        return value
    try:
        major, minor, point = value.split('.')
        int(major)
        int(minor)
        int(point)
    except Exception:
        raise BadValueError("Build version %r does not comply with the x.y.z schema" % value)
    return value