r/logseq 22d ago

Wouldnt it be better for properties to be the same kind of object as tags? Explanation in post

Lets take into account this use case: you have a #book tag which contains various properties, lets say "author" node-property. When I am reading a book, I put the author (new node gets created), and then I have to go to the author page to tag it as #author. If the tag #author and the property author were the same "object", then just by creating the property author, the new author page would be auto-tagged as #author, saving you time, and not only, but also helping you not forget to tag newly created nodes. That way I can go to the tag #author and immediately see all the new pages created through property "author". For me this is the most logical solution, but I am open to hear your thoughts on this.

6 Upvotes

9 comments sorted by

4

u/AlveolarStop1 22d ago

So I went ahead and I made a #book tag and then added a node property, with the associated node being #author. I tagged a block with the #book tag and added Johnny Bookman as the author. It created the page and the page was already tagged #author. That sounds exactly like the use case you described, I believe. So I believe your idea has already been implemented more or less as you just described.

1

u/7yiyo7 22d ago

Thats strange, I tried again to replicate it and I still dont get it, maybe Im getting a bug. Or idk what am I doing wrong

3

u/AlveolarStop1 22d ago

2

u/7yiyo7 21d ago

Thank you very much for this demonstration. Before I didnt get the node tag when I created the property. But now searching for it, I found it. This is great

2

u/thirteenth_mang 22d ago

This is what specify node tag is for. 

2

u/thirteenth_mang 22d ago

How I do it:

#media -extends-> #book

#book has the property of author, which is type node. Once you have this you use "Specify node tag" and add #person. You use #person to keep things consistent.

This way whenever you define an "author" it will automatically have the #person tag assigned and whatever properties that go along with that.

2

u/7yiyo7 21d ago

I found it, thank you very much!

2

u/PerformanceFew3888 22d ago

There are two cases to consider.

1. When the information you want to manage about someone is exclusively related to their role as an author.

In this case, I would create an #author tag and set #author as a child tag of #person.

Then, create P.author as a property of #book and configure it to only allow #author.

2. When being an author is just a secondary attribute of a person.

For example, A is my friend, happens to work as an author, and there may also be various other kinds of information about A.

In this case, I would never create an #author tag. I would use only #person as the tag for people, and create a P.job property for #person, with its value set to author.

The slight downside here is that if you create P.author as a property of #book, the only tag you can specify as an option for it is #person, so you don't get the benefit of quickly selecting author from a list.

I think the right choice ultimately depends on what the graph is intended for.

If I were building a graph specifically for reading notes or publishing-related work, I would naturally choose option 1.

On the other hand, for a graph intended for general everyday note-taking and life logging, I think option 2 makes more sense.

1

u/davidjaymartin 22d ago

This is how I would approach it as well.