private void loadOntology(){
		ontology = new ArrayList<ConceptList>();
		displayOntology = new ArrayList<ConceptList>();
		
		//Load the special nouns (which will be used for filtering the noun list)
		this.specialConceptList = loadSpecialConceptList();
		
		//Load Ontology
		SAXBuilder builder = new SAXBuilder();
		File ontologyDirectory = new File(DB_PATH_ONTOLOGY);
		
		//Get only all the xml files
		File[] posFiles = ontologyDirectory.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File folder, String name) {
                return name.toLowerCase().endsWith(".xml");
            }
        });
		for(File xmlFile: posFiles){
			try{
				Document document = (Document) builder.build(xmlFile);
				Element posElement = document.getRootElement();		
				ConceptList currConceptList = new ConceptList(posElement);
				ontology.add(currConceptList);
				
				//If Noun, do something special with the display ontology
				String pos = posElement.getAttributeValue("name");
				
				if(pos.toLowerCase().equals(PartOfSpeech.NOUN.toLowerCase())){ //split the nouns for display ontology
					ConceptList filteredNounList = new ConceptList(pos, "Noun");
					ConceptList masculineNounList = new ConceptList(pos, "Masculine Noun");
					ConceptList feminineNounList = new ConceptList(pos, "Feminine Noun");
					ConceptList placeNameList = new ConceptList(pos, "Place Name");
					
					//loop through and pick the non-special ones, and add to display conceptlist
					for(Concept noun: currConceptList.getConceptList()){
						if(isNounMasculine(specialConceptList, noun.getName(), noun.getSense())){
							masculineNounList.addNewConceptWithoutSavingToXML(noun);
						}
						else if(isNounFeminine(specialConceptList, noun.getName(), noun.getSense())){
							feminineNounList.addNewConceptWithoutSavingToXML(noun);
						}
						else if(isNounPlace(specialConceptList, noun.getName(), noun.getSense())){
							placeNameList.addNewConceptWithoutSavingToXML(noun);
						}
						else{
							filteredNounList.addNewConceptWithoutSavingToXML(noun);
						}
					}
					
					//Add all these new lists to the display ontology
					displayOntology.add(filteredNounList);
					displayOntology.add(masculineNounList);
					displayOntology.add(feminineNounList);
					displayOntology.add(placeNameList);	
				}
				else //simply add to display ontology if not noun
					displayOntology.add(currConceptList);
						
			}catch(Exception e){e.printStackTrace();}
		}
		
		//It is important that the ontology and display ontology have references to the same Concept Objects so that when alteration happens (no matter the display), the noun db is still updated.
	}