eg: `ls ...` should be an an array of homogenous entities (objects) with usually simple key=>value relationships.
Slight variations such as "field contains an array of strings" (eg: tags, groups, file path hierarchy, temperature per each CPU) is also totally fine.
Seeing the wildly differing record types and deeply nested "stuff" in some of the examples weirds me out.
{
"type_cpu": [ ... ],
"type_ram": [ ... ],
"type_network": [ ... ],
...
}
...obviously, in some cases a graph/hierarchy is very useful to be able to traverse, but emitting records and "coalescing" the path into a record-field makes simple operations simple.Example: `hwstats | jq '.type_cpu | .[] | select( .temp > 40 ) | .hierarchy_field`
Don't make me go like `.cpu.bank[0].chip[3].temp` or whatever... just give me "all the CPU's" and then give me a good URI(!!) to describe it or search for it later.
Rationale: coalescing and traversing weird object paths is tough to do dynamically via current shell DSLs, and the URI concept as an ID excellent application.