public static void initialiseInterproDb() throws IOException,
			ParsingException {
		Builder parser = new Builder();
		Document doc = parser.build(new BufferedInputStream(
				new FileInputStream(new File(getSettings()
						.getPathToInterproDatabase()))));
		Nodes ipr_nodes = doc.query("//interpro");
		for (int i = 0; i < ipr_nodes.size(); i++) {
			Element ipr_el = (Element) ipr_nodes.get(i);
			InterproResult ipr = new InterproResult(getAttributeValue(ipr_el,
					"id"), getAttributeValue(ipr_el, "short_name"),
					getAttributeValue(ipr_el, "type"));
			ipr.setName(retrieveContentOfFirstChildElement(ipr_el, "name"));
			// Retrieve Parent-Id:
			Nodes resultNodes = ipr_el.query("parent_list");
			if (resultNodes.size() > 0) {
				resultNodes = resultNodes.get(0).query("rel_ref");
				if (resultNodes.size() > 0) {
					Attribute relRefAttr = ((Element) resultNodes.get(0))
							.getAttribute("ipr_ref");
					if (relRefAttr != null)
						ipr.setParentId(relRefAttr.getValue());
				}
			}
			// Initialise contained InterproResults:
			resultNodes = ipr_el.query("contains");
			if (resultNodes.size() > 0) {
				resultNodes = ((Element) resultNodes.get(0)).query("rel_ref");
				if (resultNodes.size() > 0) {
					for (int j = 0; j < resultNodes.size(); j++) {
						Element relRefElmnt = (Element) resultNodes.get(j);
						Attribute relRefAttr = relRefElmnt
								.getAttribute("ipr_ref");
						if (relRefAttr != null) {
							ipr.getContains().add(relRefAttr.getValue());
						}
					}
				}
			}
			// Add new InterproResult to the Interpro-Memory-Database:
			getInterproDb().put(ipr.getId(), ipr);
		}
	}