Changes

Jump to navigation Jump to search
1,566 bytes added ,  25 February
no edit summary
Line 1: Line 1:  
[[Category:Contribution Guidelines]]
 
[[Category:Contribution Guidelines]]
This is the brands of the product.  
+
These are the brands of the product.
 +
 
 +
In the database, this field is called <code>brands</code>.
 +
 
 +
See [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aissue+is%3Aopen+ingredients+label%3Abrands issues related to <code>brands</code>].
 
=== Suggested solution for the taxonomy ===
 
=== Suggested solution for the taxonomy ===
 
Taking the observations, use cases and design considerations into account, it is possible to specify how this can be encoded in a taxonomy. The same approach as all the other taxonomies will be used for thus.
 
Taking the observations, use cases and design considerations into account, it is possible to specify how this can be encoded in a taxonomy. The same approach as all the other taxonomies will be used for thus.
Line 37: Line 41:  
brand_owner_opencorporates:BE:0838355558<br>
 
brand_owner_opencorporates:BE:0838355558<br>
 
wikidata:en:Q590921<br>
 
wikidata:en:Q590921<br>
<nowiki>#</nowiki>11 products @2022-04-23<br>
+
<nowiki>#</nowiki>11 products @2022-04-23
 
  −
=== Discussion ===
  −
 
  −
* '''country code vs language code'''
      
=== Q&A ===
 
=== Q&A ===
Line 55: Line 55:  
*** For [https://world.openfoodfacts.org/brand/sans-nom example], <code>No Name</code> and <code>Sans nom</code> can be written on the same product, but not always.
 
*** For [https://world.openfoodfacts.org/brand/sans-nom example], <code>No Name</code> and <code>Sans nom</code> can be written on the same product, but not always.
 
*** <u>'''Solution'''</u>: make <code>No Name</code> , <code>No Name Sans nom</code> and <code>Sans nom</code> three separate children of  <code>Generic brand</code> in this example because they are all lines of <code>Generic brand</code>which is a Canadian brand ([https://en.wikipedia.org/wiki/No_Name_(brand) reference]). Or, the three of them as synonyms of each others and child of <code>Generic brand</code>.
 
*** <u>'''Solution'''</u>: make <code>No Name</code> , <code>No Name Sans nom</code> and <code>Sans nom</code> three separate children of  <code>Generic brand</code> in this example because they are all lines of <code>Generic brand</code>which is a Canadian brand ([https://en.wikipedia.org/wiki/No_Name_(brand) reference]). Or, the three of them as synonyms of each others and child of <code>Generic brand</code>.
 +
*** For [https://world.openfoodfacts.org/product/7624841023290/smokey-tofu-marroni-betty-bossi example], <code>Coop</code>, in Switzerland, can add up to three brands on a product: <code>Betty Bossi</code>, <code>Karma</code> and <code>Coop</code>. They justify it: "We offer a wide range of own-label brands and brand worlds." ([https://www.coop.ch/en/inspiration-gifts/labels/c/m_0788 source])
 +
*** '''<u>Solution:</u>'''
 +
*** For [https://world.openfoodfacts.org/product/5900497611503/peach-ice-tea-lipton example], <code>Lipton</code> belongs to <code>Unilever</code> but this product is distributed by <code>Pepsico</code> . <code>Lipton</code> used to belong to <code>Unilever</code>, and now belong to <code>CVC Capital Partners</code>. <code>Lipton</code>'s ready to drink beverages belongs to both <code>Unilever</code> and <code>PepsiCo</code> (who is distributor).
 +
*** '''<u>Solution:</u>'''
 +
*** For [https://nl.openfoodfacts.org/product/6971674070030/精制辣汤-唯滋亲 example], <code>The Laughing Cow</code> and <code>La vache qui rit</code>.
 +
*** '''<u>Solution:</u>''' they both belong to the same parent (<code>Bel Group</code>)
 
*** For [https://en.wikipedia.org/wiki/Wall%27s_(ice_cream) example], <code>Miko/wall's ice</code> creams, called <code>Frigo</code> in Spain but <code>Bresler</code> in Chile and Bolivia.
 
*** For [https://en.wikipedia.org/wiki/Wall%27s_(ice_cream) example], <code>Miko/wall's ice</code> creams, called <code>Frigo</code> in Spain but <code>Bresler</code> in Chile and Bolivia.
*** <u>'''Solution'''</u>: '''make the taxonomy country specific instead of language specific?'''
+
***<u>'''Solution'''</u>: '''make the taxonomy country specific instead of language specific?'''
 
*** For example, The Coca-Cola Company sells <code>Fanta</code> in Thailand under <code>Fanta</code> and <code>แฟนต้า</code> names.
 
*** For example, The Coca-Cola Company sells <code>Fanta</code> in Thailand under <code>Fanta</code> and <code>แฟนต้า</code> names.
 
*** For example, <code>Danone</code> sells mineral water in Morroco under both <code>عين سايس</code> and <code>aïn Saïss</code> names.
 
*** For example, <code>Danone</code> sells mineral water in Morroco under both <code>عين سايس</code> and <code>aïn Saïss</code> names.
 
*** For examples, Japanese/English (like <code>味の素</code>/<code>Ajinomoto</code>) or Chinese/English (<code>乐虎</code>/<code>Hi-Tiger</code>)
 
*** For examples, Japanese/English (like <code>味の素</code>/<code>Ajinomoto</code>) or Chinese/English (<code>乐虎</code>/<code>Hi-Tiger</code>)
*** <u>'''Solution 1 (preferred)'''</u>: Synonyms  th: แฟนต้า, fanta  (+) they are at the same level of hierarchy  (-) only first synonym will be visible for users, have to opt for the most appropriate one (local language maybe?)
+
***<u>'''Solution 1 (preferred)'''</u>: Synonyms  th: แฟนต้า, fanta  (+) they are at the same level of hierarchy  (-) only first synonym will be visible for users, have to opt for the most appropriate one (local language maybe?)
 
***<u>'''Solution 2:'''</u> different children for the same parent. Let's say we have parent "Coca Cola company", then we would have something like  xx: coca-cola company  <br /><xx: coca-cola company  xx: fanta  th: fanta  <br /><xx: coca-cola company  xx: แฟนต้า  th: แฟนต้า  (+) Both should be visible for users  (-) we have two different entries for the "same" brand  (also by changing the website URL th.openfoodfacts -> world.openfoodfacts, we could see different names... Maybe  )
 
***<u>'''Solution 2:'''</u> different children for the same parent. Let's say we have parent "Coca Cola company", then we would have something like  xx: coca-cola company  <br /><xx: coca-cola company  xx: fanta  th: fanta  <br /><xx: coca-cola company  xx: แฟนต้า  th: แฟนต้า  (+) Both should be visible for users  (-) we have two different entries for the "same" brand  (also by changing the website URL th.openfoodfacts -> world.openfoodfacts, we could see different names... Maybe  )
 
** Also synonyms. Product brand has changed over time.
 
** Also synonyms. Product brand has changed over time.
Line 96: Line 102:  
*** For examples, <code>1664</code>, <code>1883</code> or <code>365</code>.
 
*** For examples, <code>1664</code>, <code>1883</code> or <code>365</code>.
    +
* company structure - do we want to list (and research) all the relationships between owners, marketing companies, etc. I would suggest that we do NOT and limit ourselves to the brands and brand owner (and maybe the production company);
 +
** <u>'''comment'''</u>: overkill - it is very tempting to add al kinds details for owners, etc. The actual owners of the product, brand, etc, do not seem useful to the consumer. We just should provide links to third parties for this kind information. I.e. wikipedia, wikidata,, opencorporates, ipo europe, ...
 +
** <u>'''Decision:'''</u>
 +
* parent brand - when should the parent brand be added? Only if the parent brand is available on the front of the packaging, or also when it is shown on the back of the packaging, or when we can find out the legal final parent owner of a brand? This choice might have an implication for how we structure the data.
 +
** '''<u>comment @benbenben:</u>''' at least having sub-brands/lines of a brand would be beneficial - for quality checks as well as monitoring number of products from the same distributor - even if the brand is not written on the package.
 +
*** For example, <code>S-budget</code> is a child of <code>Spar</code>.
 +
*** For example, <code>Pilos</code> is a child of <code>Lidl</code>.
 +
** <u>'''Decision:'''</u>
 +
* EAN manufacturer codes - is there an open database which we could use?
 +
* country code vs language code.
 +
** '''<u>comment @benbenben:</u>''' To tackle country specific brands (<nowiki>https://github.com/openfoodfacts/openfoodfacts-server/issues/2954</nowiki>), I would suggest to replace <language:> by <country:>. Because some names can differ per country instead of per languages (we can take the example of Miko/wall's ice creams (<nowiki>https://en.wikipedia.org/wiki/Wall%27s_(ice_cream))</nowiki> that are called Frigo in Spain but Bresler in Chile and Bolivia).  (+) that would make easier to detect if a product is in a wrong country based on the brand taxonomy  (-) not totally sure that we can do that technically, can we?  (-) it adds complexity because all other taxonomies have language code and only the brand taxonomy would have the country code  (+-) there may be some brands that divide a country in two (like Aldi), but not sure that it is an problem.
   −
=== Some particular cases for a product ===
+
==== Observations summary ====
* A product can have more than 2 brands; eg:
  −
** Coop, in Switzerland, can add up to three brands on a product: <code>Betty Bossi</code>, <code>Karma</code> and <code>Coop</code> in [https://world.openfoodfacts.org/product/7624841023290/smokey-tofu-marroni-betty-bossi this product]; they justify it: "We offer a wide range of own-label brands and brand worlds." ([https://www.coop.ch/en/inspiration-gifts/labels/c/m_0788 source])
  −
** In [https://world.openfoodfacts.org/product/5900497611503/peach-ice-tea-lipton this product], <code>Lipton</code> belongs to <code>Unilever</code> but this product is distributed by <code>Pepsico</code> . EDIT Lipton used to belong to Unilever, and now belong to CVC Capital Partners. Lipton's ready to drink beverages belongs to both Unilever and PepsiCo (who is distributor).
  −
 
  −
=== Implementation in Open Food Facts ===
  −
In the database, this field is called <code>brands</code>.
  −
 
  −
See [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aissue+is%3Aopen+ingredients+label%3Abrands issues related to <code>brands</code>].
  −
*
  −
 
  −
=== Observations summary ===
   
Summarizing the observations note above, we see the following brands:
 
Summarizing the observations note above, we see the following brands:
 
*1 universal brand, exact same name used in all countries and languages. e.g. "Nutella"
 
*1 universal brand, exact same name used in all countries and languages. e.g. "Nutella"
Line 118: Line 124:  
*7 parent brands are sometimes shown on packaging
 
*7 parent brands are sometimes shown on packaging
   −
== Use cases ==
+
==== Use cases (UC below) ====
The brands taxonomy has multiple applications within OFF. Theres are:
+
The brands taxonomy has multiple applications within Open Food Facts. These are:
 
*1 Display the brands of a product, in the language requested by the user;
 
*1 Display the brands of a product, in the language requested by the user;
 
*2 Have a way to list all products of a brand;
 
*2 Have a way to list all products of a brand;
Line 129: Line 135:  
*8 Barcode/Brand quality check - if the manufacturer part of the barcode does not match the specified brand, there is an error in either of them;
 
*8 Barcode/Brand quality check - if the manufacturer part of the barcode does not match the specified brand, there is an error in either of them;
   −
== Design considerations ==
+
==== Design considerations ====
The observations and use cases lead to several design considerations:
+
The '''observations''' and '''use cases''' lead to several design considerations:
 
# Unique brand key - as the same brand (string) can exist in multiple geographic areas or within the same geographic area, there must be a way to uniquely distinguish between the various brands. Otherwise, a user can not enter the correct brand (UC1), nor can we list all brands (UC2);
 
# Unique brand key - as the same brand (string) can exist in multiple geographic areas or within the same geographic area, there must be a way to uniquely distinguish between the various brands. Otherwise, a user can not enter the correct brand (UC1), nor can we list all brands (UC2);
# Uses selectable brand - there must be a brand name in the same language/script of the package. If that name occurs multiple times in the taxonomy, it must be specified by product category, country sold, etc in order to make it unique. For instance, the label '''Taste''' occurs in France and Argentina, but is used for different categories. So the user should have the choice '''Taste (category 1 - France)''' and '''Taste (category 2 - Argentina)'''. Maybe this can be mixed with the key. (UC4). EDIT: there are no '''Taste''' brands in [https://fr.openfoodfacts.org/brands France] not in [https://ar.openfoodfacts.org/brands Argentina].
+
# Uses selectable brand - there must be a brand name in the same language/script of the package. If that name occurs multiple times in the taxonomy, it must be specified by product category, country sold, etc in order to make it unique. For instance, the label '''Taste''' occurs in France and Argentina, but is used for different categories. So the user should have the choice '''Taste (category 1 - France)''' and '''Taste (category 2 - Argentina)'''. Maybe this can be mixed with the key. (UC4). EDIT: there are no '''Taste''' brands neither in [https://fr.openfoodfacts.org/brands France] not in [https://ar.openfoodfacts.org/brands Argentina].
 
# Language/script specific brands - a way to code a single brand in multiple scripts and/or languages, for example in Chinese, Arabic and English (UC1)
 
# Language/script specific brands - a way to code a single brand in multiple scripts and/or languages, for example in Chinese, Arabic and English (UC1)
 
# Language independent brand - a way to encode a brand that is valid for multiple languages (UC1);
 
# Language independent brand - a way to encode a brand that is valid for multiple languages (UC1);
   −
== Questions / Issues ==
  −
* company structure - do we want to list (and research) all the relationships between owners, marketing companies, etc. I would suggest that we do NOT and limit ourselves to the brands and brand owner (and maybe the production company);
  −
* overkill - it is very tempting to add al kinds details for owners, etc. The actual owners of the product, brand, etc, do not seem useful to the consumer. We just should provide links to third parties for this kind information. I.e. wikipedia, wikidata,, opencorporates, ipo europe, ...
  −
* parent brand - when should the parent brand be added? Only if the parent brand is available on the front of the packaging, or also when it is shown on the back of the packaging, or when we can find out the legal final parent owner of a brand? This choice might have an implication for how we structure the data.
  −
* EAN manufacturer codes - is there an open database which we could use?
      
=== Brands and Robotoff (AI) ===
 
=== Brands and Robotoff (AI) ===
76

edits

Navigation menu