# Link categorization

**URL:** <https://org-roam.discourse.group/t/link-categorization/2486>\
**Category:** Development\
**Created:** [February 28, 2022, 7:09pm UTC](https://org-roam.discourse.group/t/link-categorization/2486 "2022-02-28T19:09:35Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![solrach](https://avatars.discourse-cdn.com/v4/letter/s/ee59a6/32.png) [@solrach](https://org-roam.discourse.group/u/solrach)\
**Post date:** [February 28, 2022, 7:09pm UTC](https://org-roam.discourse.group/t/link-categorization/2486/1 "2022-02-28T19:09:35Z")

</div>

Is it possible to implement link types?  
What I’m looking for is how to use links as verbs (similar to, related, is part of) that connect nouns (notes, ideas).  
Obviously it can be done in the notes as text or headings, but the idea is to implement it in some way to see it reflected in the database, in the roam-buffer or in the ui.

![example links](https://global.discourse-cdn.com/free1/uploads/orgroam/original/2X/b/b9f95c51006f53e7c18f58bfc177abf33cc6e57d.jpeg)

related obsidian forum link  
[Add support for link types - Feature requests - Obsidian Forum](https://forum.obsidian.md/t/add-support-for-link-types/6994/47)

---

<div class="post-metadata">

**Author:** ![danderzei](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/danderzei/32/59_2.png) [@danderzei](https://org-roam.discourse.group/u/danderzei)\
**Post date:** [March 1, 2022, 4:10am UTC](https://org-roam.discourse.group/t/link-categorization/2486/2 "2022-03-01T04:10:22Z")

</div>

Its Emacs, so the answer to “is it possible” is almost always yes.

Sounds to me like a separate Emacs package waiting to be written.

---

<div class="post-metadata">

**Author:** ![solrach](https://avatars.discourse-cdn.com/v4/letter/s/ee59a6/32.png) [@solrach](https://org-roam.discourse.group/u/solrach)\
**Post date:** [March 1, 2022, 4:06pm UTC](https://org-roam.discourse.group/t/link-categorization/2486/3 "2022-03-01T16:06:43Z")

</div>

It’s not as simple as that if you want to integrate it to the buffer or to the graph.

> - Extensions should not modify the database schema. Any extension that requires the caching of additional data should make a request upstream to Org-roam.

What is the simple alternative if the information is not in the database, complicate things by adding another database?

---

<div class="post-metadata">

**Author:** ![nobiot](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/nobiot/32/159_2.png) [@nobiot](https://org-roam.discourse.group/u/nobiot)\
**Post date:** [March 1, 2022, 5:09pm UTC](https://org-roam.discourse.group/t/link-categorization/2486/4 "2022-03-01T17:09:51Z")

</div>

I suggest you have a look at this very popular [post](https://org-roam.discourse.group/t/add-link-tags-feature/171) and follow-on discussion. The link categorisation was discussed extensively at an early stage of v1 and not implemented. A few months later, with v2, Jethro suggested an easy way to implement it without DB change. I think you could also think of more extensive change and propose it to @jethro.

---

<div class="post-metadata">

**Author:** ![solrach](https://avatars.discourse-cdn.com/v4/letter/s/ee59a6/32.png) [@solrach](https://org-roam.discourse.group/u/solrach)\
**Post date:** [March 1, 2022, 11:20pm UTC](https://org-roam.discourse.group/t/link-categorization/2486/5 "2022-03-01T23:20:09Z")

</div>

Hey thanks! @nobiot

I searched and only found a discussion that was basically about types of notes, and not about links as the title suggested

---

<div class="post-metadata">

**Author:** ![JeffBrown](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/jeffbrown/32/254_2.png) [@JeffBrown](https://org-roam.discourse.group/u/JeffBrown)\
**Post date:** [March 7, 2022, 3:24pm UTC](https://org-roam.discourse.group/t/link-categorization/2486/6 "2022-03-07T15:24:17Z")

</div>

Widening the set of types used in the graph is a big can of worms. Once I was able to label your edges, I wanted to group them, and to make statements about them like “this kind of edge should be hidden when I’m reading in public” or “this kind of edge should determine the order of my notes, to the extent possible, when I’m lecturing from the notes”, etc.

I wrote an application called Hode that lets you create not just binary relationships, but relationships among any number of items, any of which can themselves be other relationships. An example would be “\_ did \_ to \_”, which is a relationship among three elements.

> **[GitHub - JeffreyBenjaminBrown/hode: rslt, take five-ish](https://github.com/JeffreyBenjaminBrown/hode)**
>
> rslt, take five-ish. Contribute to JeffreyBenjaminBrown/hode development by creating an account on GitHub.

It was too hard; I’ve basically abandoned the project.

TypeDB is an open-source project (supported by Vaticle, a corporation) with an equally permissive type system. It’s not designed with personal knowledge management in mind, but it could be adapted to it. If I ever try to write Hode again, I’ll use TypeDB. I hope someone else tries before me.

---

<div class="post-metadata">

**Author:** ![Delapouite](https://yyz2.discourse-cdn.com/free1/user_avatar/org-roam.discourse.group/delapouite/32/507_2.png) [@Delapouite](https://org-roam.discourse.group/u/Delapouite)\
**Post date:** [March 8, 2022, 6:55am UTC](https://org-roam.discourse.group/t/link-categorization/2486/7 "2022-03-08T06:55:56Z")

</div>

Thanks JeffBrown for the quick presentation of TypeDB, this database looks quite interesting.

By looking at the image posted by the OP, my first gut feeling would have been to use a graph db, like [https://neo4j.com/](https://neo4j.com/)
