Add support for link types

I wish markdown had something to embed ‘invisible’ metadata.

How about Open Graph Protocol?

  1. It’s “invisible”. Its just an HTML tag which will be invisible in Preview mode.
  2. It’s already an established standard with documentation.
  3. Fairly simple to write, read, and edit.
  4. It’s widely used across the internet (which means we may even be able to automatically import metadata by simply pasting in a URL into Obsidian): Automatically fetch and import metadata using Open Graph Protocol -> YAML Metadata
4 Likes

These are interesting points. Currently, for Neo4j Graph View, I’m having both a list of typed links like - hasTopic [[note]], and like @msteffens mentioned, I’m thinking of adding the double-colon syntax.

What could be changed here is to move or also allow the list of typed links within YAML frontmatter. Personally, I like seeing them rendered, though. The double-colon syntax would also be completely optional, so complicated syntax is hidden from novice users.

Furthermore, I think an inline syntax like double-colon is important! This is because it’s much more natural to write linearly. If you mention some fact in your text that you want to annotate, it wouldn’t be natural to move to the frontmatter to add this fact in the typed link syntax another time.

3 Likes

Hi @Steve what is Remnote?, is it opensource? (curious)

I’ll add link to original post. I thought every obsidian user know remnote.

I’ve just tried it, but I cannot find the graph you presented.

There is also syntax for adding metadata to any markdown element used already in many implementations.
Request for official inclusion in Commonmark is here: Consistent attribute syntax - #22 by mofosyne - Extensions - CommonMark Discussion

I might post request to recognize this markdown extension here on Obsidian.


Another inspiration from RemNote: Display vertical context in long scrollable document (RemNote-like auto-folding mode)

Is it possible in Neo4J/Cypher for link/relation to be subject or object of another relation?
For Example:

([[A]] requires [[B]].)  implies  ([[A]] is member of [[set C]].) .

Could we use something like attributes with the “::” syntax (like Roam has) to help specify link relationships?

2 Likes

For folks interested in the topic…this article might be interesting:

4 Likes

This is a really well designed graph format!.. thanks!

@tuckytoo
The last code-block in the article about the Gram makes it confusing / does not make sense to me.
IMHO,
(c {when:date`2021-01-21`})
should refer to
<-[:Read]-
instead of
(c:Person)

If it is possible to refer the link as <-[c:Read]-, then it is more useful.
Can anybody contact the author of the article - Andreas Kollegger? I do not have Twitter or GitHub account. @akollegger

Another medium article on Gram

Your observation makes sense to me.
You might imagine assigning a property such as birth date to node c. e.g. (c:Person {born:‘2021-01-21’}), but agree that the date property for when read makes more sense on the [: Read] relationship than the (c: Person) node.

For what it is worth, Gram seems to come from the “Cypher” query language of Neo4j and cypher allows typed properties for both nodes and relationships.

@Emile is a bit of an expert with neo4j and may have a perspective…

I found this thread as I’m in the process of restructuring my vault to better expose the relationship between pages, e.g. if page is a variation, aggregation or contraction with another.

Work-around, not ideal: rather than linking directly in the page, I’ve rewritten my links as footnote reference, and then tagging the footnote itself with the relationship. In the example below, “AG” standands for “aggregation”.

The benefit of footnotes is that it allows for descriptions and elaboration of the relationship.

5 Likes

Interesting use of unicode! I’ve experimented with using symbols in a similar way, for example using one of the unicode bank branch codes to denote a branch from a line of thought, e.g. ⑆ [[link to branch]].

But so far I’m not needing that particular case, though I am using aggregations adopting the term “MOC” from Lion Kimbro & Nick Milo. I’m using unicode / emoji directly at the front of the note name for those.

Example:

  • ✧ mini-MOC
  • :sparkles: MOC

That helps at least distinguish them as aggregations, directly in the filename.

1 Like

Very nice!

For me (and this very much depends on the usage), the “page” and their “relationship” are distinct - e.g. my notes on “empiricism” is a statement of what empiricism is; and it may relate to other cards in different ways (e.g. something that “objectivism” builds upon).

A given page may have many relationships, e.g. an additional meaningful relationship for the topic of empiricism might be “conflict” (e.g. rationalism is at odds with empiricism).

This is all under the context of Leonard Peikoff’s statement that:

Human knowledge is not a mere collection, but a structure; it is a single body of interrelated cognitions. No item of knowledge is “self-contained”; taken as isolated from all the rest, no item even qualifies as knowledge. On the contrary, such an item, being closed to potentially relevant evidence, is a form of unreason, and as such must be rejected. This rejection does not mean a condemnation of cognitive specialization. What the theory condemns is any specialist who claims a logical right to ignore discoveries in all fields but his own, on the grounds that his exists in a cognitive vacuum and is thus self-validating. Ayn Rand called such individuals “compartmentalizers,” and often cited as examples pro-capitalist economists who regard morality as irrelevant to economics.

It boils down to: what do you want your vault to be?

  1. Exposing the relationships between statements, to help spot patterns (conceptualise/abstract) so you can create new ideas (integrate/synthesise) - this incurs overhead in integrating new pages;

  2. Be a dictionary where you declare a page is a type-of something. You can leverage (the awesome) full-indexing in obsidian to quickly retrieve things - however reading a dictionary is a hard way of learning a language.

Yes, exactly.

Niklas Luhmann had one golden rule when creating his notes: Each note had to be related to another note somehow when it was added to his system.

I’ve found this to be an extremely important heuristic to apply when creating notes. If a note is added without being linked from somewhere then it is an island in the sea of knowledge, disconnected from everything else and potentially not to be found again. Intentionally creating at least one forward link expands the web of knowledge in my knowledge development system.

(Exceptions are made where appropriate, e.g. daily notes are not linked “from” anywhere at the time of creation because they exist in a folder in a chronological order, so they are already “linked” by time in a sense.)

More complex inter-note relationships (beyond the point-to-point relationship) can be captured in external outline/structure notes. For example, a note that collects a series of principles together in a particular logical sequence, with each principle being itself a link to a separate note. The principles themselves are standalone units of thought, interlinked with each other and with other notes as appropriate, while this “external” note creates a particular ordered arrangement of the principles as they relate to a single topic.

Organic inter-note relationships are like traversing a graph node-to-node, while the outline/structure notes are like looking at the graph “top-down” and selecting a subset of the graph into a particular relationship.

(Or, for a video game analogy, switching from first-person view to a top-down map view)

1 Like

This is a great idea.
Can you share your flow for doing footnotes? Is that a plugin?

Thanks.

I don’t use any plugins, or [[links]] in the body text, and exclusively use footnotes [^1]. This constraint/consistency might not be appropriate for everyone.

For the footnotes, I define 5 tag types:

  1. distillation - Linking source materials to my own wording of the concept. (there may be many sources contributing to a concept). e.g. wikipedia article for cat; and the cat owner’s association of why cats are good pets.

  2. formulation - Linking concepts to my own extrapolations. e.g. my claim that cats are good, and that the world would therefore be a better place if everyone had a cat.

I also permit 3 relationships between concepts (which form an ontology):

  1. variation - Where similarities are defined. e.g. cats are similar to dogs; and maybe rabbits.

  2. aggregation - Cat is actually “a type of” pet. Cats are also a type of big cats, like tigers and lions. (taxonomy)

  3. conflict - Doesn’t really apply to concept of things; more appropriate to concepts of theory, e.g. maybe the world wouldn’t be better with more cats, as they’d somehow be a nuisance in large numbers.

Workflow is quite simple:

  1. Copy and past stuff into the sources folder - each page being a single article.
  2. Identify concepts - each page being an ideal (similar to zattlekasten).
  3. Link everything together
  4. Spot patterns and create new ideas

Here’s an example of a footnote: [^1]: #distillation [[link-to-source]] - I am using # to “tag” the footnote, hoping that in future someone will write a plugin to manage this :slight_smile:

The relationships I’ve defined suit my purpose well enough, however depending on your needs, you will want to think about the type of relationships you may want to capture.

My only advice is to have a “#unsure” tag. Don’t try to architect the unknown - go forth and embrace uncertainty - sometimes architecture is easier in hindsight, and consistent usage of “#unsure” means that you can easily identify the pages you need to fix. (They will show up in the “Tags Panel”).

9 Likes

I prefer heading as link types. Headings give natural context (relation) and it’s enough for me.

For example in note named car:

## History of car
The first working steam-powered vehicle was designed
—and quite possibly built—by [[Ferdinand Verbiest]], 
a Flemish member of a [[Jesuit mission]] in [[China]] around [[1672]].

And the graph view will show something like this :

[[Car]] – History of car → [[Ferdinand Verbiest]]
[[Car]] – History of car → [[Jesuit mission]]
[[Car]] – History of car → [[China]]
[[Car]] – History of car → [[1672]]

And because I’m a bit lazy to type for each link relation, hehe.

1 Like