Open nichtich opened 8 months ago
Tomaszuk et a.l. (2019) did a survery of property graph database systems and serialization formats. The support of different graph features in database systems can be summarized as following:
In addition there are differences in allowed labels and property keys and in supported data types.
Translated to profiles this could be e.g.
node-labels
: 0
(none) | 1
(required, one) | ?
(optional, one) | +
(required, many) | *
(optional, many)edge-labels
: 0
(none) | 1
(required, one) | ?
(optional, one) | +
(required, many) | *
(optional, many)node-label-pattern
: regexedge-label-pattern
: regexedge-direction
: directed
| undirected
| mixed
edge-set
: nodes
(one edge between two nodes at most) | labels
(restricted by label) | value
(restricted by label and properties)property-value
: one
| set
| list
| mixed
(does any system support lists instead of sets?)data-types
: set of string
, null
, ...data-type-int-max
, data-type-int-min
...
A profile is a set of rules restricting the set of possible property graphs. Examples:
Profiles help to compare capabilities of property graph formats and databases.
A profile can be applied as filter to modify a graph (e.g. rewrite node identifiers to numbers) or as validator.
Possible argument
--profile
(repeatable),--validate
or--warn
.