def retain_reference(journal_reference, min_size=3, required_fields=["author","title"]):
    """
    Determine whether the input reference should be retained, and thus resolved, or skipped.
    This allows to skip erroneously extracted references, partial ones, etc.

    :param journal_reference: the input reference (extracted from journals in LinkedBooks)
    :type journal_reference: dict
    :param min_size: the minimum number of fields `journal_reference` must have
    :type min_size: int
    :param required_fields: the fields that must be contained in `journal_reference`
    :type required_fields: list of str
    :return: bool -- True if the reference should be retained, False otherwise

    """
    fields = [field["tag"] for field in journal_reference["contents"].values()]
    if(len(fields)>=min_size):
        if(len(set(fields).intersection(set(required_fields))) >= len(required_fields)):
            return True
        else:
            return False
    else:
        return False