-
-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ideas #9
Comments
Thank you very much for all these excellent notes. Let me respond to some of this: First, I agree that we really should have a full-text search. That would be the responsibility of the About tags with tags, yes, right now I also do have a video I've recorded, but I don't want to do any sort of advertisement of this package until it is in a repository. I'll see if I can make the text a bit more understandable, though. |
In PostgreSQL it is easy to provide full text search. I strongly suggest switching to PostgreSQL and going away from single user model, single computer model. Collaboration with multiple users is so much more useful. I have handled searches by using function like following:
What it does is creating SQL queary with
and
As that helps in constructing SQL queries to search this and that. On my side this is mostly used function. |
For PostgreSQL: Mastering PostgreSQL Tools: Full-Text Search and Phrase Search - Compose Articles: PostgreSQL: Documentation: 15: Chapter 12. Full Text Search: FOR SQLite: SQLite FTS5 Extension: |
I suggest looking into following design: TECHNOLOGY TEMPLATE PROJECT OHS Framework : Objects are basic content packets of an arbitrary, user and developer
I strongly suggest being able to record any kind of object. It does not mean saving video into database, but if video is on the file system, it would mean indexing the video from file system or putting it in the file system structure devised by program, and note has type of video. I use that approach. See more on that link about Open-Document Hypertext Systems, as following that design makes programs most useful. |
In my opinion, package `ekg' is not opinionated, rather, more human friendly, and personally I can't see it as substitute for other
applications, I see it as unique program.
So I propose changing your introduction: "The ekg module is a simple but opinionated note taking application. It is a substitute for such other emacs applications such as org-roam or denote. ekg stands for emacs knowledge graph."
If I may say, I deal with many tags, tag I consider a class of
attributes or properties to an object.
I have elementary objects, they have their types, subtypes, types can
be actionable or not, there may be additional properties, there are
relations, etc. All those are properties in some sense.
Tags are properties across everything and are in itself important. I
use notion of tag types as well:
And notion that user should be able to enter tag types.
What we like in databases is use of intersection. It implies for me
that the more various sets of properties are there, the better we may
pin point to various destinations.
Practically it means we can better find the note we are looking for.
We can easier find relationships between objects.
Tags as separate properties from object name are useful to create more
intersections. Eliminating tags eliminate usefulness.
Back to searching, I have mentioned intersections. That is basic
principle by which various database based searches work. There are
different tables, different columns, types, classes defined in the
databases.
When searching we can then design functions such as:
How I have understood your idea is that you wish to say that searching
through tags and names of objects is helpful. Sure it is.
But it is not the only way of making intersections, there is number
3. and number 4. and X different ways for intersections.
If we think of merging various properties into "one" to provide better
search results, than I can recommend the full text search, one
reference is here:
Hyperscope full text search with PostgreSQL:
https://hyperscope.link/3/6/7/6/8/Hyperscope-full-text-search-with-PostgreSQL-36768.html
As then, I can update tokens to include names of the tags, to include
the name of object, description, text, language, country, related
currency, names of related people, etc.
I can't say that excluding tags alone is beneficial, but I can say
that including tags is beneficial in various search functions.
I have given you example in PostgreSQL, and I think full text search
in SQLite does not exist. Even building on it is less productive for
future, as it is single user database.
Build products that are multi-user and collaboration based.
In my work I have table tags
You may notice that tag has its own properties. It has its name, and
because tag is addressed by its unique ID, the name can have
spaces. It may be long. It can contain any chars. It can have its
description. It may be in different language.
It may be tagged by three other tags. Why is that useful? Tag once any
object, and computer will update it with any additonal tags. If I tag
something with "Video" computer will tag it with "Media" and "Video",
as maybe that is what user wants. But I do not keep to add relevant
synonyms or relevant tags, I can add just one of them. If that feature
becomes very useful, I would simply provide tagging of tags.
Because tags are addressed by ID as integer and not by name, I can
rename tags on the object without losing the tag from the object. All
objects then appear with the renamed tag!
Then there are tag types. Very useful.
Maybe there is elementary object, like note, speaking about "Technical
School", but that they provide skill of "Optician" is not derived from
the name alone. That is one example among many why tags are useful.
It is however useful concatenating tags with name and searching among
them, that is one of intersections that are helpful to human.
Okay
In my opinion that design is backwards, it does not help.
If it is searching by name, or splitting name into words to search by
those words, then it is not "tag".
Tag is a property separate from object. It may have different name
than anything in the object. I can have "USD" for US dollar as
tag.
Tags are properties of the object that have no special group or class.
It is useful to have tags in existence which are not related to any
object. This is for human to have easier work. What if you have tags
for currencies such as "USD", "EUR", "GBP", and you wish to tag object
with it, but in that moment you did not have "GBP" ready, so instead
of writing it every single time, you can prepare the tag list for user
to select it easily.
Elementary Objects:
https://www.dougengelbart.org/content/view/110/460/#2a1a
My elementary objects have "Currency" property directly attached, and
whatever is more important it becomes directly attached to the
object. Tags are there as dettached properties that may belong to any
object.
Separate functions can be made to automatically relate objects to
tags. Such as making tags out of the name. As that seems to be that
what you designed.
Example is with the object named "NonGNU Emacs Lisp Package Archive"
that may be automatically tagged by tags such as "Emacs" and
"Archive".
That is right and good. My tags may also be of arbitrary
length.
Though tags are useful because they are more simplistic ideas, not
complex.
Their usefulness is derived from their combination, not from their
quality.
Their meaning shall be elementary meaning, not complex meaning.
Their purpose shall be generation of intersections.
A tag like "Emacs" is less useful, as it would find anything about
Emacs. Then "Emacs" combined with "ekg" is more useful. Isn't it?
Using name of object to generate tags is useful. But excluding tags as
such is not.
In my opinion your solution is only one of many solutions. It is not
necessary to be so, it can be implemented in various ways.
That is right, multiple notes shall be available for any possible
relation.
File system is one way of "tagging" and sorting of files. It has
directories, filenames, hierarchical structure and access by variety
of means.
It is up to user to "sort" his stuff, relate to each other. It is not
as flexible as database.
In my opinion your introduction is difficult to comprehend. It is good
if you make video or screenshots.
We speak here of tag types. Think of implementing it. If you implement
"Default" tag type and let user add any other tag type, that way you
will give useful system. Users can then decide that tag belongs to tag
type "Idea", or "Skill" or maybe "Time".
We speak here basically of tags for tags. Or properties of the
tags. And I find it very good notion for future.
I would not do it that way to allow human mistake, for human to add
string with slash, rather using tag types.
I have table
tagging
, if tag is removed from object, it is removedfrom table tagging, the table references tag with elementary
object or with people. But there is use for the tag to remain in
the database, as for future selection of tags.
In this case tag can be related to people object or document
object. There is hundred of other tables, but for those two tags are
most useful.
My tagging is such that I can tag with existing tags or newly created
tags. Tag searching uses function
completing-read-multiple
to allowme finding multiple tags.
The text was updated successfully, but these errors were encountered: