import re


def convert_prefixes_to_list(prefixes):
    """Converte uma string dos prefixos em uma lista de tuplas. Onde cada par
    contém um identificador e a uri correspondente.

    Parameters
    ----------
    prefixes : str
        string correspondendo aos prefixos utilizados na consulta SPARQL.

    Returns
    -------
    list
        Lista de tuplas, onde cada tupla contém dois itens, o primeiro
        corresponde ao nome dado a URI que corresponde ao segundo item.

    Examples
    --------
    .. code-block:: python

        >>> from QApedia.utils import convert_prefixes_to_list
        >>> prefixes = "PREFIX foaf: <http://xmlns.com/foaf/0.1/>\\
        ...             PREFIX yago: <http://yago-knowledge.org/resource/>\\
        ...             PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>\\
        ...             PREFIX dbo:<http://dbpedia.org/ontology/>\\
        ...             PREFIX dbp:<http://dbpedia.org/property/>"
        >>> list_of_prefixes = convert_prefixes_to_list(prefixes)
        >>> for prefix, uri in list_of_prefixes:
        ...     print(prefix, uri)
        ...
        foaf: http://xmlns.com/foaf/0.1/
        yago: http://yago-knowledge.org/resource/
        rdfs: http://www.w3.org/2000/01/rdf-schema#
        dbo: http://dbpedia.org/ontology/
        dbp: http://dbpedia.org/property/
    """
    pattern = r"(\w+:)\s*\<(.*?)\>"
    prefixes_list = re.findall(pattern, prefixes)
    return prefixes_list