1. A method comprising: receiving an input virtual recursive attribute and an input value for a distinguished name (DN) entry, wherein the DN entry corresponds to an object defined in a schema for a lightweight directory access protocol (LDAP) directory, and wherein the input virtual recursive attribute does not correspond to an object defined in the schema because a value of the input virtual recursive attribute is determined by the value of an entry to which the input virtual recursive attribute points plus a value of a DN of the pointed-to entry; and generating an attribute list that defines values for an inverse of the input virtual recursive attribute by: navigating through a list of DN values for the input virtual recursive attribute; and adding a DN value from the list as an entry in the attribute list if the DN value in the list matches the input value; wherein the virtual recursive attribute and the inverse of the virtual recursive attribute form a bidirectional graph of a portion of the LDAP directory for which the virtual recursive attribute has been generated.