What are ID links vs. block IDs vs. page IDs?

When I wrote the first draft of the Glossary, I put in definitions for my understanding of block IDs and page IDs, but after The Great Refactoring ™ :grinning_face_with_smiling_eyes: I’m not sure those descriptions are still valid, and I recently saw a post referencing ID links, which I think is an org-mode term, and I don’t know if people using Logseq with markdown have access to ID links or not.

Can someone explain the differences between these three terms in the current version of Logseq? We can start with a basic explanation, but a full explanation for the documentation should explain and give examples of the terms themselves, in what contexts the user can see them, and how they work the same/differently in the context of Markdown links, wikilinks, and embeds. Thanks!

Hi @Cobblepot,

Without knowing the logseq internals I assume block ID and page ID are the internal logseq ID’s of blocks and pages… Presumably created and existing only in the logseq internal datascript database?

ID links is a feature witinin Org mode. It’s one of many types of links that are supported in Org mode to be fair. It is described in the Org mode manual under the “Hyperlinks” section, more specifically in the list of External Links.

It works by first assigning ID’s to files or headings in Org mode files. Ex:

example file for ID links.org:

:PROPERTIES:
:id: b4fef5a4-f2e5-402e-826c-845bd30e08ff
:END:
#+TITLE: A testfile with file property drawer and ID starting on b4

* A heading with property drawer and ID starting on 2021
:PROPERTIES:
:ID:       20210625T105042.647824
:END:
Some content.

Those ID’s can be used in hyperlinks. I.e. another file can have links to refer to the two locations above, like this:

example file with ID links.org:

- [[ID:b4fef5a4-f2e5-402e-826c-845bd30e08ff][Link to the previous file]]
- [[ID:20210625T105042.647824][Link to the heading within the previous file]]

In Org mode an ID can be any unique string. Built-in support exist for generating ID’s as UUID or timestamp as exemplified above.

In logseq, since version 0.2, ID links using UUID-ID’s are supported (:heart:).
(A feature request exist for logseq to also allow ID links using arbitrary ID’s: Allow links to ID's that are not UUID · Issue #698 · logseq/logseq · GitHub).

Does this make sense? Best /G