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:
poprzez wpisanie ukośnika '/' i wybór opcji query lub
poprzez samodzielne wpisanie komendy: {{query }}
Ogólny format zapytań wygląda następująco:
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:
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:
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.
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:
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:
Operator NOT
Dzięki operatorowi 'not' wykluczymy niepożądane dane z wyników naszego zapytania (query).
Na diagramie wyniki zapytania oznaczone są na czerwono:
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.
- 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)
- Wywołaj bloki z ostatniego tygodnia do twojego newsletter'a:
{{query (and [[newsletter]] (between -7d +7d))}}
- Lista zadań do zrobienia z priorytetem a lub b:
{{query ( and (task todo) (priority a or priority b))}}
- Lista zadań do zrobienia połączonych z konkretnym projektem:
{{query ( and (task todo) [[projektXYZ]])}}
- 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 <%current page%>, 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.