syntax = "proto3";
package serialise;
enum GraphType {
EVENT = 0;
PERSISTENT = 1;
}
message Graph {
GraphType graph_type = 1;
repeated NewMeta metas = 2;
repeated NewNode nodes = 3;
repeated NewEdge edges = 4;
repeated GraphUpdate updates = 5;
}
message NewMeta {
oneof meta {
NewNodeType new_node_type = 2;
NewNodeCProp new_node_cprop = 3;
NewNodeTProp new_node_tprop = 5;
NewGraphCProp new_graph_cprop = 7;
NewGraphTProp new_graph_tprop = 9;
NewLayer new_layer = 11;
NewEdgeCProp new_edge_cprop = 14;
NewEdgeTProp new_edge_tprop = 16;
}
message NewNodeType {
string name = 1;
uint64 id = 2;
}
message NewGraphCProp {
string name = 1;
uint64 id = 2;
}
message NewGraphTProp {
string name = 1;
uint64 id = 2;
PropType.PropType p_type = 3 [deprecated = true];
PropType.PType p_type2 = 4;
}
message NewNodeCProp {
string name = 1;
uint64 id = 2;
PropType.PropType p_type = 3 [deprecated = true];
PropType.PType p_type2 = 4;
}
message NewNodeTProp {
string name = 1;
uint64 id = 2;
PropType.PropType p_type = 3[deprecated = true];
PropType.PType p_type2 = 4;
}
message NewEdgeCProp {
string name = 1;
uint64 id = 2;
PropType.PropType p_type = 3[deprecated = true];
PropType.PType p_type2 = 4;
}
message NewEdgeTProp {
string name = 1;
uint64 id = 2;
PropType.PropType p_type = 3 [deprecated = true];
PropType.PType p_type2 = 4;
}
message NewLayer {
string name = 1;
uint64 id = 2;
}
}
message NewNode {
oneof gid {
string gid_str = 1;
uint64 gid_u64 = 2;
};
uint64 vid = 3;
uint64 type_id = 4;
}
message NewEdge{
uint64 src = 1;
uint64 dst = 2;
uint64 eid = 3;
}
message GraphUpdate {
oneof update {
UpdateNodeCProps update_node_cprops = 1;
UpdateNodeTProps update_node_tprops = 2;
UpdateGraphCProps update_graph_cprops = 3;
UpdateGraphTProps update_graph_tprops = 4;
DelEdge del_edge = 5;
UpdateEdgeCProps update_edge_cprops = 6;
UpdateEdgeTProps update_edge_tprops = 7;
UpdateNodeType update_node_type = 8;
}
message UpdateNodeTProps {
uint64 id = 1;
int64 time = 2;
uint64 secondary = 3;
repeated PropPair properties = 5;
}
message UpdateNodeCProps {
uint64 id = 1;
repeated PropPair properties = 2;
}
message UpdateNodeType {
uint64 id = 1;
uint64 type_id = 2;
}
message UpdateEdgeTProps {
uint64 eid = 1;
int64 time = 2;
uint64 secondary = 3;
uint64 layer_id = 4;
repeated PropPair properties = 5;
}
message DelEdge{
uint64 eid = 1;
int64 time = 2;
uint64 secondary = 3;
uint64 layer_id = 4;
}
message UpdateEdgeCProps {
uint64 eid = 1;
uint64 layer_id = 2;
repeated PropPair properties = 3;
}
message UpdateGraphCProps {
repeated PropPair properties = 1;
}
message UpdateGraphTProps {
int64 time = 1;
uint64 secondary = 2;
repeated PropPair properties = 3;
}
message PropPair {
uint64 key = 1;
Prop value = 2;
}
}
message PropType {
enum PropType {
Str = 0;
U8 = 1;
U16 = 2;
I32 = 3;
I64 = 4;
U32 = 5;
U64 = 6;
F32 = 7;
F64 = 8;
Bool = 9;
List = 10;
Map = 11;
NDTime = 12;
Graph = 13 [deprecated = true];
PersistentGraph = 14 [deprecated = true];
Document = 15;
DTime = 16;
}
message Array {
PropType p_type = 1;
}
message Scalar {
PropType p_type = 1;
}
message Decimal{
uint32 scale = 1;
}
message PType{
oneof kind {
Scalar scalar = 1;
Array array = 2;
Decimal decimal = 3;
}
}
}
message Prop {
oneof value {
string str = 1;
uint32 u8 = 2; // Note: Protobuf does not have a UInt8 type, using uint32 instead.
uint32 u16 = 3; // Note: Protobuf does not have a UInt16 type, using uint32 instead.
int32 i32 = 4;
int64 i64 = 5;
uint32 u32 = 6;
uint64 u64 = 7;
float f32 = 8;
double f64 = 9;
bool bool_value = 10;
Props prop = 11;
Dict map = 12;
Graph graph = 13 [deprecated = true]; // Assuming Data can be represented as bytes.
Graph persistentGraph = 14 [deprecated = true]; // Assuming Data can be represented as bytes.
NDTime ndTime = 15;
string dTime = 16;
DocumentInput documentInput = 17;
Array array = 18;
string decimal = 19;
}
message Array {
bytes data = 1;
}
message NDTime{
uint32 year = 1;
uint32 month = 2;
uint32 day = 3;
uint32 hour = 4;
uint32 minute = 5;
uint32 second = 6;
uint32 nanos = 7;
}
message Dict{
map<string, Prop> map = 1;
}
message Props{
repeated Prop properties = 1;
}
message DocumentInput {
string content = 1;
Lifespan life = 2;
}
message Lifespan {
oneof l_type {
Interval interval = 1;
Event event = 2;
// Inherited is represented by the absence of both interval and event.
}
message Interval {
int64 start = 1;
int64 end = 2;
}
message Event {
int64 time = 1;
}
}
}