# Zapytania w Logseq od zaraz

Czas wreszcie zacząć korzystać z queries!

Na pierwszy rzut oka zapytania w Logseq wyglądają na dość skomplikowanie. Czy aby na pewno muszę się ich uczyć? Czy aby na pewno się przydadzą? Ja na początku też miałam opory, nie ma nic złego w minimalistycznym podejściu do narzędzi...

Ale od kiedy nauczyłam się tworzyć simple queries, wyciągam więcej z moich notatek i uważam, że było warto.

Dzięki queries zautomatyzujemy pewne zadania i czynności, które w przeciwnym wypadku musielibyśmy powtarzać samodzielnie. Wzbogacony o queries, nasz **personal knowledge management system** (system zarządzania wiedzą osobistą), będzie pracować jak dobrze naoliwiona maszyna.

Zapytania dają naprawdę duże możliwości i choć można porównać je do zaawansowanego wyszukiwania, można je **wykorzystać bardziej kreatywnie**, nie tylko jako search.

Pokażę wam jak tworzyć zapytania w Logseq, a jednocześnie dać wam parę pomysłów, na to jak skorzystać z nich w waszym systemie.

Ten artykuł to **wprowadzenie do simple queries w Logseq**.

## Co to są queries?

Queries to zapytania.

W Logseq używamy ich, aby przeszukiwać dane zawarte w naszym grafie (nasze notatki). Zadawać pytania naszej bazie danych ;)

Warto wiedzieć, że queries w Logseq:

* są dynamiczne (wyniki zapytania zmieniają się wraz ze zmianami, które wprowadzasz w swoim systemie)
    
* możemy wstawiać w różnych miejscach w naszym systemie, nie tylko w Journal (dzienniku)
    

## Zastosowanie dla queries w Logseq

Nie myślcie o queries jako tylko o funkcji wyszukiwania. Kiedy zaznajomicie się z nimi trochę lepiej możecie korzystać z nich na różne, kreatywne sposoby.

* zbudować Daily Dashboard
    
* trzymać rękę na pulsie, jeśli chodzi o zadania do wykonania (zarządzanie zadaniami)
    
* uczyć się nowych umiejętności łącząc je z opcją fiszek (SR - spaced repetition)
    
* poeksperymentować z 'incremental writing'
    

## Jak tworzymy zapytania w Logseq?

### Ogólny format zapytań

Zapytania wywołujemy w Logseq na dwa sposoby:

1. poprzez wpisanie ukośnika '/' i wybór opcji query lub
    
2. poprzez samodzielne wpisanie komendy: {{query }}
    

Ogólny format zapytań wygląda następująco:

![logseq-zapytania.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1660398983239/UbuaclVCu.png align="left")

Oczywiście sama komenda query nic nam nie da, trzeba ją uzupełnić filtrami i operatorami, aby Logseq wiedział czego szukamy.

O tworzeniu zapytań opowiadam również w nagraniu na YouTube:

%[https://youtu.be/RcUCqU7-sms] 

### Filtry

Większość filtrów da nam wyniki dotyczące bloków. Ale niektóre (jak te związane z atrybutami stron: page, page-property, page-tags and all-page-tags) będą tyczyły się stron.

Przy konstruowaniu zapytań w Logseq możemy skorzystać z następujących filtrów:

#### Between

`{{query (between [[data.startowa]] [[data.końcowa]])}}`

Jak mówi oficjalna dokumentacja Logseq, w obrębie filtra between możemy używać również dodatkowych symboli zamiast konkretnej daty:

![between-filtr.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1660316048518/ZNJjhtHSK.png align="left")

Zastosowanie np. **(between -7d +7d)** (zamiast konkretnych dat), da nam codziennie inne wyniki. Nie musimy ręcznie uaktualniać dat, Logseq automatycznie uaktualnia wyniki query i serwuje nam notatki z ostatniego tygodnia, miesiąca itp.

**Pamiętajmy - queries są dynamiczne!**

Uwaga! Filtr between działa jedynie dla bloków umieszczonych w dzienniku (chyba, że włączysz opcję Block Timestamps w ustawieniach aplikacji)

**Pomysł użycia:** Piszesz newsletter, lub podsumowanie miesiąca? Łatwo zgromadzisz potrzebne notatki z odpowiedniego okresu czasu za pomocą filtra between. Zamiast konkretnych dat możesz użyć symboli - wtedy twoje zapytanie będzie automatycznie uaktualniane.

#### Page

`{{query [[nazwa.strony]]}}`

Pomysł użycia: tego filtra używamy raczej wspólnie z operatorami. Sam w sobie daje nam zwyczajne wyszukiwanie (możemy równie dobrze użyć paska wyszukiwania lub wejść na stronę i zajrzeć do sekcji linked references). Ale jeśli potrzebujemy stale wyświetlanych, a jednocześnie dynamicznych wyników na temat jakieś strony (podczas pisania, czy do daily dashboard), **query możemy umieścić np. w prawym pasku bocznym i mieć stały podgląd na wyniki**.

#### Property (dla bloków)

`{{query (property nazwa.atrybutu wartość.atrybutu)}}`

Zapytanie z filtrem property wyświetli wszystkie bloki oznaczone wskazanym atrybutem. Jeśli chcemy otrzymać bardziej specyficzne wyniki, możemy do zapytania dodać konkretną wartość atrybutu, np. typ książka (gdzie 'typ' to nazwa atrybutu a 'książka' to wartość atrybutu).

**Pomysł użycia:** możemy szybko wyświetlić wszystkie Templates (szablony), w naszym systemie. Ponieważ każdy blok będący szablonem ma atrybut ::template.

#### Full-text

`{{query "hasło"}}`

**Pomysł użycia:** działa podobnie jak search bar - skanuje wszystkie bloki w poszukiwaniu zadanego hasła, ale możemy wyświetlić wszystkie wyniki na 'stałe' i na dowolnej stronie, nie tylko w obrębie paska wyszukiwania.

#### Task

`{{query (task status.zadania)}}` wcześniej: `{{query (todo status.zadania)}}`

We wcześniejszych wersjach Logseq był to filtr todo, zastąpiono go task (ale na razie oba działają).

**Pomysł użycia:** wyświetlimy zadania, które mamy jeszcze do wykonania, lub te, które już wykonaliśmy, żeby poczuć się lepiej ;) Oczywiście do lepszego zarządzania zadaniami, lepiej uszczegółowić nasze query i połączyć ten filtr z innymi elementami.

#### Priority

`{{query (priorytet a/b/c)}}`

**Pomysł użycia:** szybki dostęp do bloków (notatek) o różnych priorytetach. Czujesz, że masz chwilę czasu na nadrobienie zaległości w mniej pilnych zadaniach - wywołaj priorytet c i do boju ;)

Pamiętaj, że priorytetami możesz oznaczać nie tylko zadania (bloki z elementem todo), ale jakiekolwiek bloki.

#### Page-property

`{{query (page-property atrybut.strony wartość.atrybutu)}}`

W wynikach znajdą się strony, nie bloki.

To jeden z moich ulubionych filtrów. I taki, który bardzo często mi się przydaje. Dzięki page-property w Logseq **stworzymy czytelną tabelkę**, czego brakowało mi czasem w tej aplikacji, bo używam również [Notion](https://nomadbynature.xyz/jak-zaczac-z-aplikacja-notion-poradnik-dla-poczatkujacych/).

Nie wspomniałam o tym wcześniej, ale zapytania dają nam tzw. table view - widok tabelki. Kolumny w tabelce odpowiadają właśnie poszczególnym atrybutom.

**Pomysł użycia:** Listy, listy, listy! Np. lista aktywnych projektów, osobisty ranking gier komputerowych, lista klientów...

#### Page-tags

`{{query (page-tags poszukiwane.tagi)}}`

**Tags to jeden z domyślnych atrybutów w Logseq**, który na dodatek przyjmuje jedną lub więcej wartości - możemy dodać jeden lub więcej tagów jako atrybut strony.

Korzystając z tego filtra możemy przeszukać strony pod kątem tagów, którymi zostały oznaczone. Zauważcie, że chodzi tu o atrybut strony tags.

**Pomysł użycia:** Nie znalazłam jeszcze pomysłu na samodzielne użycie tego filtra, ale może wy macie jakieś pomysły? Możecie je podrzucić w komentarzu.

#### All-page-tags

`{{query (all-page-tags poszukiwane-.tagi)}}`

**Pomysł użycia:** otrzymaj lepsze, bardziej precyzyjne wyniki

#### Sort-by

Sortowanie wyników według daty dodania lub edycji bloku.

Format:  '(sort-by key order)'  lub  '(sort-by key)' key:  created-at  lub updated-at order:  desc  lub  asc , jeśli nie sprecyzujemy, to domyślny jest desc (malejąco).  
`(and (task now later) (sort-by created-at desc))`

### Operatory Boole'a (boolowskie)

Domyślne filtry do zapytań w Logseq dają nam już niemałe możliwości. Ale czy nie lepiej byłoby, gdyby można je było łączyć i bardziej precyzować nasze zapytania?

Taką możliwość dają nam operatory!

Jeśli szukacie konkretnych zapytań łączących różne funkcje, zerknijcie do sekcji przykłady!

#### Operator AND

Operator 'and' jest jak dla mnie trochę nieintuicyjny. Jaki wynik daje? Pokaże te rezultaty, które spełniają wszystkie warunki zadane w zapytaniu jednocześnie.

Na diagramie wyniki zapytania oznaczone są na czerwono:

![1.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1660393450115/EdxKJqbFw.png align="left")

#### Operator OR

W wynikach widoczne będą te notatki, które spełniają choć jeden warunek zadany w zapytaniu. Oznaczone są choć jednym tagiem, lub dwoma jednocześnie.

Na diagramie wyniki zapytania oznaczone są na czerwono:

![2.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1660393786517/0d6kulooo.png align="left")

#### Operator NOT

Dzięki operatorowi 'not' wykluczymy niepożądane dane z wyników naszego zapytania (query).

Na diagramie wyniki zapytania oznaczone są na czerwono:

![3.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1660393893718/e4bFOk381.png align="left")

### Przykłady wykorzystania queries

Tutaj zaczyna się zabawa! Łącząc filtry i operatory możemy tworzyć bardzo dokładne zapytania na temat informacji w naszym grafie. Zbudować własny workflow, daily dashboard i więcej. Poniżej znajdziecie parę pomysłów na proste, acz użyteczne zapytania.

1. Lista książek:
    

`{{query (page-property type book)}}`

Do zastosowania tego zapytania, w twoim systemie musisz mieć strony oznaczone atrybutem type:: book (użyj table view dla wygodnego przeglądania)

1. Wywołaj bloki z ostatniego tygodnia do twojego newsletter'a:
    

`{{query (and [[newsletter]] (between -7d +7d))}}`

1. Lista zadań do zrobienia z priorytetem a lub b:
    

`{{query ( and (task todo) (priority a or priority b))}}`

1. Lista zadań do zrobienia połączonych z konkretnym projektem:
    

`{{query ( and (task todo) [[projektXYZ]])}}`

1. Lista rzeczy do omówienia z klientem, znajdujących się na bieżącej stronie:
    

`{{query ( and [[klientxyz]] <% current page %>)}}`

W tym zapytaniu używamy tzw. dynamic variable &lt;%current page%&gt;, Logseq sam je odpowiednio zinterpretuje.

Oczywiście będziecie musieli zmodyfikować powyższe queries, aby pasowały do waszego systemu, ale to już jakiś start.

Jeśli masz ciekawy pomysł na zapytanie w Logseq, zostaw go w komentarzu.

%%[buycoffee]
