org.cannadb.review
A review of a cannabis strain or cut. Reviews are where subjective experience lives — the reviewer's perceived flavors and effects, multi-axis ratings, prose body, and optional images. Reviews reference exactly one strain record via `subject` and aggregate at the AppView layer into per-strain summaries (community-derived effect/flavor percentages, average ratings). Publishing this record IS the claim — every field is contextualized by the publisher DID at display time. CannaDB editorial accounts do not publish reviews.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | cannadb.org |
| Indexed |
Record
record · key tidProperties
body
stringMarkdown-formatted review prose. Optional — a review can be ratings-only or tag-only. Capped at 5000 graphemes (50000 bytes) — enforced by the lexicon to keep reviews modest.
maxLength: 50000maxGraphemes: 5000
Client-declared timestamp when this review was originally written.
effects
arrayEffect descriptors as the reviewer experienced them. Open vocabulary — see `flavors` for rationale. The AppView aggregates across reviews into community-derived effect percentages on the strain (the canonical "top effects" surface visitors expect on a strain page).
A single effect descriptor.
flavors
arrayFlavor descriptors as the reviewer experienced them. Open vocabulary — the lexicon does not enforce a closed set; the AppView normalizes near-duplicates at index time and aggregates across reviews into community-derived flavor percentages on the strain.
A single flavor descriptor.
growRef
string · at-uriForward-compatible AT-URI reference to a grow record (`org.cannadb.grow`, Phase 6) backing this review. Optional and speculative — the grow record type does not exist yet and this field is a placeholder for the eventual review-grow linkage. Consumers should ignore this field until the grow lexicon ships.
images
arrayUp to three image blobs attached to this review. Each image accepts common web image formats and is capped at 1 MB. Reviews are deliberately limited to three images to keep PDS storage burden modest; richer photo galleries belong in grow records (Phase 6).
maxLength: 3
A single review image.
maxSize: 1000000accept: image/png, image/jpeg, image/webp
ratings
refMulti-axis numeric ratings on a 1–5 scale. All axes are independently optional — a reviewer may rate only `overall`, only some axes, or skip ratings entirely. The AppView averages each axis across reviews for the per-strain summary.
AT-URI reference to an `org.cannadb.strain` record (any `kind`). Required. (The lexicon spec does not enforce collection constraints on at-uri; consumers must validate the ref resolves to an `org.cannadb.strain` record and reject reviews whose subject points elsewhere.)
#ratings
objectMulti-axis numeric ratings on a 1–5 scale. All axes are independently optional. Aggregations (averages, distributions) happen at the AppView layer.
Properties
bagAppeal
integerBag appeal rating, 1–5. Reviewer's subjective sense of visual quality of the cured flower.
minimum: 1maximum: 5
ease
integerEase-of-grow rating, 1–5. Distinct from the strain record's `growDifficulty` claim — this is the reviewer's experienced ease.
minimum: 1maximum: 5
flavor
integerFlavor rating, 1–5.
minimum: 1maximum: 5
overall
integerOverall rating, 1–5.
minimum: 1maximum: 5
potency
integerPotency rating, 1–5. Reviewer's subjective sense of strength — distinct from measured cannabinoid percentages.
minimum: 1maximum: 5
yield
integerYield rating, 1–5. Reviewer's subjective sense of how the strain produced — a grower-axis rating distinct from the strain record's structured `yield` claim.
minimum: 1maximum: 5
Similar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
org.cannadb.strain
recordCannabis genetic identity. The same record type covers two levels of specificity, distinguished by the `kind` field: "strain" denotes a broad genetic identity (e.g., "Wedding Cake"); "cut" denotes a specific phenotype, clone, or keeper pheno (e.g., "Forum cut of GSC"). Captures intrinsic identity, structured cultivation profile, and the publisher's contextualized field assertions; subjective experience and measured outcomes live in separate record types (`org.cannadb.review`, future `org.cannadb
-
org.cannadb.strainEdit
recordA field-level edit to a strain's living document (collaborative editing). Targets a strain via `subject` (the anchor record of the entity) and carries a sparse patch: scalar field overwrites in `set`, additive ops on open array fields in `add`/`remove`, and field clears in `unset`. The AppView folds accepted edits over the anchor record to materialize the canonical document; this record is one signed contribution, attributed to its publisher DID. See docs/05-collaborative-strains.md.