whosonfirst-categories

Categories

IMPORTANT: THIS IS WORK IN PROGRESS.

Right now it is as much about just putting things down on paper to look at them as it is actually deciding the how or the what of anything.

It's like triples... but with a point of view

Points of view

At the moment there is only one point of view. The point (sorry) is there can be others but there aren't yet. You know, like this:

The default point of view, to start with, is essentially the tyranny of the commons. It is "stuff people search for" and other things can be easily ranked and quantified in to something you might understand as the popular or dominant opinion.

Example points of view might include:

  • consensus
  • local
  • tourist

Classes

The view from 50, 000 feet, approximately. These are high level buckets of human activities. The convention and best practice for classes is that there are roughly only (10) of them per point of view.

Classes are parented by points of view. Classes may be shared across multiple points of view. Example classes might include:

  • eating
  • drinking
  • industry
  • natural

Categories

This is an unfortunate name. We should find another one.

The view from 10, 000 feet approximately. This is like when someone asks you how your day was and you're not the boring person who answers the question in detail.

This is more like saying that you threw your laptop across the room rather than why.

The convention and best practice for categories is that are roughly 10x of them relative to their parent class.

Categories are parented by classes. Categories may be shared across multiple classes. Example categories might include:

  • restaurant
  • department-store
  • veterinarian

Sub-categories

This is an even more unfortunate name than "category". We should find another one for this, too.

This is a free-for-all. Essentially these are just tags with a parent (sub-category) and a grandparent (category) and some serious sins-of-the-father baggage (point of view).

There can be an arbitrary number of sub-categories for class/category pair.

Sub-categories are parented by categories. Sub-categories may be shared across multiple categories. Example sub-categories might include:

  • afghan
  • chinese
  • bagels

Tags

You know, words. Or short sequences of words. Not paragraphs. When in doubt, not this:

https://collection.cooperhewitt.org/media/page414

Tags are parented by sub-categories (and maybe categories). Tags can be shared willy-nilly. Example tags are left as an exercise to the reader.

Naming conventions

Naming conventions for keys/properties in any JSON representation of a type (class, category, etc.)

id

Brooklyn Integers, yo.

name

This is a URL-safe name that is unique across its type (class, category, etc.) and ideally unique across all types. Names may not contain colons (:) for reasons that are explained below.

label

A human-readable display label. (Something something something translations and localizations...)

class

This property would be defined in the definition for a category and be a list of well-defined structured strings denoting the point of view and class (that the category belongs to). For example:

"name": "restaurant", "class": [ "consensus:eating", "tourist:eating", "local:nomnomnom" ], 

Strings should be parsed left-to-right, splitting on colons. The position and order of each part of the string corresponds to a specific type:

POINT-OF-VIEW > CLASS  

Each part of the exploded string points to the URL-safe name (and by extension filename) for that type so that you can easily refer to points-of-view/POINT-OF-VIEW.json and so on.

category

This property would be defined in the definition for a sub-category and be a list of well-defined structured strings denoting the point of view, class and category (that the sub-category belongs to). For example:

"name": "afghan", "category": [ "consensus:eating:restaurant", "local:nomnomnom:restaurant" ], 

Strings should be parsed left-to-right, splitting on colons. The position and order of each part of the string corresponds to a specific type:

POINT-OF-VIEW > CLASS > CATEGORY 

Each part of the exploded string points to the URL-safe name (and by extension filename) for that type so that you can easily refer to categories/CATEGORY.json and so on.

Translations and localization

See also: How we handle place names in Who's On First

Gotchas

Homonyms

Sigh...

Counts (for things like sub-categories)

Or more specifically the absence of any sub-categories for class:category pair. Yeah, that's a thing...