def _select_attribute_type(self, attribute_route: AttributeRoute) -> AttributeRoute:
        """Selects the attribute type based on the schema item and the attribute type.
        This method implements the logic to infer the attribute type based on the schema item if the attribute type is not provided.
        If the attribute type is not provided, it will be inferred based on the schema item.
        """
        schema_item = self._schema.get(attribute_route.name)
        if isinstance(schema_item, QuestionBase) and (
            attribute_route.type is None or attribute_route.type == AttributeType.SUGGESTION
        ):
            # Suggestions are the default destination for questions.
            attribute_route.type = AttributeType.SUGGESTION
        elif isinstance(schema_item, QuestionBase) and attribute_route.type == AttributeType.RESPONSE:
            attribute_route.type = AttributeType.RESPONSE
        elif isinstance(schema_item, FieldBase):
            attribute_route.type = AttributeType.FIELD
        elif isinstance(schema_item, VectorField):
            attribute_route.type = AttributeType.VECTOR
        elif isinstance(schema_item, MetadataPropertyBase):
            attribute_route.type = AttributeType.METADATA
        elif attribute_route.name == "id":
            attribute_route.type = AttributeType.ID
        else:
            raise RecordsIngestionError(f"Mapped attribute is not a valid dataset attribute: {attribute_route.name}.")
        return attribute_route
Selects the attribute type based on the schema item and the attribute type.
        This method implements the logic to infer the attribute type based on the schema item if the attribute type is not provided.
        If the attribute type is not provided, it will be inferred based on the schema item.
        
argilla/src/argilla/records/_mapping/_mapper.py