Dans le logiciel Logseq, il y a une option très riche, Les requêtes.

Elles permettent de récupérer des informations et de les mettre en forme selon des conditions. C'est vraiment puissant, mais il faut comprendre le principe et la logique.

Deux sortes de requêtes

Les requêtes simples

C'est une syntaxe légère entre {{query ...}}, suffisante pour 80% des besoins. Cherche des tâches, des tags, des pages, des dates.

Exemple :


{{query (todo TODO DOING)}} 

  • Vocabulaire de base pour les requêtes simples

  • Filtres sur les tâches
  • (todo TODO) → tâches à faire
  • (todo DOING) → tâches en cours
  • (todo TODO DOING) → les deux
  • (todo WAITING) → en attente
  • Filtres surles pages
  • (page-property nom valeur) → pages qui ont cette propriété avec cette valeur
  • (page-tags [[mon-tag]]) → pages tagguées
  • (page [[nom-page]]) → uniquement dans cette page
  • Filtres sur les blocs
  • (property nom valeur) → blocs qui ont cette propriété
  • (priority A) → blocs avec priorité A
  • [[Léa]] → blocs qui mentionnent Léa
  • "texte" → blocs contenant ce texte
  • Filtres sur les dates
  • (between -7d today) → entre il y a 7 jours et aujourd'hui
  • (between -30d -1d) → entre il y a 30 jours et hier
  • (between today +7d) → entre aujourd'hui et dans 7 jours
  • Opérateurs de combinaison
  • (and X Y) → X et Y doivent être vrais
  • (or X Y) → X ou Y suffit
  • (not X) → exclure X
  • Exemples de requêtes simples

  • Toutes mes tâches en cours
  • {{query (todo TODO DOING)}}
  • Tâches en cours de la semaine passée
  • {{query (and (todo TODO DOING) (between -7d today))}}
  • Tâches d'hier qui ne sont pas faites
  • {{query (and (todo TODO DOING) (page <% yesterday %>))}}
  • Tout ce qui mentionne un élève
  • {{query [[Léa]]}}
  • Tâches en cours pour un élève
  • {{query (and (todo TODO DOING) [[Léa]])}}
  • Toutes les pages d'élèves
  • {{query (page-property type élève)}}
  • Élèves d'un niveau spécifique
  • {{query (and (page-property type élève) (page-property niveau CE2))}}
  • Toutes les pages avec un tag particulier
  • {{query (page-tags [[pédagogie]])}}
  • Tâches priorité A
  • {{query (and (todo TODO DOING) (priority A))}}
  • Pages créées cette semaine
  • {{query (between -7d today)}}
  • Tâches en attente
  • {{query (todo WAITING)}}
  • Tâches d'une page spécifique
  • {{query (and (todo TODO DOING) (page [[Projet sortie musée]]))}}
  • Comment construire une requête simple ?

  • Voilà comment je fais de mon côté, mais je ne suis pas sûr que cela soit la bonne méthode. Attention, les requêtes simples ne sait pas aller chercher une propriété dans une page spécifique.
  • Étape 1 — Je définis ce que je cherche en langage naturel. Exemple : "Je veux voir toutes les tâches en cours pour les élèves de CE1 qui ont un PPRE"
  • Étape 2 — Identifie les filtres nécessaires :
    • Je décompose en conditions simples :
    • "Tâches en cours" → (todo TODO DOING)
    • "Pour Léa" → [[Léa]]
    • "Cette semaine" → (between -7d today)
  • Étape 3 — Combine avec and :
  • Je combien ensuite avec (and)
  • {{query (and (todo TODO DOING) [[Léa]] (between -7d today))}} 
    

Étape 4 — Je teste en partant du plus simple et j'ajoute les filtres progressivement. Si une query ne retourne rien, je simplifie pour voir où ça coince.

Colle la query dans un bloc. Si tu n'as pas le bon résultat :

Trop de résultats ? Ajoute un filtre supplémentaire avec (and ...)

Pas assez ? Retire un filtre, ou élargis la période

Aucun résultat ? Vérifie qu'au moins une tâche correspond bien aux critères dans tes notes

Les requêtes avancées

C'est une syntaxe Datalog entre #+BEGIN_QUERY et #+END_QUERY, plus puissante mais plus verbeuse. Permet de filtrer finement, croiser des conditions, trier.

Exemple :

    #+BEGIN_QUERY
    {:title "Mes TODO"
     :query [:find (pull ?b [*])
             :where [?b :block/marker "TODO"]]}
    #+END_QUERY

Pour l'instant j'apprends à m'en servir en cherchant sur d'autres sites. J'expliquerai plus tard ma manière de les créer.

Emmanuel H.