Filtrar usando a Linguagem de Consulta Gramps¶
As visualizações de lista de objetos (pessoas, famílias, eventos, ...) têm um modo de filtro avançado opcional baseado na Linguagem de Consulta Gramps (GQL).
Para usá-lo, digite uma consulta na sintaxe GQL e pressione enter (ou clique no botão "aplicar"). A visualização será filtrada pela consulta. Se a consulta for inválida, a moldura do campo de entrada ficará vermelha.
A sintaxe GQL é descrita abaixo, copiada da documentação GQL.
Sintaxe¶
Uma consulta GQL é uma string composta por declarações da forma propriedade operador valor, opcionalmente combinadas com as palavras-chave and e or, bem como parênteses.
Propriedades¶
class¶
Filtra pela classe de objeto Gramps e pode ser uma das seguintes: person, family, event, place, citation, source, repository, media, ou note.
Propriedades do objeto¶
O GQL suporta consultas a propriedades aninhadas de objetos Gramps, por exemplo, primary_name.date.calendar. Veja abaixo uma lista completa de propriedades – veja também o Modelo de Dados Gramps.
Elementos da lista por índice¶
Elementos individuais em propriedades semelhantes a listas podem ser acessados por índice posicional entre colchetes. Isso pode ser combinado com propriedades aninhadas, por exemplo, primary_name.surname_list[0].surname.
length¶
Esta é uma propriedade especial que retorna o comprimento de uma propriedade Gramps semelhante a um array, por exemplo, media_list.length > 0 para obter objetos com referências de mídia.
all, any¶
Mais duas propriedades especiais para propriedades Gramps semelhantes a arrays. all requer que uma condição se aplique a todos os itens da lista, any requer que se aplique a pelo menos um item. Ambas as propriedades podem ser combinadas com outras propriedades antes e depois. Exemplos: media_list.any.citation_list.length > 0 para retornar objetos com referências de mídia que têm citações; media_list.all.citation_list.length = 0 para retornar objetos onde todos os objetos de mídia não têm citações.
Índice de array¶
Um índice numérico de array pode ser usado para acessar elementos específicos de uma lista, por exemplo, child_ref_list[0] para o primeiro filho.
get_person, etc.¶
Enquanto todas as propriedades anteriores se referem a um único objeto Gramps, também é possível filtrar diferentes objetos referidos pelo objeto inicial. Por exemplo, um evento tem um identificador de lugar em sua propriedade place. Usando a pseudo-propriedade get_place, o GQL muda para as propriedades desse objeto. Por exemplo, é possível buscar class = event and place.get_place.name.value ~ York. Isso também pode ser combinado com any ou all, por exemplo, class = person and event_ref_list.any.ref.get_event.description ~ farmer.
Operadores¶
=, !=¶
Igualdade ou desigualdade. Exemplos: class = person, class != family
>, >=, <, <=¶
Comparação. Funciona para strings assim como para números. Exemplos: confidence <= 1, change > 1712477760, gramps_id > "I2015"
~, !~¶
Contém ou não contém. Funciona para listas assim como para strings. Exemplos: gramps_id !~ F00, author ~ David, family_list ~ "3a16680f7d226e3ac3eefc8b57a"
Sem operador/valor¶
Se nenhum operador e valor forem fornecidos, o valor é interpretado como um booleano (verdadeiro ou falso). Isso funciona para todos os tipos de propriedades e as regras do Python para conversão para verdadeiro/falso são aplicadas. Por exemplo, a consulta private retorna objetos privados; confidence retorna objetos onde a confiança é maior que 0; media_list retorna objetos com pelo menos uma referência de mídia.
Valores¶
Os valores podem ser números ou strings. Se números devem ser interpretados como strings ou caracteres especiais como = estão envolvidos, coloque o valor entre aspas. Exemplos: gramps_id = F0001, mas gramps_id = "0001".
Exemplos comentados¶
class = note and private and text.string ~ David
Todas as notas privadas que contêm a string "David" em seu texto
media_list.length >= 10
Todos os objetos (de qualquer classe) com 10 ou mais referências de mídia
class != person and media_list.any.rect
Todos os objetos que não são uma pessoa, mas têm uma referência de mídia que é parte de uma imagem. Aqui, media_list.any.rect significa que para cada um dos itens na lista de mídia, é verificado se a propriedade rect (retângulo) tem um valor verdadeiro, significando que é uma lista não vazia. (media_list.any.rect.length > 0 teria o mesmo efeito.)
class = family and child_ref_list.length > 10
Famílias com mais de 10 filhos.
class = event and date.modifier = 0 and date.dateval[2] > 2020
Eventos onde a data é uma data normal (não um intervalo etc.) e o ano é após 2020.
note_list.any.get_note.text.string ~ "David"
Todos os objetos com pelo menos uma nota que contém a string "David" em seu texto.
class = family and child_ref_list.all.ref.get_person.gender = 0 and child_ref_list.length = 3
Todas as famílias com três filhas.
Lista completa de Propriedades do Gramps¶
Para uma lista completa de propriedades do Gramps, veja a documentação GQL.