Over the years, a great deal has been written about the ontology of pizza (http://robertdavidstevens.wordpress.com/2010/01/22/why-the-pizza-ontology-tutorial/). It’s a good example, is easy to understand and works surprisingly well in a tutorial context. It is also comes up surprisingly commonly in the public sphere as it did last year on BBC News (http://www.bbc.co.uk/news/magazine-33542392). The key point of which is this: the pizza maker argues that you can’t have a marinara (tomato and garlic) with added mozzarella because a marinara is pizza rossa which can’t have mozzarella; a margherita (tomato and mozzarella) with garlic is fine though. Ha, those crazy Italians. I paraphrase, of course.
Of course, the right to comment first on this article rests with Robert Stevens, my colleague and world acknowledged authority on the ontology of pizza, and indeed he has done so (http://robertdavidstevens.wordpress.com/2015/08/13/where-a-pizza-ontology-may-help/).
I would like to take a slightly different approach to the question though. How do we know what our ontology should be? I’ll start by ontological reading of the article, look at some issues with it, and then consider how we might gather the knowledge to resolve them. As with many parts of ontology construction, there is not a perfect answer and it turns out to be more complex than it might appear at first sight.
I start by building an ontology. As (both) regular readers of this journal might expect, I am going to use Tawny-OWL (http://www.russet.org.uk/blog/3088) to do this, so the syntax is a little different than for Robert’s post.
I’m starting from a slightly different place from Robert. One of his concerns was to fit within the context of the existing pizza ontology. Now, I use to be a firm believer in the idea that ontologies were all about a shared conceptualisation of the world, but over time, I have become less sure that this should always be a consideration. In this case, the purpose of building the ontology is to allow me to formally and explicitly describe something with the context of this blogpost, to clarify my own understanding. Sharing is irrelevant for this use case and I am going to build my ontology rapidly from scratch.
I am a big fan of literate ontologies (1512.04250) and I want do that with blogs as well. So the source code of this post (accessible from http://archive.org/download/phil-lord-journal/), is lenticular text (http://www.russet.org.uk/blog/3035) and the whole article can be parsed as a valid ontology. Perhaps no change for the reader, but a comfort for me as the author to know that I’ve evaluated every statement in this post.
(ns the-epistemology-of-pizza (:refer-clojure :only ) (:use [tawny owl english reasoner])) (reasoner-factory :hermit)
As with all Tawny-OWL ontologies, we start with a namespace declaration. If you are reading this and use Clojure a lot, note the
:refer-clojure and use of
tawny.english: none of
not are the
clojure.core functions! We select a default reasoner also.
(defontology epistemology) (defclass PizzaTopping) (defoproperty hasTopping) (as-subclasses PizzaTopping :disjoint (defclass Mozzarella) (defclass Tomato) (defclass Garlic))
We need a set of primitive terms on which to base the ontology, which we define here. Again, this is not an ontology for sharing: I have not added labels, formal textual definitions nor do I need to care about what the IRIs actual are. We only need three toppings and all we need to care about them is that they are different.
(defclass Pizza :super (some hasTopping (or Mozzarella Tomato)))
It turns out, I do not need to care about pizza bases either, so I am not going to talk about them explicitly. Rather unusually (and in a difference from the pizza ontology) I am going to insist that a
Pizza have either
Tomato. I’ll come back to this later.
(defclass PizzaRossa :super Pizza (only hasTopping (not Mozzarella))) (defclass PizzaBianca :super Pizza (only hasTopping (not Tomato)))
The definitions of
PizzaBianca are a little surprising; they are defined negatively, but I quite like these definitions. They are sort of like the backward definitions of the fly geneticist — the “white” gene is responsible for the enzyme that causes red eyes. The gene is named after the mutant.
(defclass Marinara :super PizzaRossa (some hasTopping Garlic Tomato))
The definition of
Marinara is now straight-forward enough, simply stating the ingredients, and that
Marinara is a
(clojure.core/assert (with-probe-entities [WierdMarinara (owl-class "WierdMarinara" :super Marinara (some hasTopping Mozzarella))] (clojure.core/not (coherent?))))
And, so we get to the humourous crux of the story which is, indeed, you cannot have a
But this leaves us with a number of problems. One of which is that in explaining the joke, we have rather killed it; one sad reality that all ontologists have to face is that it pushes us toward pedantry, making us humourless, crushing bores. A much deeper problem though is that what we have produced is a computational data structure which we have queried and got an answer about that computational data structure. When what we really want to know about is pizza.
How do we know whether what we have modelled is correct. Is this ontology a good ontology, an accurate reflection of reality? And what does this mean anyway? In short, how do we know what we know?
Let’s consider the issue from a set of different perspectives.
As a software engineer, I’m rather fond of the ontology that I have produced, and in that sense it is a good ontology. I’ve already said that I quite like the “backward definitions”, and find them quite elegant. The ontology is also symmetrical:
PizzaRossa are both defined in the same, quite equivalent way.
Now, of course, we might argue that this considerations do not tell us that we have a good ontology. But an elegant and symmetrical axiomatisation is useful; it’s easier to remember, there are no “special cases”, and it is easy to spot outliers. All of these things support maintainability of software in general and specifically in ontologies.
There are some issues with my ontology; we have not, for instance, following Alan Rector’s normalisation pattern (http://ontogenesis.knowledgeblog.org/49); the
Margherita is neither white nor red in this schema.
Margherita presents a bigger problem, though, than not being normalised, which is simply that my knowledge of margherita tells me that it is normally considered a pizza rossa, while my ontology say it is not. My ontology is nice, but it is wrong.
We could also consider this ontology from a more philosophical point-of-view. Of course, I am perhaps not the ideal person to do this, but I would note that our ontology has a clear, single inheritance hierarchy. Most of our classes have clear differentiatia (I’ve just stopped at the toppings, but you can’t define everything, because that turtles (http://en.wikipedia.org/wiki/Turtles_all_the_way_down)). Even our definition of pizza could fit into a larger hierarchy: pizza without either mozzarella or tomato is either a focaccia or some other type of bread.
After that, I am rather stuck. It is hard to draw many more conclusions about pizza from first principles. From a realist point-of-view, we should model reality and universals, which sounds nice. But how do I determine that what that reality is?
Time to phone a friend.
One standard technique in ontology building is to consult with an expert. Indeed, that is often the main evidence and justification that is used to support an ontology, which is why many ontology papers have more authors than the human genome paper. So, let’s try it in this case. The BBC article quotes from quite a few experts.
“La marinara is a pizza rossa,” she states frostily. “A pizza rossa is made with tomato and without mozzarella. So you can’t have a marinara with mozzarella because there’s no such thing.”
My ontology supports this because
Marinara is a
PizzaRossa so, indeed, cannot have
“No, it’s not,” pipes up a customer who until now has been quietly consuming his pizza and beer on a stool behind me. “She’s right. A pizza rossa can’t have mozzarella.”
The pizzaiola is right. A marinara is not a marinara if you add mozzarella. But she was wrong to say she would make you a margherita with garlic because margherita with garlic doesn’t exist.”
Currently, my ontology says nothing about this one way or the other. But, we can add a closed definition for
Margherita easily, and now, indeed, a margherita with garlic cannot exist.
(defclass Margherita :super Pizza (some-only hasTopping Mozzarella Tomato)) (clojure.core/assert (with-probe-entities [WierdMargherita (owl-class "WeirdMargherita" :super Margherita (some hasTopping Garlic))] (clojure.core/not (coherent?))))
I also tried extending my analysis further, with a novel technique; I tried it by asking my friends on facebook. One of them, replied as follows.
my take on this is that we must distinguish between pizzas made by bakeries (pizza bianca and rossa) which tipically (but theres no firm rules) do not have mozzarella, and pizza from a pizzeria (restaurant) which almost always has mozzarella (bianca and rossa). a pizza bianca without mozzarella is a focaccia ( with rosemary, onions, potatoes, etc)
— Ulisse Pizzi
It’s a disaster! Almost, none of this has been modelled in my ontology, although it supports my assertion that a pizza must have tomato or mozzarella. But worse, “there are no firm rules”; it’s enough to make a grown ontologist cry. But there are some deeper frustrations here. None of the experts have told me all the issues that I want to know. None have really answered what is a pizza.
We could ask some more experts? But what happens when they contradict? Do we take averages? And, more important, how do I know when to stop; I could carry on asking friends all day. And how do we avoid cherry-(tomato)-picking?
Having tried ontology by facebook, let’s try a research method with a much older and richer pedigree; we will look the answer up on wikipedia instead. First port of call is the main Pizza, which says many things, but none of them that useful in this case. Hunting around got me to Pizza al taglio (pizza by the slice) which says:
The simplest varieties include pizza Margherita (tomato sauce and cheese), pizza bianca (olive oil, rosemary and garlic), and pizza rossa (tomato sauce only).
— Pizza al taglio
This is interesting becuase it brings in garlic and rosemary (which has not been mentioned before). In this version of the world, a margherita is not a pizza bianca. And there is a lack of symmetry between rossa (which is closed) and bianca (which is not).
Perhaps a better source of material would be to look on the Italian wikipedia for its definition of Pizza. This says:
Pizza marchigiana […] Le varianti tradizionali sono quattro: bianca con il rosmarino, bianca alla cipolla, rossa semplice e rossa con la mozzarella.
— Italian Wikipedia
So, more types of pizza, including with rosemary, with onion and simple. The footnotes are more informative still.
 Per “bianca” si intende una pizza senza pomodoro.  Per “rossa” si intende una pizza con il pomodoro.
— Italian Wikipedia
So, pizza bianca must NOT have tomato, while rossa MUST have it. The definition of pizza rossa here is inconsistent with mine, but makes more sense to be honest — margherita finally becomes a pizza rossa. Strictly, this quote only really applies to “pizza marchigiana” — once we move out of Marche, all our definitions might be different!
Another useful thing that does come out of reading wikipedia, however, is the information that Pizza Neopolitana has regionally protected status in the EU. And that there is an official body for defining what is a pizza, namely the AVPN. Their document describing the pizza is called the disciplinare (also in English).
And, indeed it has definitions, although unfortunately only of two pizza, the Marinara and the Margherita. So, the answers we get from here are limited; but they look like this:
Marinara (tomato, oil, oregano, and garlic) Margherita (tomato, oil, mozzarella or fior di latte, grated cheese and basil)
— Associazione Verace Pizza Napoletana
So, we have our answer? Well, it’s one I find surprising (grated hard cheese on margherita!). But, actually, the disciplinare is more specific. For instance, where they say tomato not just any tomato will do, they have to be one from a very specific type:
The following variations of fresh tomatoes can be used: “S.Marzano dell’Agro Sarnese-nocerino D.O.P”., “Pomodorini di Corbara (Corbarino)”, “Pomodorino del piennolo del Vesuvio” D.O.P.” (see attached appendices for suppliers and technical details)
— Associazione Verace Pizza Napoletana
How can we encode this? It really just too complicated, and is unlikely to be useful ontologically at any point; worse, we only have answers for two pizza types and there many others. Looking further, there are also instructions for the flour, the proving, the stretching and much more besides. So, it turns out that the definitive answer is not that useful either: it is incomplete and overly complicated.
The BBC articles take on the whole process is this:
Pizza has taught me that logic can be subjective and that subjective logic can be cultural
Of course, it’s not true; logic is not subjective at all, although there are many different forms of logic. But definitions can be. I have tried multiple different mechanisms of reaching a definition, and all of them have flaws:
- software engineering approach — maintainable, nice but correct?
- philosophical approach — limited in its applicability
- find a friend (the facebook approach) — prone to cherry picking
- literature review (the wikipedia approach) — lacks interactivity, so may not answre the question
- A definitive source (the authoritarian approach) — over specified, under covering
Definitions are difficult, and there will be no universal answer. Having a clearly defined use case, and a mechanism to test your ontology against that use case remains key. But also having a clear awareness of the techniques that you are using for build your ontology and the flaws that exist with them.
It is also a good excuse to eat pizza, if you need one.
Minor spelling corrections!