;; Access to and use of these products is governed by the GNU General Public 
;; License <http://www.gnu.org/copyleft/gpl.html>. 
;; By using these products, you agree to be bound by the terms 
;; of the GPL.

;; Authors Karen Nomorosa, Adam Pease

;; Contact Adam Pease (adam.pease [at] reardencommerce [dot] com).
;; Original date: April, 2011
;; We ask that people using or referencing this work cite our primary paper:

;; Niles, I., and Pease, A.  2001.  Towards a Standard Upper Ontology.  In 
;; Proceedings of the 2nd International Conference on Formal Ontology in 
;; Information Systems (FOIS-2001), Chris Welty and Barry Smith, eds, 
;; Ogunquit, Maine, October 17-19, 2001.  See also http://www.ontologyportal.org

;; KJN: Moving PreparedFood definitions to Mid-level-ontology.kif as it is more of a
;; general concept that can be reused in a lot of different domains
;;(subclass PreparedFood Object) 
;;(documentation PreparedFood EnglishLanguage "&%PreparedFood refers to anything that 
;;undergoes some process intended to result in an object that has &%Nutrient which can be 
;;ingested by &%Animal, normally metabolized into energy and body tissue.")
;;(termFormat EnglishLanguage PreparedFood "food")

;;(=>
;;  (instance ?X PreparedFood)
;;  (instance ?X (FoodForFn Organism)))

;;(=>
;;  (instance ?X PreparedFood)
;;  (exists (?PROC)
;;    (and
;;      (instance ?PROC IntentionalProcess)
;;      (result ?PROC ?X))))
  
;;(subclass SolidFood PreparedFood)
;;(documentation SolidFood EnglishLanguage "&%SolidFood refers to &%PreparedFood that 
;;has &%Solid parts.")
;;(termFormat EnglishLanguage SolidFood "solid food")

;;(=>
;;  (instance ?X SolidFood)
;;  (exists (?ING)
;;    (and
;;      (part ?ING ?X)
;;      (attribute ?ING Solid))))

;;(subclass LiquidFood PreparedFood)
;;(documentation LiquidFood EnglishLanguage "&%LiquidFood refers to &%PreparedFood that 
;;has no &%Solid parts, only &%Liquid parts, therefore this does not cover stews, root
;;beer floats or other combinations of solid and liquid foods.")

;;(termFormat EnglishLanguage LiquidFood "liquid food")

;;(=>
;;  (instance ?X LiquidFood)
;;  (not
;;    (exists (?ING)
;;      (and
;;        (part ?ING ?X)
;;        (attribute ?ING Solid)))))

;;(subclass Beverage LiquidFood)
        
;;(instance CookedAttribute RelationalAttribute)
;;(documentation CookedAttribute EnglishLanguage "&%CookedAttribute describes how something
;;is a product of &%Cooking.")
;;(termFormat EnglishLanguage CookedAttribute "cooked")

;;(=>
;;  (attribute ?FOOD CookedAttribute)
;;  (exists (?PROC)
;;    (and
;;      (instance ?PROC Cooking)
;;      (result ?PROC ?FOOD))))
      
;;(instance RawAttribute RelationalAttribute)
;;(documentation RawAttribute EnglishLanguage "&%RawAttribute describes how cooking was
;;not involved in the making of something")
;;(termFormat EnglishLanguage RawAttribute "raw")

;;(=>
;;  (attribute ?FOOD RawAttribute)
;;  (instance ?FOOD (FoodForFn Organism)))

;;(=>
;;  (attribute ?FOOD RawAttribute)
;;  (not
;;    (exists (?PROC)
;;      (and
;;        (instance ?PROC Cooking)
;;        (result ?PROC ?FOOD)))))
        
(subrelation ingredient material)
(documentation ingredient EnglishLanguage "(&%ingredient ?ING ?FOOD) means that ?ING 
is a material that makes up ?FOOD")
(termFormat EnglishLanguage ingredient "ingredient")
(domainSubclass ingredient 1 SelfConnectedObject)
(domainSubclass ingredient 2 PreparedFood)

(=>
  (ingredient ?ING ?FOOD)
  (exists (?PROC ?X ?Y)
    (and
      (instance ?PROC Process)
      (instance ?X ?ING)
      (patient ?PROC ?X)
      (instance ?Y ?ING)
      (result ?PROC ?Y))))
      

(instance ingredientAmount TernaryRelation)
(documentation ingredientAmount EnglishLanguage "(&%ingredientAmount ?ING ?FOOD ?AMT 
means that ?AMT of ?ING is used to make ?FOOD")
(termFormat EnglishLanguage ingredientAmount "amount of ingredient")
(domainSubclass ingredientAmount 1 SelfConnectedObject)
(domainSubclass ingredientAmount 2 SelfConnectedObject)
(domain ingredientAmount 3 PhysicalQuantity)

(=>
  (ingredientAmount ?ING ?FOOD ?AMT)
  (exists (?PROC ?X ?Y)
    (and
      (instance ?X ?ING)
      (measure ?X ?AMT)
      (instance ?Y ?FOOD)
      (instance ?PROC Process)
      (patient ?PROC ?X)
      (result ?PROC ?Y))))

;; ----------------------------------------------------------------------------
;; Meals
;; ----------------------------------------------------------------------------

(subclass Meal Collection)
(documentation Meal EnglishLanguage "&%Meal refers to a &%Collection of (%&FoodForFn 
&%Human) that is eaten at one time")
(termFormat EnglishLanguage Meal "meal")

(=>
  (instance ?X Meal)
  (forall (?ITEM)
    (=>
      (member ?ITEM ?X)
      (instance ?ITEM (FoodForFn Human)))))

;; a meal is meant to be eaten 
(=>
  (instance ?X Meal)
  (hasPurpose ?X
    (exists (?E)
      (and
        (instance ?E Eating)
        (patient ?E ?X)))))

;; decided to make breakfast, etc. an attribute because the same instances of food,
;; for instance, can be breakfast, lunch, or dinner, depending on what time you eat it
;; also, it allows us to attach the attribute to food instances (such as 'breakfast food')
;; or to a menu (such as 'breakfast menu'), or to a buffet (such as 'brunch buffet')            
(instance Breakfast RelationalAttribute)
(documentation Breakfast EnglishLanguage "&%Breakfast describes food that is 
usually the first meal of the day, eaten during the morning")
(termFormat EnglishLanguage Breakfast "breakfast")

;; breakfast meal is typically eaten in the morning
(=>
  (and
    (instance ?X Meal)
    (attribute ?X Breakfast)
    (instance ?E Eating)
    (patient ?E ?X))
  (modalAttribute
    (and
      (during (WhenFn ?E) ?TIME)
      (instance ?TIME BreakfastTime)) Likely))
           

(subAttribute ContinentalBreakfast Breakfast)
(documentation ContinentalBreakfast EnglishLanguage "&%ContinentalBreakfast refers to
food that is normally served during &%BreakfastTime in &%NorthAmerica or &%Europe")
(termFormat EnglishLanguage ContinentalBreakfast "continental breakfast")

(=>
  (attribute ?MEAL ContinentalBreakfast)
  (or
    (equal ContinentalBreakfast (MealAttributeFn ?MEAL NorthAmerica))
    (equal ContinentalBreakfast (MealAttributeFn ?MEAL Europe))))
      
(instance Lunch RelationalAttribute)
(documentation Lunch EnglishLanguage "&%Lunch refers to something that is usually eaten
mid-day")
(termFormat EnglishLanguage Lunch "lunch")

(=>
  (and
    (instance ?X Meal)
    (attribute ?X Lunch)
    (instance ?E Eating)
    (patient ?E ?X))
  (modalAttribute
    (and
      (during (WhenFn ?E) ?TIME)
      (instance ?TIME LunchTime)) Likely))

(instance Dinner RelationalAttribute)
(documentation Dinner EnglishLanguage "&%Dinner refers to something that is typically
eaten during the evening")
(termFormat EnglishLanguage Dinner "dinner")

(=>
  (and
    (instance ?X Meal)
    (attribute ?X Dinner)
    (instance ?E Eating)
    (patient ?E ?X))
  (modalAttribute
    (and
      (during (WhenFn ?E) ?TIME)
      (instance ?TIME DinnerTime)) Likely))


(instance HighTea RelationalAttribute)
(documentation HighTea EnglishLanguage "&%HighTea refers to something eaten mid-day that
consists of light snacks and tea")
(termFormat EnglishLanguage HighTea "high tea")

(=>
  (and
    (instance ?X Meal)
    (attribute ?X HighTea))
  (exists (?TEA)
    (and
      (instance ?TEA Tea)
      (member ?TEA ?X))))

      

(instance Brunch RelationalAttribute)
(documentation Brunch EnglishLanguage "&%Brunch refers the combination of breakfast 
and lunch")
(termFormat EnglishLanguage Brunch "brunch")
    
(subclass BreakfastTime TimeInterval)
(documentation BreakfastTime EnglishLanguage "&%BreakfastTime is the time interval by
which the first meal of the day is typically eaten, which is in the morning")
(termFormat EnglishLanguage BreakfastTime "breakfast time")

(=>
  (instance ?TIME BreakfastTime)
  (exists (?MORN)
    (and
      (instance ?MORN Morning)
      (during ?TIME ?MORN))))
      
(subclass LunchTime TimeInterval)
(documentation LunchTime EnglishLanguage "&%LunchTime is the time interval by which
lunch, or the mid-day meal, is typically eaten, which is usually sometime between 
11am and 3pm")
(termFormat EnglishLanguage LunchTime "lunch time")

(=>
  (instance ?TIME LunchTime)
  (exists (?ELEVEN ?THREE)
    (and
      (during ?TIME 
        (TimeIntervalFn 
          (BeginFn ?ELEVEN)
          (EndFn ?THREE)))
      (instance ?ELEVEN (HourFn 11 ?DAY))
      (instance ?THREE (HourFn 15 ?DAY)))))
      
(subclass DinnerTime TimeInterval)
(documentation DinnerTime EnglishLanguage "&%DinnerTime is the time interval by which
dinner, or the evening meal, is typically eaten, which is usually sometime during the
evening")
(termFormat EnglishLanguage DinnerTime "dinner time")      

(=>
  (instance ?TIME DinnerTime)
  (exists (?NIGHT)
    (and
      (instance ?NIGHT NightTime)
      (during ?TIME ?NIGHT))))

(instance MealAttributeFn BinaryFunction)
(documentation MealAttributeFn EnglishLanguage "(&%MealAttributeFn ?MEAL ?AREA) returns
a &%RelationalAttribute to describe the &%Meal ?MEAL in a specific &%Region ?AREA. 
This coveres the cases where Steak and Eggs would be dinner in Asia but breakfast in
the US.")
(termFormat EnglishLanguage MealAttributeFn "meal attribute function")

(domain MealAttributeFn 1 Meal)
(domain MealAttributeFn 2 Region)
(range MealAttributeFn RelationalAttribute)

(exists (?MEAL ?REGION)
(attribute ?MEAL (MealAttributeFn ?MEAL ?REGION)))
      
;; organizing the Meat taxonomy
;; help coming from: http://en.wikipedia.org/wiki/List_of_meat_animals
;; ================================================================================

(=>
  (instance ?M Meat)
  (exists (?DA ?AC)
    (and
      (instance ?DA (DeadFn ?AC))
      (part ?M ?DA)
      (subclass ?AC Animal))))

;; ----------------------------------------------------------------------------
;; Seafood
;; ----------------------------------------------------------------------------

(subclass Seafood Meat)
(documentation Seafood EnglishLanguage "&%Seafood refers to &%Meat from &%Animal that
inhabit &%BodiesOfWater")
(termFormat EnglishLanguage Seafood "seafood")

;; if S is an instance of seafood, then s is a part of a dead animal who when it was
;; alive lived in a body of water
(=>
  (instance ?S Seafood)
  (exists (?X ?SEA)
    (and
      (meatOfAnimal ?S ?ANIMAL)
      (instance ?X ?ANIMAL)
      (instance ?SEA BodyOfWater)
      (inhabits ?X ?SEA))))

(subclass FishMeat Seafood)
(documentation FishMeat EnglishLanguage "&%Meat that was originally part of a &%Fish.")
(meatOfAnimal FishMeat Fish)

(subclass SalmonMeat FishMeat)
(documentation SalmonMeat EnglishLanguage "&%SalmonMeat is &%Meat that comes from &%Salmon.")    
      
(subclass Shellfish Seafood)
(documentation Shellfish EnglishLanguage "&%Shellfish refers to &%Seafood coming from
crustaceans, which are creatures live in bodies of water that have an exoskeleton")
      
(subclass CrabMeat Shellfish)
(meatOfAnimal CrabMeat Crab)
(termFormat EnglishLanguage CrabMeat "crab")

(subclass CrayfishMeat Shellfish)
(termFormat EnglishLanguage CrayfishMeat "crayfish")

(subclass LobsterMeat Shellfish)
(meatOfAnimal LobsterMeat Lobster)
(termFormat EnglishLanguage LobsterMeat "lobster")

(subclass PrawnMeat Shellfish)
(meatOfAnimal PrawnMeat Prawn)
(termFormat EnglishLanguage PrawnMeat "prawn")

(subclass Shrimp Crustacean)
(subclass ShrimpMeat Shellfish)
(meatOfAnimal ShrimpMeat Shrimp)
(termFormat EnglishLanguage ShrimpMeat "shrimp")

(subclass MolluskMeat Seafood)
(documentation MolluskMeat EnglishLanguage "&%MolluskMeat refers to &%Seafood coming from
soft-bodied invertebrates that is usually contained in a shell.")
(termFormat EnglishLanguage MolluskMeat "mollusk")
(meatOfAnimal MolluskMeat Mollusk)

(subclass AbaloneMeat MolluskMeat)
(termFormat EnglishLanguage AbaloneMeat "abalone")

(subclass ClamMeat MolluskMeat)
(termFormat EnglishLanguage ClamMeat "clam")

(subclass ConchMeat MolluskMeat)
(termFormat EnglishLanguage ConchMeat "conch")

(subclass LocoMeat MolluskMeat)
(termFormat EnglishLanguage LocoMeat "loco")

(subclass MusselMeat MolluskMeat)
(termFormat EnglishLanguage MusselMeat "mussel")

(subclass OysterMeat MolluskMeat)
(meatOfAnimal OysterMeat Oyster)
(termFormat EnglishLanguage OysterMeat "oyster")

(subclass ScallopMeat MolluskMeat)
(meatOfAnimal ScallopMeat Scallop)
(termFormat EnglishLanguage ScallopMeat "scallop")

(subclass WaterSnailMeat MolluskMeat)
(termFormat EnglishLanguage WaterSnailMeat "water snail")

(subclass CuttlefishMeat MolluskMeat)
(termFormat EnglishLanguage CuttlefishMeat "cuttlefish")

(subclass OctopusMeat MolluskMeat)
(termFormat EnglishLanguage OctopusMeat "octopus")

(subclass SquidMeat MolluskMeat)
(meatOfAnimal SquidMeat Squid)
(termFormat EnglishLanguage SquidMeat "squid")

;; ----------------------------------------------------------------------------
;; Poultry
;; ----------------------------------------------------------------------------

(subclass PoultryMeat Meat)
(documentation PoultryMeat EnglishLanguage "&%PoultryMeat refers to &%Meat coming from 
&%Poultry")
(termFormat EnglishLanguage PoultryMeat "poultry")

(meatOfAnimal PoultryMeat Bird)

;; definition of ChickenMeat already in Mid-level-ontology.kif

(subclass DuckMeat PoultryMeat)
(termFormat EnglishLanguage DuckMeat "duck")
(meatOfAnimal DuckMeat Duck)

(subclass GooseMeat PoultryMeat)
(termFormat EnglishLanguage GooseMeat "goose")
(meatOfAnimal GooseMeat Goose)

(subclass TurkeyMeat PoultryMeat)
(termFormat EnglishLanguage TurkeyMeat "turkey")
(meatOfAnimal TurkeyMeat TurkeyBird)

;; adding vcvp
(subclass QuailMeat PoultryMeat)
(termFormat EnglishLanguage QuailMeat "quail")
(meatOfAnimal QuailMeat QuailBird)

;; This is a new and lightly axiomatized ontology of food items.

(documentation Absolut EnglishLanguage "A brand of vodka")
(subclass Absolut Vodka)

(subclass Aioli PreparedFood)
(documentation Aioli EnglishLanguage "is a garlic mayonnaise. It 
is a traditional Provençal sauce made of garlic, olive oil, and 
(typically) egg. There are many variations, such as the addition 
of mustard or, in Catalonia, pears. It is usually served at room 
temperature.")
(=>
  (instance ?A Aioli)
  (and
    (material Garlic ?A)
    (material OliveOil ?A)))

(subclass Almond Nut)
(documentation Almond EnglishLanguage "Almond (Prunus dulcis, syn. 
Prunus amygdalus Batsch., Amygdalus communis L., Amygdalus dulcis 
Mill.), is the nut of this species of tree native to the Middle 
East and South Asia. [Wikipedia]")

(subclass Amaretto Liqueur)

(subclass Aperitif DistilledAlcoholicBeverage)
(documentation Aperitif EnglishLanguage "A class that includes digestifs.  A bitter alcoholic beverage
taken with food, supposed to aid in digestion.  This class does not include wine, brandy or other 
alcoholic beverages that may be used as aperitifs.")

(=>
  (instance ?X Aperitif)
  (attribute ?X Bitterness))

(instance Sweetness TasteAttribute)
(instance Bitterness TasteAttribute)
(instance Sourness TasteAttribute)
(instance Saltiness TasteAttribute)
(instance UmamiTaste TasteAttribute)

(subclass Arugula LeafyGreenVegetable)

(subclass Bacardi Rum)

(documentation Bacon EnglishLanguage "A cut of &%Pork that is cured in salt, then dried.")
(subclass Bacon Pork)
(subclass Bacon PreparedFood)
(=>
  (instance ?B Bacon)
  (material Salt ?B))

(subclass Bagel BreadOrBiscuit)

(subclass Baileys Liqueur)

(subclass Bamboo Grass)

(subclass Basil FloweringPlant)
(documentation Basil EnglishLanguage "An herb commonly used in Italian and Thai cooking, native to India.")
(externalImage Basil "http://commons.wikimedia.org/wiki/Image:Basil-Basilico-Ocimum_basilicum-albahaca.jpg")

(subclass Blueberry FloweringPlant)

(subclass Brie Cheese)

(subclass Broccoli FloweringPlant)
(externalImage Broccoli "http://commons.wikimedia.org/wiki/Image:Broccoli_in_a_dish_2.jpg")

(subclass Butterfly Insect)
(subclass ButternutSquash Squash)

(subclass Squid Mollusk)
(subclass Calamari PreparedFood)

(=>
  (instance ?C Calamari)
  (exists (?S)
    (and
      (meatOfAnimal ?S Squid)
      (material ?S ?C))))

(subclass Campari Aperitif)

(subclass Cappuccino PreparedFood)
(documentation Cappuccino EnglishLanguage "Espresso with foamed milk")

(=>
  (instance ?C Cappuccino)
  (material Milk ?C))

(=>
  (instance ?C Cappuccino)
  (material Coffee ?C))

(subclass CashewNut Nut)
(subclass Celery FloweringPlant)

(subclass Chambord Liqueur)

(subclass Champagne Wine)

(subclass CheddarCheese Cheese)

(subclass Chocolate PreparedFood)
(=>
  (instance ?C Chocolate)
  (material Cocoa ?C))

(subclass Cilantro FloweringPlant)

(subclass CocaCola Soda)

(subclass Cod Fish)

(subclass Cointreau Liqueur)

(subclass Couscous Pasta)

(subclass Crab Crustacean)

(subclass Cream Milk)

(subclass Daikon Radish)

(subclass EggYolk BodyPart)
(initialPart EggYolk Egg)
(=>
  (and
    (instance ?O Organism)
    (instance ?E Egg)
    (attribute ?O Embryonic)
    (part ?O ?E))
  (exists (?Y)
    (and
      (instance ?Y EggYolk)
      (hasPurpose ?Y
        (exists (?I)
          (and 
            (instance ?I Ingesting)
            (agent ?I ?O)
            (resource ?I ?Y)))))))

(subclass Endive LeafyGreenVegetable)

(subclass Espresso Coffee)

(subclass Feta Cheese)

(subclass Frying Cooking)
(=>
  (instance ?F Frying)
  (exists (?O)
    (and
      (instance ?O Oil)
      (resource ?F ?O))))

(documentation Garlic EnglishLanguage "Allium sativum, is a 
species in the onion family Alliaceae. Its close relatives 
include the onion, shallot, leek, chive, and rakkyo. Garlic 
has been used throughout history for both culinary and 
medicinal purposes. [Wikipedia]")

(subclass Garlic FloweringPlant)

(subclass GoatMeat Meat)
(meatOfAnimal GoatMeat Goat)

(subclass Gouda Cheese)

(subclass Grapefruit Fruit)

(subclass JamesonsWhiskey Whiskey)

(documentation Juice EnglishLanguage "A liquid (at room temperature) created by squeezing,
crushing, or pureeing a &%FruitOrVegetable.")
(subclass Juice Substance)
(initialPart Juice FruitOrVegetable)

(instance JuiceOfFn UnaryFunction)
(domainSubclass JuiceOfFn 1 FruitOrVegetable)
(rangeSubclass JuiceOfFn Juice)
(documentation JuiceOfFn EnglishLanguage "This function defines the class of &%Juice
created from a given &%FruitOrVegetable.")
(=>
  (instance ?X (JuiceOfFn ?Y))
  (exists (?Z ?P)
    (and
      (instance ?Z ?Y)
      (instance ?P Motion)
      (resource ?P ?Z)
      (result ?P ?X))))

(subclass Kahlua Liqueur)

(subclass Ketchup PreparedFood)
(=>
  (instance ?K Ketchup)
  (material Tomato ?K))

(subclass Lettuce LeafyGreenVegetable)
(subclass Linguine Pasta)

(=>
  (and
    (instance ?X Pasta)
    (not
      (exists (?Y)
        (and
          (instance ?Y Pasta)
          (part ?Y ?X)))))
  (attribute ?X LongAndThin))

(=>
  (and
    (instance ?S Spaghetti)
    (instance ?L Linguine)
    (width ?S ?W1)
    (width ?L ?W2))
  (greaterThan ?W2 ?W1))

(subclass Liqueur DistilledAlcoholicBeverage)
(=>
  (instance ?L Liqueur)
  (material Sugar ?L))

(documentation Liqueur EnglishLanguage "A sweet alcoholic beverage that has 
been flavored with one of various substances.")

(subclass Lobster Crustacean)

(subclass GrandMarnier Liqueur)

(subclass Mayonnaise PreparedFood)
(documentation Mayonnaise EnglishLanguage "Mayonnaise, is a stable emulsion of oil, 
&%EggYolk and either vinegar or &%Lemon juice, with many options for embellishment 
with other herbs and spices. Lecithin in the egg yolk is the emulsifier. It is 
often cream in color, and may range in texture from that of light running cream 
to thick. In countries influenced by &%France, mustard is also a common ingredient. 
In &%Spain, &%OliveOil is used as the oil and mustard is never included. Numerous 
other sauces can be created from it with addition of various herbs, spices, and 
finely chopped pickles. Where mustard is used, it is also an emulsifier. [Wikipedia].")
(=>
  (instance ?M Mayonnaise)
  (and
    (material Oil ?M)
    (material EggYolk ?M)))

(subclass Mint FloweringPlant)

(subclass Mozzarella Cheese)

(documentation Mushroom EnglishLanguage "A mushroom is the fleshy, spore-bearing 
fruiting body of a fungus, typically produced above ground on soil or on its food 
source. Like all fungi, mushrooms are not plants and do not undergo photosynthesis. 
The standard for the name 'mushroom' is the cultivated white button mushroom, 
Agaricus bisporus; hence the word 'mushroom' is most often applied to those fungi 
(Basidiomycota, Agaricomycetes) that have a stem (stipe), a cap (pileus), and 
gills (lamellae, sing. lamella) or pores on the underside of the cap. [Wikipedia]")
(subclass Mushroom ReproductiveBody)
(initialPart Mushroom Fungus)

(subclass Mustard FloweringPlant)

(subclass Omelette PreparedFood)
(=>
  (instance ?O Omelette)
  (exists (?F)
    (and
      (instance ?F Frying)
      (result ?F ?O))))

(=>
  (instance ?O Omelette)
  (material Egg ?O))

(subclass Onion FloweringPlant)
(subclass Oyster Mollusk)

(subclass Pancake BreadOrBiscuit)
(documentation Pancake EnglishLanguage "A pancake is a thin, flat, 
round cake prepared from a batter, or dough in some cases, and cooked 
on a hot griddle or frying pan. Most Pancakes are quick breads; some 
use a yeast-raised or fermented batter. Most Pancakes are cooked one 
side on a griddle and flipped partway through to cook the other side. 
Depending on the region, Pancake may be served at any time, with a 
variety of toppings or fillings including jam, chocolate chips, fruit, 
syrup or meat. [Wikipedia]")
(=>
  (instance ?P Pancake)
  (exists (?F)
    (and
      (instance ?F Frying)
      (result ?F ?P))))

(subclass ParmesanCheese Cheese)
(subclass Parsley FloweringPlant)

(subclass Pasta PreparedFood)
(documentation Pasta EnglishLanguage "Pasta is a generic term for a 
boiled food of different shapes made from an unleavened dough of wheat 
or buckwheat flour and water, sometimes with other ingredients such as 
eggs and vegetable extracts. Pastas include varieties that are filled 
with other ingredients like ravioli and tortellini. [Wikipedia]")

(=>
  (instance ?P Pasta)
  (material Flour ?P))

(subclass PatronTequilla Tequila)
(subclass Peach Fruit)

(subclass Penne Pasta)
(documentation Penne EnglishLanguage "Pasta consisting of medium length tubes with 
ridges, cut diagonally at both ends. [Wikipedia]")
(=>
  (and
    (instance ?X Penne)
    (not
      (exists (?Y)
        (and
          (instance ?Y Penne)
          (part ?Y ?X)))))
  (and
    (exists (?HOLE2)
      (and
        (instance ?HOLE2 Hole)
        (part ?X ?HOLE2)))
    (attribute ?X Fillable)))

(subclass Pickle PreparedFood)
(documentation Pickle EnglishLanguage "A pickled cucumber (commonly known as 
a pickle in Australia, Canada, and the United States or generically as Gherkins 
in the UK) is a cucumber that has been pickled in a brine, vinegar, or other 
solution and left to ferment for a period of time, by either immersing the 
cucumbers in an acidic solution or through souring by lacto-fermentation. [Wikipedia]")
(=>
  (instance ?P Pickle)
  (attribute ?P AcidicPH))

;; KJN: Edit.  Causes Partition errors.  
;;(instance AcidicPH Attribute)
(instance AcidicPH InternalAttribute)
(documentation AcidicPH EnglishLanguage "Having a pH of less than 7.")
(instance BasicPH Attribute)
(documentation BasicPH EnglishLanguage "Having a pH of more than 7.")
(contraryAttribute AcidicPH BasicPH)

(documentation Banana EnglishLanguage "Banana is the common name for herbaceous 
plants of the genus Musa and for the fruit they produce. Bananas come in a 
variety of sizes and colors when ripe, including yellow, purple, and red. There 
is no formal botanical distinction between bananas and plantains, and the use of 
either term is based purely on how the fruits are consumed. [Wikipedia]")

(subclass PortabelloMushroom Mushroom)

(subclass Prawn Crustacean)
(documentation Prawn EnglishLanguage "Prawns are decapod crustaceans, belonging 
to the sub-order Dendrobranchiata. The term 'prawn' is also used in various 
contexts for other animals, especially caridean shrimp. They are found worldwide 
and include commercially significant species, such as the whiteleg shrimp 
Litopenaeus vannamei, Atlantic white shrimp Penaeus setiferus, Indian prawn 
Fenneropenaeus indicus and tiger prawn Penaeus monodon. [Wikipedia]")

(subclass Cheese PreparedFood)

(subclass Provolone Cheese)

(subclass Radicchio LeafyGreenVegetable)

(subclass Raisin PreparedFood)
(documentation Raisin EnglishLanguage "A raisin is a dried grape.")
(=>
  (instance ?R Raisin)
  (exists (?D)
    (and
      (instance ?D Drying)
      (result ?D ?R))))

(subclass Raspberry Berry)

(subclass RicottaCheese Cheese)

(subclass RomaineLettuce LeafyGreenVegetable)

(documentation Rum EnglishLanguage "A distilled spirit made from molasses or 
sugarcane that is then aged.")
(subclass Rum DistilledAlcoholicBeverage)
(=>
  (instance ?R Rum)
  (exists (?D)
    (and
      (instance ?D Distilling)
      (instance ?S SugarCane)
      (resource ?D ?S)
      (result ?D ?R))))

(subclass Scallion FloweringPlant)

(subclass Scallop Mollusk)

(documentation Schnapps EnglishLanguage "A &%Liqueur made from distilling fruit.")
(subclass Schnapps Liqueur)
(=>
  (instance ?S Schnapps)
  (exists (?D ?F)
    (and
      (instance ?D Distilling)
      (instance ?F Fruit)
      (resource ?D ?F)
      (result ?D ?S))))

(=>
  (instance ?S Seafood)
  (exists (?DA ?F)
    (and
      (instance ?DA (DeadFn ?F))
      (part ?S ?DA)
      (subclass ?F Fish))))

(subclass Seaweed Alga)
(documentation Seaweed EnglishLanguage "Seaweed is a loose, colloquial term 
encompassing macroscopic, multicellular, benthic marine algae. The term includes 
some members of the red, brown and green algae. [text courtesy Wikipedia]")

(subclass Sesame FloweringPlant)
(subclass Shallot FloweringPlant)

(subclass Skate Fish)
(documentation Skate EnglishLanguage "Skates are cartilaginous fish belonging 
to the family Rajidae in the superorder Batoidea of rays. There are more than 
200 described species in 27 genera. There are two subfamilies, Rajinae (hardnose 
skates) and Arhynchobatinae (softnose skates). [text courtesy Wikipedia]")

(subclass CarbonDioxide CompoundSubstance)
(documentation CarbonDioxide EnglishLanguage "Carbon dioxide is a common
compound in the Earth's atmosphere, and an essential compound used in the 
cycle of photosynthesis.")

(=>
  (and
    (instance ?CD CarbonDioxide)
    (instance ?CD Molecule))
  (exists (?C ?O1 ?O2)
    (and
      (instance ?C Carbon)
      (instance ?O1 Oxygen)
      (instance ?O2 Oxygen)
      (instance ?C Atom)
      (instance ?O1 Atom)
      (instance ?O2 Atom)
      (part ?C ?CD)
      (part ?O1 ?CD)
      (part ?O2 ?CD)
      (not (equal ?O1 ?O2)))))

(subclass Soda Beverage)
(subclass Soda Mixture)
(=>
  (instance ?S Soda)
  (exists (?CD)
    (and
      (instance ?CD CarbonDioxide)
      (part ?CD ?S))))
      
(subclass Sorbet PreparedFood)
(documentation Sorbet EnglishLanguage "Sorbet is a frozen dessert made from 
sweetened water flavored with fruit (typically juice or puree), and also 
sometimes wine and/or liqueur. [Wikipedia]")
(=>
  (instance ?S Sorbet)
  (material Water ?S))

(=>
  (instance ?S Sorbet)
  (material Fruit ?S))

(=>
  (instance ?S Sorbet)
  (material Sugar ?S))

(subclass Spaghetti Pasta)
(documentation Spaghetti EnglishLanguage "Spaghetti is a long, thin, cylindrical 
pasta.  Spaghetti is made of semolina or flour and water. Italian dried spaghetti 
is made from durum wheat semolina, but outside of Italy it may be made with other 
kinds of flour. Traditionally most spaghetti was 50 cm (20ins) long, but shorter 
lengths gained in popularity during the latter half of the 20th century and now 
spaghetti is most commonly available in 25–30 cm (10–12 in) lengths. [Wikipedia]")

(=>
  (and
    (instance ?X Spaghetti)
    (not
      (exists (?Y)
        (and
          (instance ?Y Spaghetti)
          (part ?Y ?X)))))
  (attribute ?X LongAndThin))

(subclass Spinach LeafyGreenVegetable)

(subclass Steak Beef)

(subclass Stolichnoya Vodka)
(documentation Stolichnoya EnglishLanguage "A brand of &%Vodka.")

(subclass Strawberry FloweringPlant)

(subclass TamarindFruit Fruit)

(documentation Tequila EnglishLanguage "A &%DistilledAlcoholicBeverage made from the &%BlueAgave plant.")
(subclass Tequila DistilledAlcoholicBeverage)
(=>
  (instance ?T Tequila)
  (exists (?D)
    (and
      (instance ?D Distilling)
      (instance ?B BlueAgave)
      (resource ?D ?B)
      (result ?D ?T))))

(subclass BlueAgave FloweringPlant)
(documentation BlueAgave EnglishLanguage "A succulent that is native to Jalisco, Mexico, and used
in the production of &%Tequila.")

(subclass Tofu PreparedFood)
(documentation Tofu EnglishLanguage "Tofu or bean curd is a food made by, 
coagulating soy milk and then pressing the resulting curds into soft 
white blocks. [Wikipedia]")

(=>
  (instance ?X Tofu)
  (material Soybean ?X))

(subclass Tuna Fish)

(subclass Turmeric Spice)

(instance Vegetarian Attribute)
(=>
  (attribute ?F Vegetarian)
  (not
    (exists (?M)
      (and
        (instance ?M Meat)
        (part ?M ?F)))))
        
(instance Vegan Attribute)
(=>
  (attribute ?F Vegan)
  (and
    (attribute ?F Vegetarian)
    (not
       (exists (?D)
       (and
        (instance ?D Dairy)
        (part ?D ?F))))))        

(subclass Fermentation BiologicalProcess)
(documentation Fermentation EnglishLanguage "Fermentation in food processing 
typically is the conversion of carbohydrates to alcohols and carbon dioxide 
or organic acids using yeasts, bacteria, or a combination thereof, under 
anaerobic conditions. [Wikipedia]")
(=>
  (instance ?F Fermentation)
  (exists (?C ?M)
    (and
      (instance ?C Carbohydrate)
      (instance ?M Microorganism)
      (instrument ?F ?M)
      (resource ?F ?C))))

(documentation Vinegar EnglishLanguage "Vinegar is an acidic liquid produced 
from the fermentation of ethanol in a process that yields its key ingredient, 
acetic acid (ethanoic acid). It also may come in a diluted form. pH of table 
vinegar ranges from 2.4 to 3.4 (higher if diluted). The acetic acid 
concentration typically ranges from 4% to 8% by volume for table vinegar 
and up to 18% for pickling. Natural vinegars also contain small amounts of 
tartaric acid, citric acid, and other acids. Vinegar has been used since 
ancient times and is an important element in European, Asian, and other 
cuisines. [Wikipedia]")
(subclass Vinegar Substance)
(=>
  (instance ?V Vinegar)
  (attribute ?V AcidicPH))

(=>
  (instance ?V Vinegar)
  (exists (?F)
    (and
      (instance ?F Fermentation)
      (result ?F ?V))))

(subclass Cask FluidContainer)
(documentation Cask EnglishLanguage "A &%FluidContainer made of &%Wood, 
typically used during the modern area for ageing of alcoholic beverages.")
(=>
  (instance ?C Cask)
  (material Wood ?C))

(subclass Vodka DistilledAlcoholicBeverage)
(documentation Vodka EnglishLanguage "A &%DistilledAlcoholicBeverage made from a 
&%CerealGrain to which water is added prior to drinking.")

(=>
  (instance ?V Vodka)
  (exists (?W)
    (and
      (instance ?W Water)
      (part ?W ?V))))

(=>
  (instance ?V Vodka)
  (exists (?D)
    (and
      (instance ?D Distilling)
      (instance ?CG CerealGrain)
      (resource ?D ?CG)
      (result ?D ?V))))

(documentation Whiskey EnglishLanguage "A distilled alcoholic beverage made 
from a &%CerealGrain typically aged in oak casks.")
(subclass Whiskey DistilledAlcoholicBeverage)

(=>
  (instance ?W Whiskey)
  (exists (?D)
    (and
      (instance ?D Distilling)
      (instance ?CG CerealGrain)
      (resource ?D ?CG)
      (result ?D ?W))))

(=>
  (and
    (instance ?W Whiskey)
    (instance ?D Distilling)
    (result ?D ?W)
    (resource ?DR ?W)
    (instance ?DR Drinking))
  (exists (?C ?T)
    (and
      (instance ?C Cask)
      (instance ?H Hole)
      (hole ?H ?C)
      (holdsDuring ?T
        (partiallyFills ?W ?C))
      (earlier ?D ?T)
      (earlier ?T ?DR))))

;; KJN: Moved from Mid-level-ontology.kif      
(subclass Brandy DistilledAlcoholicBeverage)
(documentation Brandy EnglishLanguage "A &%DistilledAlcoholicBeverage that is prepared by 
distilling &%Wine.")
(=>
  (instance ?B Brandy)
  (exists (?D ?W)
    (and
      (instance ?D Distilling)
      (instance ?W Wine)
      (resource ?D ?W)
      (result ?D ?B))))
      

(subclass WaterChestnut Vegetable)
(subclass Ziti Pasta)
(subclass Zucchini Vegetable)

