def profileProperty(propertyName, expectedTypes, schemaDescription, bsDescription, marginality, cardinality, controlledVocabs, example):
    """
    Generates the YAML for a property in the profile.

    Parameters
    ----------
    propertyName : str
        Name of the property
    expectedTypes : str[]
        String array of the types that are the range of the property
    schemaDescription : str
        The schema.org description of the property
    bsDescription : str
        The Bioschemas refinement of the description of the property
    marginality : str
        The marginality level of the property. It can take one of the following
        values: MARGINALITY_MINIMAL, MARGINALITY_RECOMMEDED,
        MARGINALITY_OPTIONAL, MARGINALITY_NOT_APPLICABLE, MARGINALITY_UNSPECIFIED
    cardinality : str
        The cardinality of the property. It can take one of the following
        values: CARDINALITY_ONE, CARDINALITY_MANY
    controlledVocabs : str
        The ontology/ontologies from which Bioschemas recommends the objects of
        this property are drawn.
    example : str
        The example usage of this property. This should be in valid JSON-LD,
        although it is not necessary to repeat the `@context`, `@type`, etc

    RETURNS
    -------
    dict
        Dictionary of terms used for the property in the website YAML
    """
    propertyDict = {}
    propertyDict['property'] = propertyName
    propertyDict['expected_types'] = expectedTypes
    propertyDict['description'] = schemaDescription
    propertyDict['type'] = ""
    propertyDict['type_url'] = ""
    propertyDict['bsc_description'] = bsDescription
    propertyDict['equivalentProperty'] = ''
    propertyDict['marginality'] = marginality
    propertyDict['cardinality'] = cardinality
    propertyDict['controlled_vocab'] = controlledVocabs
    propertyDict['example'] = example
    return propertyDict