IKEA’s knowledge graph and why it has three layers
medium.com
medium.com
I'd like to know the reasoning behind it though. Parts of a same product usually have very different numbers.
The part number is for accounting.
It allows allocation of expenses such as raw materials in a meaningful way.
I think the product number codes are equivalent to SKUs.
'''The "76-mm" designation was chosen to help keep the supply of ammunition from being confused between the two guns'''
Factor in that the same exact article may have a different ART number due to a countries legal requirements/certifications/labels trying to keep any structure in that 8 digit range becomes impossible considering they are all in a global namespace.
The article didn’t dive into the true complexity and the core problem they are solving for when it comes to the relationships between Articles and Product Groupings (Combinations) required that makes a complete product ( Desk,Bed,Pax Wardrobe,Kitchen,Couch etc ) and the attributes/meta data required to keep track of compatible legs/hinges/slats/wheels/doors/covers that are required for each combo of each color of each variation along with the true assembled size and relationships back to compatible articles and complementary products.
2D/3D Coordinates were in use and a representation may be found looking up ;).
When talking to their senior engineers, a common trope was:
> I wouldn't know, I've only worked here for 5 years.
The sheer volume of new hierarchies replacing old ones, teams being split into other reams, rebranding of departments ...
I doubt any one person understands how IKEA works, let alone enough to be a source for others.
Perhaps they are projecting onto their customers here.
Having a well defined ontology helps power lots of data products, and even build new ones.
https://netflixtechblog.com/supporting-content-decision-make...
https://www.mcmaster.com/screws/hex-head-screws/
or Digikey:
https://www.digikey.com/en/products/filter/ceramic-capacitor...
or PCpartPicker:
https://pcpartpicker.com/products/motherboard/
compared to trying to find the same products on Amazon or AliExpress. Many of the products are available, but every product on those examples can be filtered against comparable products by the specs that matter to the engineers doing the selection. On other sites, the metadata is generated inconsistently by individual sellers.
On Digi-Key I get absolutely lost. There are thousands of options, with different form factors, costs, availability, specs, and more. Can I buy 5 of them? What's the lead time? Is it SMD or through? How much is shipping? Which vendor do I choose?
On AliExpress, I get a bunch of "5 8-bit shift registers for electronics projects" listings, check a couple of them, look up some info, and purchase one in a few minutes.
Of course this means I end up with mediocre, sometimes outright broken parts, but it feels like it's worth the time I save. I wish there was a curated list or an "easy mode" on Digi-Key.
What I have done when I find myself with several similar items on digikey and am unable to make a choice, I will go with whatever has the biggest inventory, the assumption being whatever sells the best will probably be the best... or at least the most available, which is good enough for me.
For example "8 vit shit register" gives first link to SN74HC595B, a generic shift register and second link to parametric search
https://eu.mouser.com/c/semiconductors/logic-ics/counter-shi...
with "logic type=shift register" and "number of bits=8" already selected.
You don't even need to spell it correctly
Googling smartly is
> I wish there was a curated list or an "easy mode" on Digi-Key.
exactly what you want.
For example, here's how you'd find a generic through hole LED. Search for "through hole LED", pick a color, stocking option: in stock, sort by price, and pick whatever seems right for your project, making sure that you're not ordering something silly like 2500 LEDs (it'll be pretty obvious when you check out anyway). If there's something else that's relevant to your project (eg. the size or shape of the LED) then you can specify that.
The datasheet is just a click or two away to do a sanity check that you're ordering something that makes sense.
Obviously, for a generic component like a LED where the specs might not matter too much and it's fine if you get one of dubious quality, you can just get a random grab bag of LEDs off AliExpress. Or if the catalog overwhelms you, there's always Adafruit, SparkFun, Pololu, etc.
For ICs search Google for "<part description> breakout" which will often show you Sparkfun, Adafruit, or some other hacker focused shop/blog. For example, some results roughly ranked by obscurity: 8-bit shift register [1], thermocouple [2], air quality [3], CPLD [4], crosspoint switch [5].
For anything more complex than that - for example, a DLP micromirror device - you'll have to dig deeper and search for "<part description> dev kit". Manufacturers usually make dev kits using their flagship chips from which you can easily navigate related parts. Be prepared to spit your morning coffee out at some of the prices of this path though (i.e. aforementioned DLP dev kits are $1k+, easily twice what you'd pay for a DLP projector using the same chip)
I assume that's what your Amazon/Aliexpress searches have done by proxy (I often do use Amazon too for more basic stuff like relays, ESP8/32 etc. when I'm impatient)
[1] https://www.sparkfun.com/products/10680
[2] https://www.adafruit.com/product/269
[3] https://www.adafruit.com/product/3566
[4] http://dangerousprototypes.com/docs/XC9500XL_CPLD_breakout_b...
For example, the 74HC595 you linked is a super common shift register, but DK Canada has 88 listings for it. Some surface mount, some in different DIP configurations, and now I have to scour through and figure out the one variant that works for me.
Generalist sites like Amazon and AliExpress tend to mostly stock the variants that tinkerers/makers want when prototyping, which makes it easier for me to plop "74HC595" in the search bar and quickly get a sensible result, especially when sorting by amount sold.
About 25 years ago I built a series of calculators for a competing industrial supplier, where you could match up the bolt / screw / washer / nut needed for each size, metal vs wood application, etc. Still a very relevant need today that I've seldom seen replicated usefully on any site.
Never seen someone noble savage programmers before.
(You buy a product such as a bookcase. You then go and pick up one or more packages which make up that product. When you get the packages home and open them up, each contains several parts.)
There are lots of different systems at IKEA, which work somewhat in parallel but sometimes have to interoperate. For example, point of sale, returns, warehouse management, showroom design. Some of them care about all of product/package/part, but many of them care more about one of those levels than the other. Point of sale just needs to know what products you bought, not what parts are in the packages. Warehouse really cares about what packages there are, but also wants to be aware of which sets of packages are products.
Suppose that one system doesn't make a distinction between product and package, or uses 'product' to mean either product or package. That system might work perfectly fine on its own, but when it has to interact with another system which cares a lot about that categorical distinction, things will go wrong. So you want to have one place where all those concepts are defined. Then when you create a new system, you can confirm that you are using the same categories with the same meanings as everyone else.
I'm sure their metadata is great compared to some groups, but in my case it's still insufficient.
Categories of products is a good example as they form a transitive relation, but not necessarily a strict hierarchy (any particular entity might be in multiple distinct categories).
KGs in the general e-commerce space solve search disambiguation and bridging the gap of industry language with customer language; common sense recommendation, especially when more and more customers do not opt-in to sharing their data; and embeddable info box content throughout the customers browsing experience.
KG is not a technology but a paradigm shift from an application-centric data modeling (classic data engineering) to a business/purpose/people-centric data modeling. It means that on top of the data layer, the KG enables to access the data via business concepts. It enables e.g. simple questions like which products are suitable for customers that live in small apartments and automatically solves the problem of combining different data sources to answer the question.
(Edit: removed needlessly snarky wording.)
Good on IKEA for solving the problem they have efficiently, but I can be interested in a larger scope.
The 3 layers mentioned are just the basic structure of ontologies. Concepts eg “vehicle, person, desease, atom, bridge,…” then categories of the concepts, and finally data, ie instances.
Larger knowledge graphs don’t grow by adding more “layers” they add more content to all three layers.
I thought that it gets complicated because you can have concepts of concepts, and you can have both categories of concepts and concepts of categories etc etc. It ends up being more than 3 layers, and you get layer violations and loops etc.
I built a system for TaskRabbit that scraped all the IKEA products from a variety of sources and ran algorithms to determine their category and predict how long they would take to be assembled. Then there was a Mechanical Turk sort of system for human input. When combined with real-world feedback from the Taskers, it was pretty good.
For better or worse, I've personally been through the entire catalog multiple times.
(Product) -> (bookshelf) -> (billy white 80cm)
The above would be the graph representation of concepts, categories, and data. In RDF triple terms of subject-predicate-object it could be represented as: Product (s) has a (p) bookshelf (o)
Billy white 80cm (s) is a (a) bookshelf (o)[BILLY bookcase in white 80x28x202 cm] rdf:type :Product . Product rdf:type :Class .
[BILLY bookcase in white 80x28x202 cm] :categorisedAs :bookcase . :bookCase rdf:type :Category .
*[ ] = IRI of that particular product
What are some other examples? I really struggle to understand the value of it, and find the lack of transparency here bizarre given how much the espouse this 3 tier system.
Product concepts are actually the low-hanging fruit here.
Maybe even a fifth layer could be necessary if the individual products are broken down by subcomponent.
In the software context this would each individual copy of an OS with subcomponents being each individual copy of a driver, etc...
https://events.eventzilla.net/e/semantic-boot-camp-introduct...
I have no relationship with Semantic Arts other than they performed a contract for a company at which I worked.
(Yeah yeah I know that was technically about software architecture but code is data soooo…)
It tends to become pendantic to combat entropy.
Very large organizations need technical solutions to organizational problems, especially when there are many loosely coupled teams interacting in one way or another.