CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to the following and commonly-assigned patent application, which application is incorporated by reference herein:

U.S. Patent Application Ser. No. 62/913,380, filed on Oct. 10, 2019, with inventor(s) Robert Maguire and Ravinder Krishnaswamy, entitled “Document tracking through Version Hash Linked Graphs”.

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention relates generally to tracking document versions, and in particular, to a method, system, apparatus, and article of manufacture for connecting document versions using a document hash that is used to construct a graph that may be further analyzed and utilized.

Description of the Related Art

In today's cloud connected and multi-device world, collaboration through sharing documents and document content is the norm. Such collaboration requires coordinated access of document and document content versions. Furthermore, analysis of the collaborators and the collaboration itself (e.g., what and how the collaborators are interacting/saving/editing/viewing files/documents within the collaboration environment, etc.) in an efficient and comprehensive manner can inform application product feature development. In this regard, collaboration makes it increasingly important for businesses that provide document viewing and editing applications to:1. Understand how different segments of users and industries interact with each other in order to help the business prioritize investment in product features; and2. Provide productivity enhancement tools that address challenges of their users collaborating on shared documents, such as timely notification of document edits and document version reconciliation.

Techniques that exist in prior art which use hash based linkage for collaboration scenarios are described below. These provide context for the key new concepts in the present invention and the problem space they address,

Use of Chained Hashes

The notion of linking versions of data by hashes is not new. The underlying mechanism for GIT uses hashes of commits—and chains together the commit hashes to generate a DAG (Directed Acyclic Graph) of commits for efficient lookup of commit context using hashes only.FIG. 1illustrates a DAG of hash commits used in GIT. As illustrated, each time changes are committed to code (referred to as a “commit”), a snapshot is taken, and change sets between two snapshots can be applied or rolled back. Each snapshot is named with a commit/hash ID102that is derived from the content of the snapshot (e.g., actual content and some metadata such as time of submission, author information, parents, etc.). A stream of changes in GIT is an ordered list of change sets as they are applied one after another to go from one snapshot/commit102to the next. A pointer to a specific snapshot is referred to as a “branch” and the “head”104points to the location of the branch (e.g., master branch106) that was last checked out of a workspace. Different features may be defined in other branches108that may be eventually merged into the master branch106. Further branches106-108may be created on any valid snapshot version110-112. In addition, as illustrated, commits102may have multiple parents114, and each parent may have multiple children116.

However, what is missing from such chained hashes is the ability to provide deeper context for a general understanding of the users/personas/industries performing the commits as well as the ability for a hash to be used more than to merely look up commit context.

In the crypto currency and distributed ledger world, different forms of chaining based on hash values are fundamental to the algorithms.FIG. 2illustrates hash chaining as used in crypto currency. A blockchain is comprised of various blocks202that are linked204with one another. A hash tree (also referred to as a Merkle tree) encodes the blockchain200data. Every transaction206occurring on the blockchain200network has a hash208associated with it that are stored in a tree-like structure such that each hash208is linked to its parent following a parent-child tree-like relation. All the transaction hashes208in a block202are also hashed, resulting in a Merkle root210. The Merkle root210contains all of the information about every single transaction hash208that exists on the respective block202. Each block may also have a nonce212(“number only used once”). The nonce212is a number added to a hashed block202that, when rehashed, meets difficulty level restrictions, and is the number that blockchain miners are solving for. Each block202also contains a timestamp214(e.g., for the current time) that is used to establish a block's validity (e.g., a timestamp may be accepted as valid if it is greater than the median timestamp of the previous 11 blocks and less than the network-adjusted time +2 hours). Further, the previous hash216for each block202is a hash of the previous block202(e.g., an identification of/pointer to the hash of the previous block).

However, while hash functions are fundamental for blockchain algorithms in representing linkages of data blocks securely, they fail to provide the advantages of the structure of that of the present invention (as described below).

Data Management Solutions

In addition to the use of chained hashes as described above, prior art data management solutions may also be used to enable collaboration. However, prior art data management solutions (e.g., Product Data Management-PDM applications) require users to have their data work within the constraints of the application for version management and notification.

In view of the above, what is needed is the flexibility to enable collaboration and an analysis of such collaboration that is efficient and not constrained to a particular application or document repository.

SUMMARY OF THE INVENTION

Embodiments of the invention provide a data structure to connect document versions by using a document hash and/or unique identifier of its content to construct a graph. Such a data structure and graph can be used for:Data analytics processing to infer collaboration networks of industries and user types through their access to common data. This addresses the ability to understand how different segments of users and industries interact with each other (e.g., to help a business priorities investment in product features).Applications to detect out of date version document access, notification of document updates, and document version reconciliation and aggregate document usage statistics in an organization or project. This addresses the ability to provide productivity enhancement tools that address challenges of users collaborating on shared documents.

