I had come up with a property graph schema which greatly simplifies the concepts and reduces the pointer chasing present in the JSON. Implementing the backend of the PDG as a property graph instead of JSON is a reasonable and beneficial task, but I'm not comfortable with any of the available property graph databases. There are many options available:
- survey: https://wiki.python.org/moin/PythonGraphApi
- Neo4j community edition
- OrientDB community edition
- TinkerPop
- CayleyGraph
My criteria are open source, widely adopted, stable.
I want the graph content to be plain text. For Neo4j, this means exporting graph content to a Cypher representation:
- https://neo4j.com/docs/labs/apoc/current/export/cypher/
- https://neo4j.com/developer/kb/export-sub-graph-to-cypher-and-import/
I want to be able to enforce constraints on the property graph to prevent undesired edges or properties. In Neo4j this is possible but not supported in the community edition.
- https://neo4j.com/docs/cypher-manual/current/administration/constraints/
- https://neo4j.com/docs/labs/nsmntx/current/validation/
Staring at the current PDG JSON file, the structure is reasonably intuitive and relatively close to the property graph schema I had come up with. The JSON structure is not a "nodes and edges" design. The JSON is hierarchical (nested dictionaries) to both be more concise and to reduce the computational pointer chasing.
No comments:
Post a Comment