{ "lexicon": 1, "id": "world.geocache.geocache", "defs": { "main": { "type": "record", "description": "A geocache out there in the world", "key": "tid", "record": { "type": "object", "required": ["name", "region", "location", "cacheType", "status", "attributes", "description", "createdAt"], "properties": { "name": { "type": "string", "maxLength": 1000, "maxGraphemes": 100, "description": "The name for the geocache" }, "region": { /* there's potentially some merit in having a specific tag for region, but it could be argued that region could be inferred from the location property. this would make sense if we made the community.lexicon.location.address a required property, as that lexicon only requires a country, and has a property for region and locality... maybe region could be a ref to a ..location.address specifically, and location could be restricted to coordinates or hthree? will need to think about this */ }, "location": { "type": "object", "required": [/* there's a few options for this and all have their merits */] "properties": { "geo": { "type": "ref", "ref": "community.lexicon.location.geo" }, "address": { "type": "ref", "ref": "community.lexicon.location.address" } "hthree": { "type": "ref", "ref": "community.lexicon.location.hthree" } } }, "cacheType": { /* this needs to be fleshed out more when i'm not tired probably would want to define a set of lexicon tokens under world.geocache.geocache.type so they can be extended while preserving cohesion */ }, "status": { "type": "object", "description": "The status of the lexicon", "required": ["value"], "properties": { "value": /* a string would be enough, but maybe it would be best to define a world.geocache.geocache.status record? tokens?? */ } }, "attributes": { /* similar situation to cacheType. opencaching uses badges to represent the attributes. we'd want attributes to be community driven, so tokens would be a good fit? */ }, "description": { "type": "string", "maxLength": 10000, "maxGraphemes": 1000, "description": "A description for the geocache. " }, "createdAt": { "type": "string", "format": "datetime", "description": "Client-declared timestamp when this post was originally created." } } } }, } }