Domain knowledge is knowledge of a specific, specialised discipline or field, in contrast to general (or domain-independent) knowledge.  The term is often used in reference to a more general discipline—for example, in describing a software engineer who has general knowledge of computer programming as well as domain knowledge about developing programs for a particular industry. People with domain knowledge are often regarded as specialists or experts in their field.

Knowledge capture
In software engineering, domain knowledge is knowledge about the environment in which the target system operates, for example, software agents. Domain knowledge usually must be learned from software users in the domain (as domain specialists/experts), rather than from software developers. It may include user workflows, data pipelines, business policies, configurations and constraints and is crucial in the development of a software application. Expert's domain knowledge (frequently informal and ill-structured) is transformed in computer programs and active data, for example in a set of rules in knowledge bases, by knowledge engineers.

Communicating between end-users and software developers is often difficult. They  must find a common language to communicate in. Developing enough shared vocabulary to communicate can often take a while.

The same knowledge can be included in different domain knowledge.
Knowledge which may be applicable across a number of domains is called domain-independent knowledge, for example logics and mathematics.
Operations on domain knowledge are performed by meta-knowledge.

See also
 Artificial intelligence
 Domain (software engineering)
 Domain engineering
 Domain of discourse
 Knowledge engineering
 Subject-matter expert

Literature
 Hjørland, B. & Albrechtsen, H. (1995). Toward A New Horizon in Information Science: Domain Analysis. Journal of the American Society for Information Science, 1995, 46(6), p. 400–425.

Knowledge engineering