1. A method for sharing data between software systems, comprising: maintaining a graph data structure in storage of a computing device, said graph data structure having data items and relationships therebetween that are semantically described; storing a request received from a first software system for requested data that is semantically described, and an address declared by said first software system; detecting whenever at least one value of said data items in said graph data structure is updated: and if an update to at least one value of said data items in said graph data structure is detected: semantically resolving said requested data to a set of said data items in said graph data structure; and passing changes to values of said set of said data items to which said requested data semantically resolves to said first software system at said address.