Proposed solution using existing syntax for adding metadata/attributes to markdown elements, including links:
(I would prefer extension to YAML or at least JSON)
---
id: NoteMe
title: king Me
aliases: [little king, small king]
---
# king Me
King Me had three children:
- [Alice](noteA){link-type: parent-child}
- [Bob](NoteB){link-type: parent-child, probability: 1}
- [Charlie](NoteC){id: LinkID123, link-type: parent-child, probability: 0.5, paired-link: "C#LinkID124"}
Links would be understood as links between current note/node(subject) and link-target(object).
In the future they could be queried/analyzed/visualized using e.g. Neo4J/Cypher. (Either externally or in Obsidian if it gets integrated with Neo4j/Cypher.)
Initially, link type can be specified by syntax used to assign class ("." prefix), we can even specify multiple relationship types in one link: “[Alice](NoteA){.parent-child .loves}
”. This might cause collision with other uses of classes so there could be dedicated syntactic-sugar for link-type (":" prefix) just like already existing for id ("#" prefix) or for class ("." prefix). Then we would have:
...
# king Me
King Me had three children:
- [Alice](NoteA){:parent-child :loves}
- [Bob](NoteB){:parent-child, probability: 1}
- [Charlie](NoteC){#LinkID123 :parent-child, probability: 0.5, paired-link: "C#LinkID124", updated: 2020-11-24}
The metadata could be assigned to inline links manually or automatically (either permanently or temporarily) by Natural-Language-Processing of surrounding text, e.g. using Aspen.
Except [syntactic-sugar for link-type] which resembles Cypher, this would not clutter the world by any new syntax while allowing full, extensible functionality.
Edit 2020-12-29: Idea to mark link type by colon prefix might be incompatible with marking link-states in css https://www.w3schools.com/css/css_link.asp so we might need to live only with classes and key-value pairs. I do not understand enough CSS yet to determine this.