Diego Cabello

<<<Back to Ents

Date:

Words: 762

Draft: < 5 > · Most recent

Normal Tag -

The Normal Tag is denoted by simple dash. Nesting for a normal tag and all other tag types is four spaces.

Dud Tag +

The Organizational Container vs. Labeler Problem: Let’s say you want to have some tags be used to label objects, and some tags just to organize and contain those tags. For example, you want to label files based on their reading completion and their source format. If you just had plain nested tags, you could accidentally label an object with the literal tag “reading completion” or “format”, which would show up in queries and cause all sorts of issues downstream. So how do you make it so you can’t label objects with organiztiional containers in a human-readable, keyboard-typable format?

If we were to use JSON, there would be no clean and easy way to type it out. Here are the cleanest possible ways to do it:

{
"reading levels":
  ["not read", "skimmed", "partially read", "read", "re-read"],
"format": 
  ["journal", "book", "webpage"]
}
[
  {
  "tag": "reading levels",
  "labeler": false,
  "children": {
    {"tag": "not read",
     "labeler": true,
     "children": null},
    {"tag": "skimmed",
     "labeler": true,
     "children": null},
    {"tag": "partially read",
     "labeler": true,
     "children": null},
    {"tag": "read",
     "labeler": true,
     "children": null},
    {"tag": "re-read",
     "labeler": true,
     "children": null}
  },
  {
  "tag": "format",
  "labeler": false,
  "children": {
    {"tag": "journal",
     "labeler": true,
     "children": null},
    {"tag": "book",
     "labeler": true,
     "children": null},
    {"tag": "webpage",
     "labeler": true,
     "children": null}
  }
]

Verbose and unsightly!

To solve this, ENTS introduces the “Dud Tag”, which is an organizational container for other labelers, but is not a labeler itself. It is demarked with the + icon. It is used as such:

+ Reading Level
    - Not Read
    - Skimmed
    - Partially Read
    - Read
    - Re-read
+ Format
    - Journal
    - Book
    - Webpage

Much cleaner!

Now you can query files tagged with any reading level, or any material format, or any union of the two, without being able to explicily tag a file with “reading level” or “format” literally.

Exclusive Tag *

For an exclusive tag, an object can be tagged with this tag, but if it is, than it can’t be tagged by any of it’s children. It is denoted by an asterix *. It gets its name “exclusive” from it can either label a file itself, or its children can label a file, but not both; and it gets its symbol from behaving similar to a normal tag and a dud tag, but in between them. This is advantageous where, if you have a category where you have some tags in it that label many files, and then you have some other files that could be labeled by the parent tag but there are not enough of them to warrant making another child tag, and then it becomes enough of them where it does warrant making a new child tag, than trying to tag with the new child tag will raise the exclusive error. This keeps the labeling space clean.

Example:

* instruction sets
    - arm
    - x86
    - risc-v 

If I had 10 documents each for ARM, x86, and Risc-V and one document for AVR, it might not warrant creating a new child tag for AVR. So I can tag the AVR documents with the “instruction sets” exclusive tag. The documents tagged with the other instruction sets cannot be tagged with the “instruction sets” exclusive tag, for the sake of keeping a clean tagspace. But if I got more documents for AVR where it does warrant making a new tag “AVR”. Now, if I go to tag my documents with the AVR tag, it will not let it unless the exclusive tag “instruction sets” has been removed, for the sake of a clean tagspace.

Aliases ()

When tagging a file or running a query, it might be faster to have an alias for frequently used tags or tags with longer names. Aliases are denoted inside parenthases () after a tag’s regular name. Aliases can be used on regular tags or dud tags.

Example:

+ Reading Level (rl)
    - Not Read
    - Skimmed
    - Partially Read
    - Read
    - Re-read

Now running lents filter rl will return any file tagged with any reading level.

Potential Future Implementations

Scalars[1-N]

  • assigns a numeric value for the tag to the object

> Enums[1-N]
    - Option 1
    - Option N
  • a scalar with lablers

** Matrix

  • makes a matrix between two or more scalars

/ pick-few tag

  • you can tag an object with only one of this tag’s children’s tags. used in conjunction with regular tag -, dud tag +, exclusive tag +-, or scalars >

& Backreferences

  • Makes a link between two tags. If you reference one tag with the other on the same line than whenever you tag an object with that tag the engine automatically tags it with the other tag.

~ Not

  • Will probably be used with Matrixes

<<<Back to Ents

Made with Sculblog