Book Framework - Setup in logseq v1 - 2021

Setup

  • Use cmd + k to create the [[Book]] page for those reading statuses query sections and the [[Resonance Book]] page for the overall view of books

  • [[Book]] and [[Resonance Book]] pages are simple and only have queries

  • Hide any property in the query-table as needed.

    • Property

      • Book Properties

        ```
        				  title::
        				  status::
        				  type:: book
        				  format::
        				  year::
        				  topics::
        				  genre::
        				  tags::
        				  icon:: 📖
        				  author::
        				  url::
        				  recommendedBy::
        				  start::
        				  end::
        				  rating:: ⭐️
        				  digested::
        ```
        
      • Property Attributes
        • Array of genre i.e: Self-Help, Personal Growth
        • status:: One of the following values: toread, reading, Read
        • rating:: from one :star: to five star :star::star::star::star::star:
        • tags:: uses a backlink to a theme : [[Spirituality]]
    • Pages

      • Resonance Books

        • List of all books
          • Based on a query that pulls all books from their respective atomic page by leveraging the block-property type:: book
      • Books

        • Current Reading
          • List of books that I am reading, queried by type:: book and status:: reading
        • Future Reading
          • List of books that I plan to read, queried by type:: book and status:: toread
        • Finished Reading
          • List of books that I have finished, queried by type:: book and status:: reading. All properties of the book page [[Book/Book Name]] block-property should be populated at this level. And subsequent block (Quotes, Summary…) should have relevant details about the book.
    • Query

      • Books

        • 				  #+BEGIN_QUERY
          				  {:title [:h2 "Currently Reading"]
          				   :query [:find (pull ?b [*])
          				           :where
          				           [?b :block/properties ?props]
          				           [(get ?props :type) ?type]
          				           [(get ?props :status) ?st]
          				           [(= #{"reading"} ?st)]]}
          				  #+END_QUERY
          
        • 				  #+BEGIN_QUERY
          				  {:title [:h2 "Future Reading"]
          				   :query [:find (pull ?b [*])
          				           :where
          				           [?b :block/properties ?props]
          				           [(get ?props :type) ?type]
          				           [(get ?props :status) ?st]
          				           [(= #{"toread"} ?st)]]}
          				  #+END_QUERY
          
        • 				  #+BEGIN_QUERY
          				  {:title [:h2 "Finished Reading"]
          				   :query [:find (pull ?b [*])
          				           :where
          				           [?b :block/properties ?props]
          				           [(get ?props :type) ?type]
          				           [(get ?props :status) ?st]
          				           [(= #{"read"} ?st)]]}
          				  #+END_QUERY
          
      • Resonance Books

        • 				  {:title [:h2 "Resonance Books"]
          				   :query [:find (pull ?b [*])
          				           :where
          				           [?b :block/properties ?props]
          				           [(get ?props :type) ?type]
          				           [(get ?props :status) ?status]
          				           [(contains? #{"book"} ?type)]
          				           (not [(empty? ?status)])]}
          
    • Template

      • Books

        ```
        				  	- Metadata	  
        				  			  template:: Book
        				  			  template-including-parent:: false
        				  				- title::
        				  				  status::
        				  				  type:: book
        				  				  format::
        				  				  year::
        				  				  topics::
        				  				  genre::
        				  				  tags::
        				  				  icon:: 📖
        				  				  author::
        				  				  url::
        				  				  recommendedBy::
        				  				  start::
        				  				  end::
        				  				  rating:: ⭐️
        				  				  digested::
        				  					- Quotes
        				  					- Liked
        				  					- Summary
        				  					- Permanent notes
        ```
        

Getting Started

How to add a new book?

  • Use cmd + k to create a page for a book as [[Book/Book Title]]

  • Use the book template to populate the page page

Have fun!

19 Likes

Hi, @danzu , and thanks for sharing!

As I’m totally new to Logseq, I kindly ask you: do you think this framework would work for academic research? (i.e.: do you use it for research purposes or just for keeping track of your books?)
And: do you think it would be possible to implement this for PDFs and (YouTube-)videos too?
If so, how do/would you manage your notes?
Thanks in advance for any hint (and, of course, I’m ready for “beta-testing” any solution in my test graph if you needed to)

1 Like

Hi @Hileotech ,

You could use this framework to track books for academic research, but the notes sections would need some enhancement. For example, there is no peer review option in this framework which you might need for a research. I think you can build upon this as required.
You could modify this to track PDF books by linking to the local pdf, via a source:: path_to_pdf. I have not been reading PDF books lately, but I plan on importing some PDF books in the future.
Last, I create a page for a video course where I link chapters pages. The next video training that I will watch will be documented and organized using namespaces.

If you have some idea about how you want to setup some of these up to meet you flow, fill free to reach out. Probably in discord. I am happy to help where I can.

1 Like

Thank you for your answer, @danzu .
Let me try to focus on how to “translate” my research workflow in a framework.

The point, as far as I can see, is that I use many sources for information, most of them aggregated through ReadWise (mainly Kindle and Twitter), but many of them still coming from websites (I mean whole pages, not only “highlights”), “spare” pdf papers I’m managing with Highlights app (and then exporting highlight and notes), many video (mainly Youtube and Vimeo: talks, conferences, lectures and so on) and, of course, some books in PDF format. I don’t use podcasts that much, but I think it could be a big addon

I would like to be able to create a framework (i.e. a predefined set of properties, tags and so on as you did for books) that can take advantage of “linked notes” and, moreover, “unlinked” ones for each and any “thing” (book, paper, Readwise highlight, video transcript… you name it). Ideal scenario is to be able to annotate PDF, take note from videos and podcasts (maybe with timestamps) all within Logseq.
Is it asking too much to a software? I don’t know, but my actual setup involves too many different apps and a “one software to rule them all” solution is slowly conquering me…

I still don’t consider peer reviewing at this stage, because I can’t figure out when/if Logseq will introduce a collaboration feature.

Meanwhile, should any other teacher/researcher have some suggestions, is more than welcome.

As of March 30, 2022, I wasn’t able to get these queries to work. Specifically the part of the query meant to filter on the status value [(= #{"read"} ?st)], didn’t seem to work so I would essentially get a list of all blocks that had a property called “type”.

With help from the discord channel, I was able to update my queries to work as follows:

#+BEGIN_QUERY
{:title [:h2 "Currently Reading"]
 :query [:find (pull ?b [*])
         :where
        [property ?b :type "book"]
        [property ?b :status "reading"]
]}
#+END_QUERY
2 Likes

Thank you @jpjpjp I am planning to provide a v2 of the framework soon to incorporate new changes.

4 Likes

Thank you for the framework. It fits my need quite nicely.
The is just one thing I find a bit … ugly:

I often need to reference a book in other regular text (e.g. in the daily journal. I like my flowing text to be well readable, so I turned off “show braces”.

Now when I reference a book in a text I will always have the “book” prefix visible in the text:

- As [[@/Johann Wolfgang vom GĂśthe]] already wrote in [[book/Faust]] bla bla bla

How could I get rid of these @/ (I use it for people) and book hierarchy prefixes that works on iOS as well as on desktop (i.e. without a plug-in).

You might have found a solution to this already, but thought I’d mention two possible solutions, though they might not be the best or most elegant:

  • Define aliases for the various pages by setting the property alias:: to a shorter name in the first block of the page, e.g., Faust. The disadvantage is that aliases currently show up in the graph view, quickly leading to a cluttered graph.
  • Use links to display page names without the prefixes, e.g., [Faust]([[book/Faust]]).

Any update on this? I am interested in seeing your new v2.

1 Like