An example ontology that contains all constructs required for the various versions of the Pizza Tutorial run by Manchester University (see http://www.co-ode.org/resources/tutorials/)
v.1.5. Removed protege.owl import and references. Made ontology URI date-independent
v.1.4. Added Food class (used in domain/range of hasIngredient), Added several hasCountryOfOrigin restrictions on pizzas, Made hasTopping invers functional
NB Transitive - the ingredients of ingredients are ingredients of the whole
A property created to be used with the ValuePartition - Spiciness.
Note that hasTopping is inverse functional because isToppingOf is functional
The inverse property tree to hasIngredient - all subproperties and attributes of the properties should reflect those under hasIngredient.
Any given instance of topping should only be added to a single pizza (no cheap half-measures on our pizzas)
Americana
AmericanaPicante
CoberturaDeAnchovies
CoberturaDeArtichoke
CoberturaDeAspargos
Cajun
CoberturaDeCajun
CoberturaDeCaper
Capricciosa
Caprina
CoberturaDeQueijo
PizzaComQueijo
Any pizza that has at least 1 cheese topping.
CoberturaDeQueijoComVegetais
This class will be inconsistent. This is because we have given it 2 disjoint parents, which means it could never have any members (as nothing can simultaneously be a CheeseTopping and a VegetableTopping). NB Called ProbeInconsistentTopping in the ProtegeOWL Tutorial.
CoberturaDeFrango
Pais
A class that is equivalent to the set of individuals that are described in the enumeration - ie Countries can only be either America, England, France, Germany or Italy and nothing else. Note that these individuals have been asserted to be allDifferent from each other.
BaseEspessa
Fiorentina
CoberturaDePeixe
CoberturaQuatroQueijos
QuatroQueijos
CoberturaDeFrutas
FrutosDoMar
CoberturaDeAlho
Giardiniera
CoberturaDeQueijoDeCabra
CoberturaDeGorgonzola
CoberturaDePimentaoVerde
CoberturaDePresunto
CoberturaDeErvas
Picante
CoberturaDePimentaoVerdePicante
CoberturaDeBifePicante
Sorvete
A class to demonstrate mistakes made with setting a property domain. The property hasTopping has a domain of Pizza. This means that the reasoner can infer that all individuals using the hasTopping property must be of type Pizza. Because of the restriction on this class, all members of IceCream must use the hasTopping property, and therefore must also be members of Pizza. However, Pizza and IceCream are disjoint, so this causes an inconsistency. If they were not disjoint, IceCream would be inferred to be a subclass of Pizza.
PizzaInteressante
Any pizza that has at least 3 toppings. Note that this is a cardinality constraint on the hasTopping property and NOT a qualified cardinality constraint (QCR). A QCR would specify from which class the members in this relationship must be. eg has at least 3 toppings from PizzaTopping. This is currently not supported in OWL.
CoberturaDeJalapeno
LaReine
CoberturaDeLeek
Margherita
CoberturaDeCarne
PizzaDeCarne
Any pizza that has at least one meat topping
Media
NaoPicante
CoberturaDeFrutosDoMarMistos
CoberturaDeMozzarella
Cogumelo
CoberturaDeCogumelo
PizzaComUmNome
A pizza that can be found on a pizza menu
Napoletana
PizzaNaoVegetariana
Any Pizza that is not a VegetarianPizza
CoberturaDeCastanha
CoberturaDeAzeitona
CoberturaDeCebola
CoberturaDePrezuntoParma
Parmense
CoberturaDeParmesao
CoberturaPeperonata
CoberturaDeCalabreza
CoberturaDePimentao
CoberturaPetitPois
CoberturaPineKernels
Pizza
BaseDaPizza
CoberturaDaPizza
PolloAdAstra
CoberturaDeCamarao
CoberturaPrinceCarlo
PizzaItalianaReal
This defined class has conditions that are part of the definition: ie any Pizza that has the country of origin, Italy is a RealItalianPizza. It also has conditions that merely describe the members - that all RealItalianPizzas must only have ThinAndCrispy bases. In essence, all pizzas from Italy must have ThinAndCrispy bases.
CoberturaDeCebolaVermelha
CoberturaRocket
Rosa
CoberturaRosemary
CoberturaEmMolho
Siciliana
CoberturaDeTomateFatiado
SloppyGiuseppe
Soho
Tempero
A ValuePartition that describes only values from Hot, Medium or Mild. NB Subclasses can themselves be divided up into further partitions.
PizzaTemperada
Any pizza that has a spicy topping is a SpicyPizza
PizzaTemperadaEquivalente
An alternative definition for the SpicyPizza which does away with needing a definition of SpicyTopping and uses a slightly more complicated restriction: Pizzas that have at least one topping that is both a PizzaTopping and has spiciness hot are members of this class.
CoberturaTemperada
Any pizza topping that has spiciness Hot
CoberturaDeEspinafre
CoberturaSultana
CoberturaDeTomateRessecadoAoSol
CoberturaDePimentaoDoce
BaseFinaEQuebradica
MolhoTobascoPepper
CoberturaDeTomate
PizzaAberta
An unclosed Pizza cannot be inferred to be either a VegetarianPizza or a NonVegetarianPizza, because it might have other toppings.
ValorDaParticao
A ValuePartition is a pattern that describes a restricted set of classes from which a property can be associated. The parent class is used in restrictions, and the covering axiom means that only members of the subclasses may be used as values. The possible subclasses cannot be extended without updating the ValuePartition class.
CoberturaDeVegetais
PizzaVegetariana
Any pizza that does not have fish topping and does not have meat topping is a VegetarianPizza. Members of this class do not need to have any toppings at all.
PizzaVegetarianaEquivalente1
Any pizza that only has vegetarian toppings or no toppings is a VegetarianPizzaEquiv1. Should be inferred to be equivalent to VegetarianPizzaEquiv2. Not equivalent to VegetarianPizza because PizzaTopping is not covering
PizzaVegetarianaEquivalente2
An alternative to VegetarianPizzaEquiv1 that does not require a definition of VegetarianTopping. Perhaps more difficult to maintain. Not equivalent to VegetarianPizza
CoberturaVegetariana
An example of a covering axiom. VegetarianTopping is equivalent to the union of all toppings in the given axiom. VegetarianToppings can only be Cheese or Vegetable or....etc.
Veneziana