We have a very nice rel attribute, which has been part of HTML since the early days, but it is constrained to the three types of link element <link>, <a> and <area>… as if these are the only ways that anything can be related to anything else.
But what if we want to express other kinds of relationship between parts in an unambiguous, machine-readable way?
Consider these relationships (e.g. between datapoints, entries, cells, items or whatever):
- supports/corresponds
- addresses/handles
- contradicts/negates
- is an outlier/special case
- is within/inside (a limit, set or boundary)
- is beyond/outside (a limit, set or boundary)
- is part of
- relates to
- includes
- is (on) a boundary
- matches
- connects to
- leads to
- is correlated with
- comes from
- refers to
- duplicates
- is the same as
- is opposite to
- is similar to
- is singled-out (different from “in focus”, and also from “selected”, because read-only/non-operable)
- filters/reduces
- generalizes/expands
- is congruent with
- is complete
- is incomplete
- is valid/approved
- is “dirty”/unsaved
- may be obsolete
- has new content
- is pronounced as
- is a synonym of
- is an antonym of
- suggests/implies
- is associated with
- is current
This list is not exhaustive. Different problem domains will have their own jargon.
Something like rel for non-link element types would permit greater semantic richness, which would be good for SEO, accessibility and machine learning - ultimately, it would move us towards the holy grail called the semantic web.
Or… why don’t we open up rel, and permit it on all element types? We could also expand the range of tokens/values that are permitted in such cases.
Thoughts?