# Schema Reference — Retail

Vertical schema for `businessType: "retail"` — shops, boutiques, online stores, product sellers.

This reference extends the base schema. All base node types remain valid. Load `schema-base.md` first.

When loading this reference, confirm: "Using schema-base + schema-retail".

---

## Additional Node Types

| Entity | Neo4j Label | Schema.org Type | Required Properties |
|--------|-------------|-----------------|---------------------|
| Product | `Product` | `schema:Product` | `accountId`, `name`, `sku`, `description`, `price`, `category`, `stockLevel` |
| StockMovement | `StockMovement` | `cdm:Activity` | `accountId`, `product` (id), `quantity`, `direction` (in/out), `reason`, `date` |
| PurchaseOrder | `PurchaseOrder` | `schema:Order` (subtype) | `accountId`, `supplier` (id), `lineItems`, `orderDate`, `expectedDelivery`, `orderStatus` |
| StoreLocation | `StoreLocation` | `schema:Store` | `accountId`, `name`, `address` (id), `openingHours` |

### PurchaseOrder vs base Order

`PurchaseOrder` is the retail-specific label for supplier-facing orders (restocking, procurement). Use `PurchaseOrder` (not `Order`) when ordering from a supplier. Customer-facing orders use the base `Order` label.

---

## Relationship Patterns

```
(:Order)-[:CONTAINS_PRODUCT]->(:Product)
(:Product)-[:SUPPLIED_BY]->(:Organization)
(:StockMovement)-[:AFFECTS]->(:Product)
(:PurchaseOrder)-[:FROM_SUPPLIER]->(:Organization)
```
