Allow to reference blocks in three ways: by ID, name, namespace

We already can link to blocks by ID:

- id: 1234
  some block content
- link to ((1234))

This feature request suggests two new ways to reference blocks: by 1) name 2) namespace.

(1) Reference blocks by (global) name

- name:: my first block
  block 1 content

, which can be linked from other places by ((my first block)).

(2) Reference blocks by namespace

mypage.md:

- name:: /my block parent
  some parent block content
  - name:: /child
    some child block content

Idea is to have block names relative to containing page (see Block reference to allow ((page-name#block-ref-name)) not just UUID) or other parent blocks.
Parent block can be referenced by ((mypage/my block parent)).
Child block can be referenced by ((mypage/my block parent/child)).

(Bonus)

Allow to nest pages tags/names, as suggested in Can't create a tag with nested page links. For example:

- name:: Some idea about [[Logseq/Block]]s and [[Logseq/Namespace]]s
  block 1 content

It will allow to reuse and compose already given names dynamically.

Additional note:

builds up on Alias property for blocks.

Addition 2: The bonus thing with nested tags already seems to be partially implemented, but buggy… Here is a bit more info on the topic.

Nested tags would fit in nicely with this feature request. I’d suggest to either implement them properly or drop them completely.