Suodatin Grampsin kyselykielellä¶
Objektin listanäkymät (henkilöt, perheet, tapahtumat, ...) sisältävät valinnaisen edistyneen suodatinmoodin, joka perustuu Grampsin kyselykieleen (GQL).
Käyttääksesi sitä, kirjoita kysely GQL-syntaksissa ja paina enter (tai napsauta "käytä" -painiketta). Näkymä suodatetaan kyselyn mukaan. Jos kysely on virheellinen, syöttökentän kehys muuttuu punaiseksi.
GQL-syntaksi on kuvattu alla, kopioituna GQL-dokumentaatiosta.
Syntaksi¶
GQL-kysely on merkkijono, joka koostuu lauseista muodossa property operator value, jotka voidaan yhdistää valinnaisesti avainsanoilla and ja or sekä sulkujen avulla.
Ominaisuudet¶
class¶
Suodattaa Gramps-objektin luokan mukaan ja voi olla yksi seuraavista: person, family, event, place, citation, source, repository, media tai note.
Objektin ominaisuudet¶
GQL tukee Gramps-objektien sisäisten ominaisuuksien kyselyä, esim. primary_name.date.calendar. Katso alla täydellinen lista ominaisuuksista – katso myös Grampsin tietomalli.
Listan elementit indeksin mukaan¶
Yksittäisiin elementteihin listan kaltaisissa ominaisuuksissa voidaan päästä käsiksi paikkatietojen avulla neliömäisissä sulkuissa. Tämä voidaan yhdistää sisäisiin ominaisuuksiin, esim. primary_name.surname_list[0].surname.
length¶
Tämä on erityinen ominaisuus, joka palauttaa taulukon kaltaisen Gramps-ominaisuuden pituuden, esim. media_list.length > 0 saadaksesi objekteja, joilla on media viittauksia.
all, any¶
Kaksi muuta erityistä ominaisuutta taulukon kaltaisille Gramps-ominaisuuksille. all vaatii ehdon pätevän kaikille listan kohteille, any vaatii sen pätevän ainakin yhteen kohteeseen. Molempia ominaisuuksia voidaan yhdistää muihin ominaisuuksiin ennen ja jälkeen. Esimerkkejä: media_list.any.citation_list.length > 0 palauttaa objekteja, joilla on media viittauksia, joilla on viittauksia; media_list.all.citation_list.length = 0 palauttaa objekteja, joissa kaikilla mediaobjekteilla ei ole viittauksia.
Taulukon indeksi¶
Numerollista taulukon indeksiä voidaan käyttää tiettyjen listan elementtien käsittelemiseen, esim. child_ref_list[0] ensimmäiselle lapselle.
get_person, jne.¶
Vaikka kaikki edelliset ominaisuudet viittaavat yhteen Gramps-objektiin, on myös mahdollista suodattaa eri objekteja, joihin alkuperäinen objekti viittaa. Esimerkiksi tapahtumalla on paikkaohjain sen place-ominaisuudessa. Käyttämällä get_place-pseudo-ominaisuutta GQL siirtyy kyseisen objektin ominaisuuksiin. Esimerkiksi on mahdollista etsiä class = event and place.get_place.name.value ~ York. Tämä voidaan myös yhdistää any tai all, esim. class = person and event_ref_list.any.ref.get_event.description ~ farmer.
Operaattorit¶
=, !=¶
Yhtä suuri tai ei yhtä suuri. Esimerkkejä: class = person, class != family
>, >=, <, <=¶
Vertailu. Toimii sekä merkkijonoille että numeroille. Esimerkkejä: confidence <= 1, change > 1712477760, gramps_id > "I2015"
~, !~¶
Sisältää tai ei sisällä. Toimii sekä listoille että merkkijonoille. Esimerkkejä: gramps_id !~ F00, author ~ David, family_list ~ "3a16680f7d226e3ac3eefc8b57a"
Ei operaattoria/arvoa¶
Jos operaattoria ja arvoa ei anneta, arvoa tulkitaan booleanina (true tai false). Tämä toimii
kaikkien tyyppisten ominaisuuksien kanssa, ja Pythonin säännöt totuuden/epätotuuden muuntamiseksi otetaan huomioon. Esimerkiksi kysely private palauttaa yksityiset objektit; confidence palauttaa objektit, joissa luottamus on suurempi kuin 0; media_list palauttaa objektit, joilla on vähintään yksi media viittaus.
Arvot¶
Arvot voivat olla numeroita tai merkkijonoja. Jos numeroita tulisi tulkita merkkijonoina tai erityisiä merkkejä kuten = on mukana, sulje arvo merkkijonoihin. Esimerkkejä: gramps_id = F0001, mutta gramps_id = "0001".
Kommentoidut esimerkit¶
class = note and private and text.string ~ David
Kaikki yksityiset muistiinpanot, jotka sisältävät merkkijonon "David" tekstissään
media_list.length >= 10
Kaikki objektit (mikä tahansa luokka) joilla on 10 tai enemmän media viittauksia
class != person and media_list.any.rect
Kaikki objektit, jotka eivät ole henkilöitä mutta joilla on media viittaus, joka on osa kuvaa. Tässä media_list.any.rect tarkoittaa, että jokaiselle media listan kohteelle tarkistetaan, onko rect (suorakulmio) ominaisuudella totuudenmukainen arvo, mikä tarkoittaa, että se on ei-tyhjää lista. (media_list.any.rect.length > 0 olisi sama vaikutus.)
class = family and child_ref_list.length > 10
Perheet, joilla on yli 10 lasta.
class = event and date.modifier = 0 and date.dateval[2] > 2020
Tapahtumat, joissa päivämäärä on normaali päivämäärä (ei aikaväli jne.) ja vuosi on vuoden 2020 jälkeen.
note_list.any.get_note.text.string ~ "David"
Kaikki objektit, joilla on vähintään yksi muistiinpano, joka sisältää merkkijonon "David" tekstissään.
class = family and child_ref_list.all.ref.get_person.gender = 0 and child_ref_list.length = 3
Kaikki perheet, joilla on kolme tytärtä.
Täydellinen lista Grampsin ominaisuuksista¶
Täydellisen listan Grampsin ominaisuuksista löydät GQL-dokumentaatiosta.