Products quantities
How to handle it
Logic to handle it
Existing libraries to parse weights and quantities
Using Wikidata
- Translations and aliases of units
- weight unit list
- units of volume
Possible calculations
- Weight per item
- Is the same item always the same weight (ham slices)
- Useful if you eat one of the cakes in the packaging, and want to know how many calories you ate without having to weight the cake
- Percentage of water
- Useful to calculate actual cost if we know the price
- Useful to fix calorie calculation for some products
- Calculate packaging weight by making the difference between actual weight and advertised weight
- Calculate weight per volume for products (1dL of water is 1kg, but this changes for various products that also have a mention of their volume)
- Some products will have multilingual weights
- we can check that the conversion is well done if we have both values
- we can display the value in several metrics if we have a sanitized value in one metric
Generic approach
The real-world quantities for products as used by the users us a far from ideal. However it is possible to find some common approach. (At least we try here)
- to indicate times, either a "*" or a "x" can be used;
- the generic formula is: multiplier * quantity size_unit for units
- multiple formulas are distinguished by a ";"
- multiplier indicates how often a quantity unit is used, i.e. 6 (25 cl bottles). This is a number.
- quantity the size of the units in size_units, i.e. 25 (size) cl (size_unit) bottles (units). This is a number.
- size_units is the unit for the size parameter, i.e. kg, ml or cl. This is an enumerated?
- unit is the element the numbers and sizes refer to, i.e. pot, bottle, sack, etc.
Some remarks:
- not all 4 elements are always specified, eg 250 g means 1*250 g for the entire product
- sometimes more than one quantity is specified, e.g. 250 g (5x50 g) might mean 1x250g for the entire product OR 5 50g pots
- there are exceptions, such as multiple multipliers.
- naturally users do not use this formal approach, but most quantities can be translated to this approach.
Test: To test this approach the examples found in France have translated to this formal approach:
Quantity as stated by user | Multiplier | Quantity | Size_unit | Units |
---|---|---|---|---|
1 kg (8 pots) - [2 x (4 x 125 g)] | - | 1 | kg | - |
or | 8 | - | - | pots |
or | 2x4 | 125 | g | - |
275 g [250 g + 25 g (10 %) gratuit] | ||||
2 * 400 g (800 g) | ||||
4X100g | 4 | 100 | g | - |
2*25g | 2 | 25 | g | - |
200 g [160 g (2 x 8 pièces) mini-nems + 40 g sauce nuoc mâm] | ||||
211,5 g (9x23,5g) | - | 211,5 | g | - |
or | 9 | 23,5 | g | - |
220g (2 unités, 2 x (60 g + 50 g)) | ||||
2 x 21.5 g = 43 g | ||||
300 g (15 biscuits de 20 g) | ||||
1 Litre | - | 1 | litre | - |
18tranche | 18 | - | - | tranches |
375 g, 30 pièces | - | 375 | g | - |
or | 30 | - | - | pièces |
240 g (12 Portions) | - | 240 | g | - |
or | 12 | - | - | portions |
400 g (12 à 18 bouchées) | ||||
Poids net 190 g, poids net égoutté 140 g | ||||
contenance : 4250ml, poids net total : 4000g, poids net égoutté : 2210g | ||||
3 x [200 g (130 g net égoutté), 212 ml] | ||||
330 g (dont 180 g net), 370 mL | ||||
28 g - 20 dragées | - | 28 | g | - |
or | 20 | - | - | dragées |
260 g (26 portions de 10 g) | ||||
130 g pour 20 galettes | - | 130 | g | - |
or | 20 | - | - | galettes |
280 ml - 310 g | ||||
25 sachets | 25 | - | - | sachets |
220 g (1 personne) | ||||
128 g (16 bâtonnets de 2 cubes) | ||||
12 (calibre Moyen => 53 à 63 g) | ||||
8 sachets de 4 | ||||
400 g, 425 ml (3 douzaines) | ||||
228g (4x57g) / 48 cl (4x12cl) |
Countries
France
Product name | Quantity as stated by user | Product page URL |
---|---|---|
Brassé nature | 1 kg (8 pots) - [2 x (4 x 125 g)] | (link) |
Emmental Coeur de Meule (28 % MG) | 275 g [250 g + 25 g (10 %) gratuit] | (link) |
Basilico | 2 * 400 g (800 g) | (link) |
Frais Malo Sucré | 4X100g | (link) |
Twix | 2*25g | (link) |
16 mini-nems Poulet, menthe, Légumes, coriandre - Précuits - Surgelés | 200 g [160 g (2 x 8 pièces) mini-nems + 40 g sauce nuoc mâm] | (link) |
9 barres au chocolat au lait et aux céréales | 211,5 g (9x23,5g) | (link) |
Fondant au chocolat | 220g (2 unités, 2 x (60 g + 50 g)) | (link) |
Kinder Bueno | 2 x 21.5 g = 43 g | (link) |
Prince Goût Chocolat | 300 g (15 biscuits de 20 g) | (link) |
Eau minérale Contrex | 1 Litre | (link) |
Brioche Harrys Tranchée la recette Originale | 18tranche | (link) |
FERRERO ROCHER Boîte de 30 | 375 g, 30 pièces | (link) |
Kiri® (32 % MG) à la crème de lait | 240 g (12 Portions) | (link) |
Bouchées de Poulet à la provençale | 400 g (12 à 18 bouchées) | (link) |
Thon entier au naturel | Poids net 190 g, poids net égoutté 140 g | (link) |
Haricots beurre très fins | contenance : 4250ml, poids net total : 4000g, poids net égoutté : 2210g | (link) |
Lentilles (Lot de 3 boîtes) | 3 x [200 g (130 g net égoutté), 212 ml] | (link) |
Délices du Potager - Mini poireaux | 330 g (dont 180 g net), 370 mL | (link) |
Chewing Gum Hollywood | 28 g - 20 dragées | (link) |
Fruit d'Or pro-activ® (35% MG) Tartine 260 g - Unilever | 260 g (26 portions de 10 g) | (link) |
Galettes, tout au beurre | 130 g pour 20 galettes | (link) |
Ketchup P'tits Heinz | 280 ml - 310 g | (link) |
Original Earl Grey | 25 sachets | (link) |
Cappellettis Tofu, Epinards Bio - 220 g - Céréal Bio | 220 g (1 personne) | (link) |
KUB ® Or | 128 g (16 bâtonnets de 2 cubes) | (link) |
Oeufs de poules Elevées en Plein Air (x 12) calibre Moyen - Carrefour | 12 (calibre Moyen => 53 à 63 g) | (link) |
Belvita sablé lait | 8 sachets de 4 | (link) |
Escargots de Bourgogne Extra Gros - 400 g - E | 400 g, 425 ml (3 douzaines) | (link) |
nestle | 228g (4x57g) / 48 cl (4x12cl) | (link) |