> expressing them as joins becomes both a performance penalty
Under the hood, graph databases are still effectively performing 'joins'. There'll likely be optimisations with respect to node lookups, but the fundamental issue of locality of access is still there: it's simply a hard problem in graph data storage. Depending on the flexibility/declaritiveness of the query language provided, there's still the issue of intermediate result set explosion that also plagues triple stores.
This isn't meant to say that graph databases aren't very useful: native graph stores will certainly offer some useful technical specialisations and ease of use benefits - it's more to say that there's not (afaik) anything wondrous under the hood that means that native graph databases fundamentally solve the performance challenges of graph-structures-on-relational-dbs.
Under the hood, graph databases are still effectively performing 'joins'. There'll likely be optimisations with respect to node lookups, but the fundamental issue of locality of access is still there: it's simply a hard problem in graph data storage. Depending on the flexibility/declaritiveness of the query language provided, there's still the issue of intermediate result set explosion that also plagues triple stores.
This isn't meant to say that graph databases aren't very useful: native graph stores will certainly offer some useful technical specialisations and ease of use benefits - it's more to say that there's not (afaik) anything wondrous under the hood that means that native graph databases fundamentally solve the performance challenges of graph-structures-on-relational-dbs.