There are triplestores (semantic databases), and there are general-purpose graph databases.
Both are based on the similar concepts of linking one \"item\" to another via
To start with, besically all data-structures can be projected more or less painful into any underlying storage engine (or even your file system and text files). The reason to choose a certain data model and storage backend are IMHO:
As mentioned before, both RDBMSes and TripleStores tend to be useful at runtime in "shallow" traversing of JOIN or SparQL traversals, and do much work in caches or prepared views etc. Graph Databases (uniquely Neo4j) put the graph structure actually down to the storage layer and do pointer chasing (with a number of optimizations) on node-record level. Thus, when traversing the graph, you don't need to touch more than your current subgraph down to the storage layer, thus being able to traverse parts of the data without touching the whole graph, resulting in constant performance for a number of interesting scenarios.