Knowledge engineers integrate structured knowledge into computer systems (knowledge bases) in order to solve complex problems normally requiring a high level of human expertise or artificial intelligence methods. They are also responsible for eliciting or extracting knowledge from information sources, maintaining this knowledge, and making it available to the organisation or users. To achieve this, they are aware of knowledge representation and maintenance techniques (rules, frames, semantic nets, ontologies) and use knowledge extraction techniques and tools. They can design and build expert or artificial intelligence systems that use this knowledge.