Tag Vector Series: Table of Contents
- Tag Vector: Part 0: Introduction
- Tag Vector: Part 1: Tag Vector Convention
- Tag Vector: Part 2: History of the Tag Vector Convention
- Tag Vector: Part 3: Future of Tag Vector System
Tag Vector is a system to connect "tags" with vector arrows. The vector demonstrates the contextual relationship between tags. The tags are in relation to each other. The relationships between tags are relative to each other on inference levels. A tag in a vector has a higher ↑, lower ↓$, or the same inference level compared to other tags. [1].
The tag person has a higher inference level than name as name is an attribute of person.
const person_name = 'Elon Musk'
// person & name are connected as a 1 dimensional right-arrow vector: person->name
// person & name are tags
Inferred vectors can also run left
<-Is inference, vectors can also be in the left direction:
const name_person = 'Elon Musk' // name is inferred to be downstream of person // The vector is name<-personDefault Direction when tags are on the same inferential level
If two tags are on the same inferential level, such as
person&company, the vector arrow will be->by default.const person_company = { name: 'SpaceX' } // person->companyThe default direction can also be
<-(left). A<-default direction should be documented. Future tooling will include the default direction for code & text analysis.// <- default const company_company = { name: 'SpaceX' } // company<-personOverriding the Default Direction
The default direction can be overridden in code with a comment above or before the statement.
// <- const company_company = { name: 'SpaceX' } // company<-personTag Vectors with 3 or more tags
A tag vector composes of any number of tags. Apply the inference level rules to the first & last tag. In the following case:
const company_person_name = 'Elon Musk' // inferred as company->person->nameInfer the
company&nametags against each other.companyhas a higher inference level thannameso the inferred direction is->. Conversely:const name_person_company = 'Elon Musk' // inferred as name<-person<-companyis in the
<-direction from inferringnamehaving a lower inference level thancompany.An ambiguous inference level follows the same rules above:
const person_registry_company = { name: 'SpaceX' } // person->registry->companyor
// <- default const company_registry_person = { name: 'SpaceX' } // company<-registry<-personmulti-dimension tag vectors
Compose tag vectors into a multi-dimension tag vector.
const highest_net_worth__company_person_name = 'Elon Musk' // highest->net->worth-->company->person->nameThe multi-vector is composed to two vectors
highest->net->worth&company->person->namewith a-->. Note there are two underscores__used to join the single underscore_tag vectors.Additional dimensions can be chained together:
const as_of_2023__highest_net_worth__company_person_name = 'Elon Musk' // as->of->2023-->highest->net->worth-->company->person->nameThe inference levels of the name vectors are compared, with the more abstract has a higher inference level than the concrete. In grammar, the predicate
as->of->2023has a higher inference level than the subjectcompany->person->name.Continuing with inference levels in grammar; an adjective, adverb, preposition, or conjunction
aswould be more abstract than a noun2023.
Data Structure Shape
The Tag Vector Convention can encode the shape of the data structure.
Array
const company_person_name_a = [ 'Elon Musk', 'Mark Zuckerberg', ] // company->person->name->a(array)Multi-dimensional Array
const company_a_person_name_aa = [ ['Elon Musk', 'Zachary Kirkhorn'], ['Mark Zuckerberg', 'Susan Li'], ] // company->a->person_name->aa // A 2-dimensional array, company x person_nameHigher dimensions can also use a number to express the dimensionality.
const d1_a_d2_a2_d3_a3_d4_a4:number[][][][] = [ // d1 [ // d2 [ // d3 [ // d4 1 ] ] ] ]
Record
const company_id_R_ceo_name:Record<string, string> = { 'tesla': 'Elon Musk', 'facebook': 'Mark Zuckerberg', }Map
const company_id_M_ceo_name:Map<string, string> = new Map([ ['tesla', 'Elon Musk'], ['facebook', 'Mark Zuckerberg'], ])
