Links as RDF tuples or edge properties for links

I was wondering, is it possible to put properties on links (edge properties) using wikilink or backlink approach. In other words, will it be possible to achieve something like RDF triplets/tuples (subject, predicate, object)

The following list is just for demonstration purposes:

  • [[x]] [[depends_on]] [[y]]
  • [[author1]] [[hypotesize]] [[ideaA]]
  • [[paper1]] [[shows|proves]] [[ideaA]]
  • [[conceptX]] [[build_upon]] [[ideaA]]
  • [[paper1]] [[cites]] [[paper2]]
  • [[paper1]] [[cited_by]] [[paper3]]
  • [[paper1]] [[conflicts]] [[paper4]]

in this example, while viewing the note for paper1, in side panel, we should see it cites paper2, was cited by paper3 and it conflicts with paper4.

Ideally, it would be nice to have edge properties, as in Neo4j, and in graph view we might see that:
author1 --hypothesize-> ideaA <-shows-- paper1 --cites-> paper2


Wow! I went deep into the Neo4j rabbit hole a couple of years ago. But I didn’t have a use case of my own to pursue Neo4j further. Besides, I found that not having a friendly GUI (as in MS Access or Filemaker with SQL databases) really made Neo4j cumbersome for me. But if I saw inspiration for a Zettelkasten hosted in Neo4j, I would be back into it in a heartbeat.

1 Like

Hi @kdjamesrd, I’m glad we have similar interest. As you mentioned having Neo4j within markdown files might be difficult. But I noticed another interesting implementation; Semantic MediaWiki.

This example is taken from help page:
In Berlin page, you can have a entry like this: [[Germany]] which will make straight (an ordinary link, no properties), however, Semantic MediaWiki allows, link with properties with this syntax: [[Is capital of::Germany]] . Now, we have special link between Berlin and Germany. You can have as many “properties” as you like. What about [[Has population::3,396,990]] ?

This is just the beginning. The connections are kept in SQL database (as rdf tuples AFAIK) so SPARQL queries are possible. For example,

 [[Located in::Germany]] 
 |?Area#km² = Size in km²

will generate a table of cities in Germany, listing their populations and areas. Help section about inline queries has more examples and explanations.

Wouldn’t it be cool to have semantic links between markdown notes? :wink:


I can imagine this existing as a plug-in. Hmm! Interesting ideas!


Here’s a markup language, Aspen, which converts plain text into graph (to Neo4J, to be exact, via Cyper). At the end, we have edge properties for the connections.


That is a cool project! Thanks for sharing.

1 Like

that suggestion is a game changer. I think any software implement this functionality will transform writing apps. beyond that dream a writing app that can query Wikidata via sparql. use sparql results as variable or obsidian note. will return obsidian to living organism. don’t mentioning using api request results. All in one knowledge management base for individuals an organisations. hard to implement I guess.
Dear Alper Yılmaz those I wrote is my dream app. It’s also absolutely need for academic works. By the way Türkiye’den selamlar :slight_smile: