Systems and techniques for facilitating link analysis may be implemented by creating a data structure that includes a flexible and optimal representation of data for use in performing link analysis. The data structure may be used for storing data relating to a knowledge domain, and the data may include generic nodes, node instances, generic links, and link instances. Each generic node may define properties of potential node instances. Each node instance may be based on a corresponding generic node and may represent an entity in the knowledge domain. Each generic link may define properties and/or functions of potential link instances. Each link instance may be based on a corresponding generic link and may represent a relationship between node instances. The data may be stored in tables in a database and may be analyzed by performing a link-by-link search to infer new knowledge about relationships among entities in the knowledge domain.