I believe that tagging is one of the most important means (the other two being search and links) to recall academic knowledge. However, well-designed tags structure and consistent tagging methods are hard[never?] to achieve. My hypothesis is over-tagging, within a limited list, on complex academic literature and breaking down long notes into atomic notes will lead to a more effective retrieval of knowledge than seeking for the ideal tags from an ideal list. My general argument is that in the long run, I 'd rather skip reading irrelevant info under the same tags(or groups) than risk missing the relevant literature, and particularly notes, due to under-tagging. The challenge is how to make the tagging process more efficient.
What the script does: tag the document in any way DT allows, and do it efficiently in a unified interface.
The major changes in this version are all about user-experience:
- A fast and really easy to use yet function-rich tag selector.
- All preferences are set in a single dialog box.
- The script is more configurable than the previous versions.
- Each database has its own preference.
- Changing internal preference in the script is no longer required.
This post will focus on the basic features of Tagger V5, where everyone can use. I will post the more specific features of the script later. I will also modify the Stack script V5 to have the same tagging features.
DEMO - Basic usage
For basic tagging, the user only need to enable four preferences
When the user invokes the script at a literature/note, a list is shown with a command section and multiple lists of tags
- The command section includes four functions: add new tags and date tag; filter the list of tags in database; replicate the document to other groups, and exit the selector after tagging.
- A date tag list that suggests a “today” hierarchical date tag, with a tag group structure of YYYY>MM>YYYY-MM-DD. User can add other hierarchical date tag by “add new tags and date tag” acion.
- A list of tags that matches the keywords and another list that matches the hash tags in the document. These two lists are based on DT’s standard functions. The two lists are not shown here because I add a prefix to all my tags and there are no hash tags in a journal article.
- The fouth list is a sorted list of all tags in the current database.
User can select actions and tags at the same time, and to perform actions and taggings repeatedly. The list will be shown again and again until after all of the desirable actions and taggings are completed*
In this example, user has selected three tags, and want to create new tags or new hierarchical date tags at the same time.
User can double click the list, or hit OK to trigger the add new tags action and tagging alltogether.
The script will first assign the tags to the document, then it will show the add new tags dialog. After the two actions are finished, the Tagger list will be shown again without breaking the workflow.
After the obvious tags are assigned, user may want to shorten their long tags list (I have 400+ tags) to a more focused list of tags by multiple string filters:
For example, the user wants to shorten the choices to find tags that are related to “institutions, competition,complexity, logic”. So, partial string-filters are entered.
The filtered tags list is shown
When a user has finished with all sorts of actions and taggings, they can either double click “Tag and exit”, or to include “Tag and exit” in their final selection of tags.
The action of Tagger script is contextual. If a group or no item is selected, the script assumes that the user wants to change the preference; if a document is selected, the script assumes that user wants to tag; if a tag is selected, the script assumes that the user wants to sync the matchsheet of keyphrases with the tags (if “match keyphrases” is enabled in the preference).
The requirements of the script
- You need to download Dialog Toolkit Plus from the Late Night Software website and save it under “/Library/Script Libraries”.
- You need to set up five cmd fields, two of them being essential, the other three are for more custom matching or working together with the Stack script.
-- essential custom meta data fields to be created property mdExFrTagging : "isextag" -- type boolean, value==1 if a main tag groups is to be included in tag list property mdIsContainer : "iscontainer" -- type boolean, value=1 if a group is to be shown as a document container -- end of essential custom meta data fields to be created -- ignore mdtagIs if keyphrases will never be used property mdtagIs : "tagis" -- type "multi-line text", match tags to the plain text of source document -- ignore mdIsCard and mdSourceLink if Stack script is not used property mdIsCard : "iscard" -- type boolean, value=1 for a note that is created from a source sdocument property mdSourceLink : "sourcelink" -- type "URL", used by notes to hold the link to the source document -- end of -- ignore these two cmd if the user is not using stack script
The Script. Enjoy
TaggerV5b4.scpt.zip (145.9 KB)