=begin rdoc
= Module Taxo
=== Description
iCookware taxonomy format. This module model the weight of every attribute of ingredients according to
our taxonomy, which is stored in the file all_zutaten_verbessert.txt. 
The "main" methode of this modul is getClassVector and belongs to the class Ingredient.
It is in fact an interface to TAXO. getClassVector takes an ingredient as string, looks what class it belongs to and returns the acording attribute vector. File call_taxo.rb give an example for it.

Note: Please note that not all ingredients are modelled in this module yet!
There are for example such classes as alcohol, fruits, spices, herbs and some others, which were not required in this project. The whole list of the modeled classes of ingredients can be found in lines 441-792. The list of non modeled ingredients starts in the line 793 of this module.

===Taxonomy
The taxomony of ingredients is, as said before, stored in the file all_zutaten_verbessert.txt and represents a set of different classes of ingredients, which partially depends of each other. It contains 258 ingredients extracted from our Meal Master corpus assignet to 94 classes. 42 of classes are modeled in the project. It concerns about such main classes as:
* vegetables
* meat
* fish
* chese and
* such garnishing as e.g. rice or nudels.
Following classes are included in the taxonomy but not modeled in this module: 
* alcohol
* fruits
* spices and herbs
* flour and dough
* sauce
* colourings etc.

With the object of interface to PLAIN as well as futher processing every ingredient will be listed in singular.

Author:: Olga Mordvinova (mordvino@cl.uni-heidelberg.de)
Project:: iCookWare
Copyright:: iCookWare Team 2005 (Nicola Kaiser, Ana Kovatcheva, Olga Mordvinova, Stephanie Schuldes)
Embedded Documentation Tool:: rdoc
=end

module TAXO

class Ingredient

#== Class Ingredient
#Ingredient is a main class.

		@@taxofile="all_zutaten_verbessert_sing.txt"
		@@factor=0.1 # default factor 
		@@iclass=""
		@@vector_default=[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
		
		@@kochbar=1.0*@@factor
		@@bratbar=1.0*@@factor
		@@schneidbar=1.0*@@factor
		@@hackbar=1.0*@@factor
		@@reibbar=1.0*@@factor
		@@puerierbar=1.0*@@factor
		@@passierbar=1.0*@@factor
		@@schaelbar=1.0*@@factor
		@@roh_essbar=1.0*@@factor
		@@vegetarisch=1.0*@@factor
		@@faserig=1.0*@@factor
		@@pulver=1.0*@@factor
		@@mehlig=1.0*@@factor
		@@blaettrig=1.0*@@factor
		@@fuellbar=1.0*@@factor
		@@suess	=1.0*@@factor
		@@salzig=1.0*@@factor
		@@sauer=1.0*@@factor
		@@scharf=1.0*@@factor
		@@bitter=1.0*@@factor
		@@fett=1.0*@@factor
		@@wasser=1.0*@@factor
		@@eiweiss=1.0*@@factor
		@@kohlenhydrate=1.0*@@factor
		@@dichte=1.0*@@factor
		@@zustand=1.0*@@factor
		@@proz_vom_HG=1.0*@@factor
		@@rot=1.0*@@factor
		@@weiss=1.0*@@factor
		@@kuh=1.0*@@factor
		@@schaf=1.0*@@factor
		@@rotschmiere=1.0*@@factor
		@@blauschimmel=1.0*@@factor
		@@weissschimmel=1.0*@@factor


	
	
#==== Ingredient.printVector(vector)
#(({TAXO::Ingredient.printVector(vector)})) is basically an auxiliary methode, which by printing out atributtes of the Ingredient helps to control assigned values.	
 
	def Ingredient.printVector(vector)
			print "Kochbar: #{vector[0]}, Bratbar: #{vector[1]}, Schneidbar: #{vector[2]}, Hackbar:#{vector[3]}, Reibbar: #{vector[4]}, Puerierbar: #{vector[5]}, Passierbar: #{vector[6]}, Schaelbar: #{vector[7]}, Rohessbar: #{vector[8]}, Vegetarisch: #{vector[9]}, Faserig: #{vector[10]}, Pulver: #{vector[11]}, Mehlig: #{vector[12]}, Blaettrig: #{vector[13]}, Fuellbar: #{vector[14]}, Suess: #{vector[15]}, Salzig: #{vector[16]}, Sauer: #{vector[17]}, Scharf: #{vector[18]}, Bitter: #{vector[19]}, Fett: #{vector[20]}, Wasser: #{vector[21]}, Eiweiss: #{vector[22]}, Kohlenhydrate: #{vector[23]}, Dichte: #{vector[24]}, Zustand: #{vector[25]}, \% von HG: #{vector[26]}, istRot\?: #{vector[27]}, istWeiss\?: #{vector[28]}, Kuh: #{vector[29]}, Schaf: #{vector[30]}, Rotschmiere: #{vector[31]}, Blauschimmel: #{vector[32]}, Weissschimmel: #{vector[33]}\n\n"
	end

#==== Ingredient.attributes
#(({TAXO::Ingredient.attributes})) is an an auxiliary methode as well and allows in fact accessiing all attributes of the Ingredient.


	def Ingredient.attributes
		@@kochbar
		@@bratbar
		@@schneidbar
		@@hackbar
		@@reibbar
		@@puerierbar
		@@passierbar
		@@schaelbar
		@@roh_essbar
		@@vegetarisch
		@@faserig
		@@pulver
		@@mehlig
		@@blaettrig
		@@fuellbar
		@@suess
		@@salzig
		@@sauer
		@@scharf
		@@bitter
		@@fett
		@@wasser
		@@eiweiss
		@@kohlenhydrate
		@@dichte
		@@zustand
		@@proz_vom_HG
		@@rot
		@@weiss
		@@kuh
		@@schaf
		@@rotschmiere
		@@blauschimmel
		@@weissschimmel
	end

	
#==== clearAttributes()
#(({TAXO ::clearAttributes})) clears vector values (stored into the class variables defined above) and weight them with the factor of 0.1.	

	def clearAttributes()
			
		@@kochbar=1.0*@@factor
		@@bratbar=1.0*@@factor
		@@schneidbar=1.0*@@factor
		@@hackbar=1.0*@@factor
		@@reibbar=1.0*@@factor
		@@puerierbar=1.0*@@factor
		@@passierbar=1.0*@@factor
		@@schaelbar=1.0*@@factor
		@@roh_essbar=1.0*@@factor
		@@vegetarisch=1.0*@@factor
		@@faserig=1.0*@@factor
		@@pulver=1.0*@@factor
		@@mehlig=1.0*@@factor
		@@blaettrig=1.0*@@factor
		@@fuellbar=1.0*@@factor
		@@suess	=1.0*@@factor
		@@salzig=1.0*@@factor
		@@sauer=1.0*@@factor
		@@scharf=1.0*@@factor
		@@bitter=1.0*@@factor
		@@fett=1.0*@@factor
		@@wasser=1.0*@@factor
		@@eiweiss=1.0*@@factor
		@@kohlenhydrate=1.0*@@factor
		@@dichte=1.0*@@factor
		@@zustand=1.0*@@factor
		@@proz_vom_HG=1.0*@@factor
		@@rot=1.0*@@factor
		@@weiss=1.0*@@factor
		@@kuh=1.0*@@factor
		@@schaf=1.0*@@factor
		@@rotschmiere=1.0*@@factor
		@@blauschimmel=1.0*@@factor
		@@weissschimmel=1.0*@@factor
		end 

#==== returnVector()
#(({TAXO::returnVector})) returns weighted vector. 			
			
		def returnVector()
		
		vector=[]
		vector[0]=@@kochbar
		vector[1]=@@bratbar
		vector[2]=@@schneidbar
		vector[3]=@@hackbar
		vector[4]=@@reibbar
		vector[5]=@@puerierbar
		vector[6]=@@passierbar
		vector[7]=@@schaelbar
		vector[8]=@@roh_essbar
		vector[9]=@@vegetarisch
		vector[10]=@@faserig
		vector[11]=@@pulver
		vector[12]=@@mehlig
		vector[13]=@@blaettrig
		vector[14]=@@fuellbar
		vector[15]=@@suess
		vector[16]=@@salzig
		vector[17]=@@sauer
		vector[18]=@@scharf
		vector[19]=@@bitter
		vector[20]=@@fett
		vector[21]=@@wasser
		vector[22]=@@eiweiss
		vector[23]=@@kohlenhydrate
		vector[24]=@@dichte
		vector[25]=@@zustand
		vector[26]=@@proz_vom_HG
		vector[27]=@@rot
		vector[28]=@@weiss
		vector[29]=@@kuh
		vector[30]=@@schaf
		vector[31]=@@rotschmiere
		vector[32]=@@blauschimmel
		vector[33]=@@weissschimmel
		return vector 		
	end


#==== getClass(filename, ingredient)
#(({TAXO::getClass(filename, ingredient)})) takes the ingredient name as well as the file name where taxonomy is stored and searchs for the according class of the ingredient. Was the search successfull true will be returned.	
			def getClass(filename, ingredient)
				print ":-> Look for [" + ingredient + "] in the Taxonomy " + filename + "\n"
				taxoFile=File.new(filename, "r") 
				taxoFile.each_line { |line|
				#print line 
				if (String(line) =~ /.*[:\#]\w+/) then
				
					@@class=line.gsub(/[:\#\s\t]/, '')
					#print @@class + " \n"
				else
					print ": Compare: " + line.downcase.chomp + " " + ingredient.downcase.chomp + "\n"
					if (line.downcase.chomp == ingredient.downcase.chomp) then
						taxoFile.close
						print ":-> Class [" + @@class + "] for Ingredient [" + ingredient		
						print "] ...... found!\n"
						return true
					end
					
				end
				}
			taxoFile.close
			return false
	end

#==== getClassVector(ingredient)	
#(({TAXO::getClassVector(ingredient)})) takes an ingredient (basically a string), looks what class it belongs to and returns the acording attribute vector.

	def getClassVector(ingredient)
	
		ingred=Ingredient.new()
		if ingred.getClass(@@taxofile, ingredient) then
			vector=[]
			#print ingredient
			if @@class=="FLEISCH" then
				elem=FLEISCH.new()
				vector=elem.returnVector()
			end
			if @@class=="GEFLUEGEL" then
				elem=GEFLUEGEL.new()
				vector=elem.returnVector()
			end
			if @@class=="WILD" then
				elem=WILD.new()
				vector=elem.returnVector()
			end
			if @@class=="BROT" then
				elem=BROT.new()
				vector=elem.returnVector()
			end
			if @@class=="GRIESS" then
				elem=GRIESS.new()
				vector=elem.returnVector()
			end
			if @@class=="NUESSE_KERNE" then
				elem=NUESSE_KERNE.new()
				vector=elem.returnVector()
			end
			if @@class=="FETT" then
				elem=FETT.new()
				vector=elem.returnVector()
			end
			if @@class=="OEL" then
				elem=OEL.new()
				vector=elem.returnVector()
			end
			if @@class=="BUTTER" then
				elem=BUTTER.new()
				vector=elem.returnVector()
			end
			if @@class=="MARGARINE" then
				elem=MARGARINE.new()
				vector=elem.returnVector()
			end
			if @@class=="ESSIG" then
				elem=ESSIG.new()
				vector=elem.returnVector()
			end
			if @@class=="BINDEMITTEL" then
				elem=BINDEMITTEL.new()
				vector=elem.returnVector()
			end
			if @@class=="NUDELN" then
				elem=NUDELN.new()
				vector=elem.returnVector()
			end
			if @@class=="LASAGNE" then
				elem=LASAGNE.new()
				vector=elem.returnVector()
			end
			if @@class=="REIS" then
				elem=REIS.new()
				vector=elem.returnVector()
			end
			if @@class=="FISCH" then
				elem=FISCH.new()
				vector=elem.returnVector()
			end
			if @@class=="MEERESFRUECHTE" then
				elem=MEERESFRUECHTE.new()
				vector=elem.returnVector()
			end
			if @@class=="ALGEN" then
				elem=ALGEN.new()
				vector=elem.returnVector()					
			end
			if @@class=="RIND" then
				elem=RIND.new()
				vector=elem.returnVector()
			end
			if @@class=="SCHWEIN" then
				elem=SCHWEIN.new()
				vector=elem.returnVector()
			end
			if @@class=="KANINCHEN" then
				elem=KANINCHEN.new()
				vector=elem.returnVector()
			end
 			if @@class=="LAMM" then
				elem=LAMM.new()
				vector=elem.returnVector()
			end
			if @@class=="FLEISCH_VERARBEITET" then
				elem=FLEISCH_VERARBEITET.new()
				vector=elem.returnVector()
			end
			if @@class=="WUERSTE" then
				elem=WUERSTE.new()
				vector=elem.returnVector()
			end
			if @@class=="EI" then
				elem=EI.new()
				vector=elem.returnVector()
			end			
			if @@class=="GEMUESE" then
				elem=GEMUESE.new()
				vector=elem.returnVector()
			end
			if @@class=="KOHL" then
				elem=KOHL.new()
				vector=elem.returnVector()
			end
			if @@class=="ZUCCHINI" then
				elem=ZUCCHINI.new()
				vector=elem.returnVector()
			end
			if @@class=="AUBERGINEN" then
				elem=AUBERGINEN.new()
				vector=elem.returnVector()
			end
			if @@class=="FENCHEL" then
				elem=FENCHEL.new()
				vector=elem.returnVector()
			end
			if @@class=="KUERBIS" then
				elem=KUERBIS.new()
				vector=elem.returnVector()
			end
			if @@class=="KAROTTEN" then
				elem=KAROTTEN.new()
				vector=elem.returnVector()
			end
			if @@class=="KARTOFFELN" then
				elem=KARTOFFELN.new()
				vector=elem.returnVector()
			end
			if @@class=="ZWIEBELN" then
				elem=ZWIEBELN.new()
				vector=elem.returnVector()
			end
			if @@class=="TOMATEN" then
				elem=TOMATEN.new()
				vector=elem.returnVector()
			end
			if @@class=="PAPRIKA" then
				elem=PAPRIKA.new()
				vector=elem.returnVector()
			end
			if @@class=="SELLERIE" then
				elem=SELLERIE.new()
				vector=elem.returnVector()
			end
			if @@class=="SPARGEL" then
				elem=SPARGEL.new()
				vector=elem.returnVector()
			end
			if @@class=="SPINAT" then
				elem=SPINAT.new()
				vector=elem.returnVector()
			end
			if @@class=="ERBSEN_BOHNEN" then
				elem=ERBSEN_BOHNEN.new()
				vector=elem.returnVector()
			end
			if @@class=="ARTISCHOCKEN" then
				elem=ARTISCHOCKEN.new()
				vector=elem.returnVector()
			end
			if @@class=="ERBSEN_BOHNEN" then
				elem=ERBSEN_BOHNEN.new()
				vector=elem.returnVector()
			end
			if @@class=="GEMUESEMISCHUNG" then
				elem=GEMUESEMISCHUNG.new()
				vector=elem.returnVector()
			end
			if @@class=="PILZE" then
				elem=PILZE.new()
				vector=elem.returnVector()
			end
			if @@class=="KAESE" then
				elem=KAESE.new()
				vector=elem.returnVector()
			end
			if @@class=="HARTKAESE" then
				elem=HARTKAESE.new()
				vector=elem.returnVector()
			end
			if @@class=="WEICHKAESE" then
				elem=WEICHKAESE.new()
				vector=elem.returnVector()
			end
			if @@class=="FRISCHKAESE" then
				elem=FRISCHKAESE.new()
				vector=elem.returnVector()
			end
			if @@class=="RAHM" then
				elem=RAHM.new()
				vector=elem.returnVector()
			end
			if @@class=="JOGHURT" then
				elem=JOGHURT.new()
				vector=elem.returnVector()
			end
			if @@class=="MILCH" then
				elem=MILCH.new()
				vector=elem.returnVector()
			end
			if @@class=="SALAT" then
				elem=SALAT.new()
				vector=elem.returnVector()
			end
			
			# ...	etc.		
		else				       
		print ":-> Class not found! Return default vector:\n"
		return @@vector_default
		
		end
		print ":-> Return weighted Vector:\n"
		ingred.clearAttributes()
		return vector
	end					
	
end

# Classes of taxonomy, weighted
class BROT < Ingredient
	def initialize()
		@@roh_essbar=1.0
		@@vegetarisch=1.0
	end
end

class GRIESS < Ingredient
	def initialize()
		@@vegetarisch=1.0
	end
end 

class NUESSE_KERNE < Ingredient
	def initialize()
		@@reibbar=1.0
		@@zustand=1.0 # da hart
		@@vegetarisch=1.0
	end
end

class FETT  < Ingredient
end

class OEL < FETT
	def initialize()
		elem=FETT.new()	
	end
end

class  BUTTER < FETT
	def initialize()
		elem=FETT.new()
		@@zustand=1.0 # da hart	
	end
end

class MARGARINE < FETT
	def initialize()
		elem=FETT.new()	
		@@zustand=1.0 # da hart
	end
end

class ESSIG  < Ingredient
	def initialize()
		@@sauer=1.0
	end
end

class BINDEMITTEL  < Ingredient
	def initialize()
		@@pulver=1.0
	end	
end

class NUDELN  < Ingredient
	def initialize()
		@@vegetarisch=1.0
	end
end

class LASAGNE  < Ingredient
	def initialize()
		@@blaettrig=1.0
		@@vegetarisch=1.0
	end
end

class REIS  < Ingredient
	def initialize()
		@@vegetarisch=1.0
	end
end

class FISCH < Ingredient
end

class MEERESFRUECHTE < Ingredient
end

class ALGEN < Ingredient
end

class FLEISCH < Ingredient	
end

#=begin
#== How we Weight an Ingredient
class GEFLUEGEL < FLEISCH 
	def initialize()
		elem=FLEISCH.new()	
		@@weiss=1.0
		@@fuellbar=1.0
	end
end
#=end

class WILD < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@rot=1.0
		@@hackbar=1.0
	end
end

class RIND < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@rot=1.0
		@@hackbar=1.0
	end
end

class SCHWEIN < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@rot=1.0
		@@hackbar=1.0
	end
end

class KALB < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@weiss=1.0
		@@hackbar=1.0
	end
end

class KANINCHEN < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@rot=1.0
		@@fuellbar=1.0
	end
end

class LAMM < FLEISCH
	def initialize()
		elem=FLEISCH.new()	
		@@rot=1.0
		@@hackbar=1.0
	end
end

class FLEISCH_VERARBEITET < Ingredient
end

class WUERSTE < Ingredient
end

class EI < Ingredient
end


# GEMUESE
class GEMUESE < Ingredient
	def initialize()
		@@vegetarisch=1.0			
	end
end

class  KOHL < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@roh_essbar=0.7
		@@fuellbar=0.5
		@@blaettrig=0.7
		@@schneidbar=0.5
		@@kochbar=0.5
		@@bratbar=0.5
	end
end

class ZUCCHINI < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@fuellbar=1.0
		@@bratbar=1.0
		@@schneidbar=0.5
	end
end

class AUBERGINEN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@fuellbar=1.0
		@@bratbar=1.0
		@@schneidbar=0.5
	end
end

class FENCHEL < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@kochbar=0.7
	end
end

class KUERBIS < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@schaelbar=0.5	
		@@suess=0.7
		@@schneidbar=0.5
		@@kochbar=0.5
		@@faserig=0.7
	end
end

class KAROTTEN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@roh_essbar=1.0
		@@schaelbar=0.5	
		@@reibbar=0.5
		@@mehlig=0.5
		@@bratbar=0.5
		@@purierbar=0.5
		@@passierbar=0.6
		@@schneidbar=0.5
		@@reibbar=0.7
	end
end

class KARTOFFELN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@kochbar=0.5
		@@bratbar=0.8
		@@reibbar=0.8
		@@schaelbar=0.8	
		@@reibbar=0.5
		@@schneidbar=0.5
		@@fuellbar=0.8
	end
end

class ZWIEBELN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@roh_essbar=0.4	
		@@schneidbar=0.5
		@@kochbar=0.5
		@@bratbar=0.5
	end
end

class TOMATEN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@roh_essbar=1.0	
		@@passierbar=1.0
		@@kochbar=0.5
		@@fuellbar=1.0
		@@schneidbar=0.5
		@@bratbar=0.5
	end
end

class PAPRIKA < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@fuellbar=1.0
		@@roh_essbar=1.0	
		@@suess=0.5
		@@schneidbar=0.5
		@@kochbar=0.5
		@@bratbar=0.5
	end
end

class SELLERIE < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@kochbar=0.7
		@@roh_essbar=0.3
	end
end

class SPARGEL < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@schaelbar=1.0
		@@kochbar=1.0
	end
end

class SPINAT < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@kochbar=1.0
		@@blaettrig=1.0
		@@puerierbar=0.5
	end
end

class ERBSEN_BOHNEN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()
		@@roh_essbar=0.3	
		@@kochbar=0.7
	end
end

class ARTISCHOCKEN < GEMUESE 
	def initialize()
		elem=GEMUESE.new()	
		@@kochbar=1.0
	end
end

class GEMUESEMISCHUNG < GEMUESE 
end

class PILZE < Ingredient
	def initialize()
		@@vegetarisch=1.0
		@@bratbar=0.8
		@@schneidbar=0.8
		@@kochbar=0.4
	end
end

class KAESE < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class HARTKAESE < KAESE
	def initialize()
		elem=KAESE.new()	
		@@reibbar=1.0
		@@schneidbar=1.0
	end
end

class WEICHKAESE < KAESE
	def initialize()
		elem=KAESE.new()
		@@schneidbar=1.0
	end
end

class FRISCHKAESE < KAESE
end

class RAHM < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class JOGHURT < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class MILCH < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class SALAT < Ingredient
	def initialize()
		@@blaettrig=1.0
		@@roh_essbar=1.0
	end
end


# This stuff is not modeled yet
class MEHL  < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class SEMMELBROESEL < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class TEIG  < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class FARBSTOFFE  < Ingredient
end

class HEFE  < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class OLIVEN < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class KAPERN < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class KAKAO < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class BRUEHE < Ingredient
end

class FOND < Ingredient
end

class NUDELSAUCE < Ingredient
end

class WEIN < Ingredient
end

class BRAENDE < Ingredient
end

#OBST not modeled yet
class OBST < Ingredient
	def initialize()
		@@vegetarisch=1.0
					
	end
end

class WEINTRAUBEN < OBST
end

class ZITRONE < OBST
end

class  PFLAUMEN < OBST
end

# KRAEUTER not modeled yet
class KRAEUTER < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class KRAEUTERMISCHUNG < KRAEUTER
end

class THYMIAN < KRAEUTER
end

class KORIANDER < KRAEUTER
end

class ESTRAGON < KRAEUTER
end

class DILL < KRAEUTER
end

class PETERSILIE < KRAEUTER
end

class KERBEL < KRAEUTER
end

class SALBEI < KRAEUTER
end

class MAJORAN < KRAEUTER
end

class OREGANO < KRAEUTER
end

class ROSMARIN < KRAEUTER
end

class BASILIKUM < KRAEUTER
end

class LORBEER < KRAEUTER
end

class KRESSE < KRAEUTER
end

class KRAEUTERPASTE < KRAEUTER
end

# GEWUERZE not modeled yet
class GEWUERZE < Ingredient
	def initialize()
		@@vegetarisch=1.0
						
	end
end

class PFEFFER < GEWUERZE
end

class SALZ  < GEWUERZE
end

class ZUCKER  < GEWUERZE
end

class SENF  < GEWUERZE
end

class CHILI_PEPERONI  < GEWUERZE
end

class WASABI  < GEWUERZE
end

class SOJA  < GEWUERZE
end

class CURRY  < GEWUERZE
end

class ZIMT  < GEWUERZE
end

class ZITRONAT  < GEWUERZE
end

class SAFRAN  < GEWUERZE
end

class MUSKAT < GEWUERZE
end

class NELKE  < GEWUERZE
end

class MINZE  < GEWUERZE
end

class KREUZKUEMMEL  < GEWUERZE
end

class KURKUMA  < GEWUERZE
end

class GEWUERZMISCHUNGEN  < GEWUERZE
end

class KNOBLAUCH  < GEWUERZE
end

end #taxo
