Diego Cabello

<<<Back to Ents

ENTS Specification

Date: 2025 May 14

Words: 513

Draft: 1 > · 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 +-, -+

an object can be tagged with this tag, but if it is, than it can’t be tagged by any of it’s children. the reversal +- is the same thing

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

:::subsection

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