クエリ(Query)
グラフ内のデータについて問い合わせ文を書いて、結果を表示させることができます。
書式は
{{query 問い合わせ文}}
です。これは /Query コマンドで簡単に入力できます。
簡単版(Queries)と上級版(Advanced Queries)があります。
以下は簡単版の解説です。
#タグA を含むブロックの検索
{{query #タグA}} または {{query [[タグA]]}}
※ ハッシュタグとページへのリンクは同義のため、どちらで書いても結果は同じです。 ただし、2つ以上並べるときは # ではなく [[]]記法を用いてください。
{{query (and [[タグA]] [[タグB]])}}
「ページタイトル」へのリンクを含むブロックの検索
{{query [[ページタイトル]]}}
この結果には、「ページタイトル」を持つページそのものも含まれます。
特定のページの検索
{{query (page [[ページタイトル]])}}
「ページタイトル」を持つページだけが検索されます。
and 、or 条件
{{query (and [[ページ1]] [[ページ2]])}}
{{query (or [[ページ1]] [[ページ2]])}}
文字列を含むブロックの検索
{{query 検索文字列}}
{{query (page-tags [[タグ]])}}
または
{{query (page-tags #タグ)}}
タスクを検索
{{query (task NOW)}}:NOWマークのついたタスクを検索
{{query (and (page [[ページタイトル]]) (task NOW LATER))}}:「ページタイトル」のページに含まれる、NOW、あるいはLATERマークのついたタスクを検索
日誌ページを期間で検索
between を使用
code:text
today|yesterday|tomorrow|now
+|- 数字 y|m|w|d|h|min
例)
{{query (between -7d today)}} 1週間前から今日までの日誌ページを検索
{{query (and (between -7d +7d) (task DONE))}} 1週間前から1週間後までの日誌ページのうち、DONEマークのついたタスクを検索
プロパティを検索
{{query (property key value)}}
※書き方の注意
ページ名とプロパティ名に含まれる英字は全て小文字で書くこと
簡単版には視覚的にクエリを組めるエディタも付属しています。
上級版のクエリ:Advanced Queries
細かい条件付けが可能ですが、Datalogという言語を用いるため、基本的なクエリよりも記法が難しいです。
理解のための補足
Datalogはデータベース問い合わせのための言語で、Prologのような論理プログラミング言語の一種です。
Logseqでは、Datomicというデータベースサービスで用いられているDatalogの記法を用います。
この記法は、Extensible Data Notation(edn)と呼ばれるClosure言語のデータ記法でDatalogを表現したものです。
公式解説(英語)
詳しくはありませんが、どの資料を参考にするべきか示されています。
Advanced Queriesの書き方を研究した記事(英語)
簡単なコマンドでAdvanced Queriesを自動生成するサイト
こちらの説明も判りやすいかも(英語)