<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _build_type(type_, value, property_path=None):
 """ Builds the schema definition based on the given type for the given value. :param type_: The type of the value :param value: The value to build the schema definition for :param List[str] property_path: The property path of the current type, defaults to None, optional :return: The built schema definition :rtype: Dict[str, Any] """


    if not property_path:
        property_path = []

    for (type_check, builder) in (
        (is_enum_type, _build_enum_type),
        (is_null_type, _build_null_type),
        (is_bool_type, _build_bool_type),
        (is_string_type, _build_string_type),
        (is_integer_type, _build_integer_type),
        (is_number_type, _build_number_type),
        (is_array_type, _build_array_type),
        (is_object_type, _build_object_type),
    ):
        if type_check(type_):
            return builder(value, property_path=property_path)

    # NOTE: warning ignores type None (as that is the config var default)
    if type_:
        warnings.warn(f"unhandled translation for type {type_!r} with value {value!r}")
    return {}