Да, API кажется существенным отличием, но не является поверхностным. Концептуально набор объектов будет формировать граф, и вы могли бы подумать об API, который обрабатывает этот граф единообразно. И наоборот, теоретически вы можете создать общую структуру графа для шаблонов и отобразить их на объекты, предоставляемые через некоторый API. Но дизайн API реального продукта, как правило, будет влиять на то, как на самом деле хранятся данные, как они могут быть запрошены, так что было бы совсем не просто, скажем, создать оболочку и сделать ее похожей на что-то другое. Кроме того, объектно-ориентированная база данных должна предлагать некоторые гарантии целостности и структуру типирования, которую графическая база данных обычно не делает. На самом деле, серьезные ОО-базы далеки от «свободной формы»:)
Взгляните на [HyperGraphDB] [1] - это как полноценная объектно-ориентированная база данных (например, db4o), так и очень продвинутая графовая база данных с точки зрения возможностей представления и запросов. Он способен хранить обобщенные гиперграфы (где ребра могут указывать более чем на один узел, а также на другие ребра), он имеет полностью расширяемую систему типов, встроенную в виде графа и т. Д.
В отличие от других графовых баз данных, в HyperGraphDB каждый объект становится узлом или ребром графа, с минимальным вмешательством API, и у вас есть выбор представления ваших объектов в виде графа или обработки их способом, который ортогонально структуре графа (как значения «полезной нагрузки» ваших узлов или ребер). Вы можете выполнять сложные обходы, индивидуальную индексацию и запросы.
Объяснение, почему HyperGraphDB на самом деле является ODMS, см. В блоге Является ли HyperGraphDB базой данных OO? на сайте Kobrix.