graph { graph [engine:dot rankdir:TD clusterize:false applyCss:dark] mdd_structure -> definition [reverse: false] definition -> fragment [reverse: false] fragment -> fragment_address__reference [reverse: false] fragment_address__reference -> meta_data [reverse: false] fragment_address__reference -> trail [reverse: false] mdd_structure *= definition [reverse: false] definition *= institutes [reverse: false] institutes *= nomen [reverse: false] institutes *= inline_code [reverse: false] institutes *= data_codeblock [reverse: false] institutes *= link [reverse: false] institutes *= list [reverse: false] list *= heading_in_list_ [reverse: false] institutes *= image [reverse: false] image *= image_as_value_placeholder [reverse: false] image *= image_as_projection_instruction [reverse: false] institutes *= heading [reverse: false] heading *= url_in_heading [reverse: false] heading *= image_in_heading [reverse: false] heading *= code_in_heading [reverse: false] definition *= operations [reverse: false] operations *= refactoring [reverse: false] operations *= mdt_transclusion [reverse: false] operations *= infobean [reverse: false] mdd_structure *= internal_links [reverse: false] internal_links *= approach__one [reverse: false] internal_links *= approach__broken_refs [reverse: false] mdd_structure *= nomen [reverse: false] mdd_structure *= mq_markdown_tricks_and_utils [reverse: false] mdd_structure [z: 9.5 @html: "
mdd structure
" nomen: "mdd structure"] definition [z: 4.75 @html: "
definition
• markdown is a linear tree of headings and their plain-text content
• the fragments (heading and its body) are
not nested
• they are rather connected, and the logic
is simple, but may vary
• the order of peers is determined (TLDR)
• when text is read linear
• mdd is a markdown graph
• think of it as when many (markdown) spheric trees are combined into a graph
• a nomen can repeat
• the order of peers has no meaning
• TODO critical intention : peers must be unique
" nomen: "definition"] fragment [z: 2.375 @html: "
fragment
• its the block from a heading until start
of another heading or end of text
• it has the heading and the body, which
is a markdown text (without heading)
• see institutes for complication
" nomen: "fragment"] fragment_address__reference [z: 1.1875 @html: "
fragment address/reference
• each fragment has a deterministic
reference
• its a coordinate system reference
• two main approaches:
• it can be the absolute path to the file
plus path in the document tree
• what exactly is the path in the document
tree?
• e.g. it could also be the line number...
• it can be an uniq id; maybe a classic
counter
• pandoc style # label {#uniqId} 
• ? references will need to be refactored:
• after rename,move,delete etc
• TODO what features of the ref do we
need?
• short?
• deterministic?
• not need to modify the linking papers
" nomen: "fragment address/reference"] meta_data [z: 0.59375 @html: "
meta-data
• aka frontmatter
• a reference offers meta data storage
" nomen: "meta-data"] trail [z: 0.59375 @html: "
trail
• from refs a trail can be constructed
• like a path, but in both directions
• a glob-like query syntax is possible
• like a css selector, but in both
directions (reversed when face-ing
parent)
" nomen: "trail"] institutes [z: 2.375 @html: "
institutes
• mdd structures with a strongly defined
semantic
" nomen: "institutes"] nomen [z: 1.1875 @html: "
nomen
• TODO explain
• its the text of the heading
" nomen: "nomen"] inline_code [z: 1.1875 @html: "
inline code
• just a kind of a quick bold
• but still differentiable from normal
bold
" nomen: "inline code"] data_codeblock [z: 1.1875 @html: "
data codeblock
• there is a way to define a JSON like
data of a fragment
• any codeblock with data is a JSON
• all such blocks are parsed and meld
together
• the resulting JSON is the data of the fragment, and is stored in
ast-lake
so for example:
 { "test": 10,
"deep": { "down":
123 } } 

and then later:
 { "more": true } 
both "data-blocks" produce one
data for this fragment: note: this is
BTW not a data block.
 { "test": 111,
"more": true } 

ok?
" nomen: "data codeblock"] link [z: 1.1875 @html: "
link
• as a syntax its an assignment
• =%5B1,2,3%5D⸨=%5B1,2,3%5D⸩
• =%7Bwhatever:1%7D⸨=%7Bwhatever:1%7D⸩
• why not heading?
• good reason: headings are not linear,
body text is
• using links we could write a program in
the body of fragment
" nomen: "link"] list [z: 1.1875 @html: "
list
" nomen: "list"] heading_in_list_ [z: 0.59375 @html: "
heading in list?
• example: - # this 
• meaning: ??
" nomen: "heading in list?"] image [z: 1.1875 @html: "
image
" nomen: "image"] image_as_value_placeholder [z: 0.59375 @html: "
image as value placeholder
" nomen: "image as value placeholder"] image_as_projection_instruction [z: 0.59375 @html: "
image as projection instruction
• reflection
• echo << prg
• see infobean
" nomen: "image as projection instruction"] heading [z: 1.1875 @html: "
heading
" nomen: "heading"] url_in_heading [z: 0.59375 @html: "
url in heading
• example: # fragment://../main.mdd 
• meaning: adjacent content for the
referenced fragment
" nomen: "url in heading"] image_in_heading [z: 0.59375 @html: "
image in heading
• m4 divert
• example: !【fragment://../main.mdd】  fragment://../main.mdd 
• meaning: include, replaces self with the
fragment
• join with :transclusion
" nomen: "image in heading"] code_in_heading [z: 0.59375 @html: "
code in heading
• meaning: ?
" nomen: "code in heading"] operations [z: 2.375 @html: "
operations
" nomen: "operations"] refactoring [z: 1.1875 @html: "
refactoring
• autocorrect urls into links. fetch page
info
• fix broken internal links
• :todo
" nomen: "refactoring"] mdt_transclusion [z: 1.1875 @html: "
mdt transclusion
• see 【transclusion
" nomen: "mdt transclusion"] infobean [z: 1.1875 @html: "
infobean
• image as placeholder for TOT
• its not mdt dependend
" nomen: "infobean"] internal_links [z: 4.75 @html: "
internal links
• first define strictly the terms:
• THIS: means the fragment we are standing
on
• to link: means to be able to walk from
source (the fragment mentioning a ref)
to the target (to the fragment which
contains the ref)
• ref: TODO (see#/paper/paper/mdd-structur⸨#/paper/paper/mdd-structur⸩)
• trail: TODO
• what is the objective of linking?
• keep other fragments referencing THIS
correctly
• keep meta-data of THIS fragment
correctly linked to THIS
• what is the subject of linking?
• fragment
• can more then headings be linked?
• can a link be linked?
• paragraph, table, cell, image ?
• what is the lifecycle of the problem?
• can we hook the actual event of change
and intercept it? so correct it
immediatelly at the moment of change?
• or we need to expect to handle it
ex-post? so anytime after the text was
changed, and still be able to correct
it.
• or?
• should we expect the text if changed in
repolero codeditor only? or also in an
external editor? or external refactoring
opeation?
• problem of sync
• keep in sync the source and targets
• also keep the meta-data in sync
• when would refs change?
• rename the heading of a fragment
• rename the PARENT heading of a fragment
• move the fragment to different location
• renaming a heading means:
• delete a ref
• create a new one
• and optionally!: rename old links to the
new one
• then there is also delete...
• see 【similiar software/internal links
problem
" nomen: "internal links"] approach__one [z: 2.375 @html: "
approach: one
• its a conflict: natural id VS real id
• real id:= heading
• absolute real id:= ?trail of which ids?
• random id:= ?
• natural id:=?
• nominal id:= offset
• we could have dual id
" nomen: "approach: one"] approach__broken_refs [z: 2.375 @html: "
approach: broken-refs
• ex-post, still serial
• we do have dual id:
• nodes.id(nominal) + nodes_ref.ref(real)
• at paper-write
• backup deleted nodes
• if linked or has metadata
• ...will be deleted at fixed
• can be run ex-post
• series of:
• paper:broken-report
• pairs blind refs with
• deleted nodes
• newer nodes
• arms candidates
• alowes to submit decisions on merge
• paper:broken-fix
• executes merge
• 
" nomen: "approach: broken-refs"] mq_markdown_tricks_and_utils [z: 4.75 @html: "
mq markdown tricks and utils
• https:/mqlang.org⸨https:/⸩
• GitHub - harehare/mq-conv:⸨GitHub - harehare/mq-conv:⸩
• notes on markdown
• with a double-space you can achieve
multiline text for ever each line must
end with double stop
" nomen: "mq markdown tricks and utils"] }