@kgdiff/core 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/graph-json.d.ts +3 -2
- package/dist/graph-json.d.ts.map +1 -1
- package/dist/graph-json.js +7 -3
- package/dist/graph-json.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/normalize.d.ts +4 -1
- package/dist/normalize.d.ts.map +1 -1
- package/dist/normalize.js +21 -1
- package/dist/normalize.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
- package/schema/delta.v1.json +176 -0
- package/schema/diff.v1.json +566 -0
- package/schema/graph.v1.json +154 -0
- package/src/graph-json.ts +7 -3
- package/src/index.ts +8 -3
- package/src/normalize.ts +28 -1
- package/src/types.ts +9 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@kgdiff/core/schema/delta.v1.json",
|
|
4
|
+
"title": "kgdiff delta, version 1",
|
|
5
|
+
"description": "An invertible, verifiable patch from one graph version to another, as `kgdiff --delta` writes it. See https://github.com/iiwish/kgdiff/blob/main/docs/delta-format.md",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"format": { "const": "kgdiff.delta" },
|
|
9
|
+
"version": {
|
|
10
|
+
"const": 1,
|
|
11
|
+
"description": "Readers reject versions they do not support."
|
|
12
|
+
},
|
|
13
|
+
"edgeIdentity": {
|
|
14
|
+
"enum": ["structure", "id"],
|
|
15
|
+
"description": "How edges are identified: by (source, predicate, target), or by their ids."
|
|
16
|
+
},
|
|
17
|
+
"base": {
|
|
18
|
+
"$ref": "#/$defs/graphRef",
|
|
19
|
+
"description": "The graph the delta applies to."
|
|
20
|
+
},
|
|
21
|
+
"target": {
|
|
22
|
+
"$ref": "#/$defs/graphRef",
|
|
23
|
+
"description": "The graph it produces."
|
|
24
|
+
},
|
|
25
|
+
"ops": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "$ref": "#/$defs/op" },
|
|
28
|
+
"description": "Operations in canonical order. Ids refer to the graph reached by the previous operations."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": ["format", "version", "edgeIdentity", "base", "target", "ops"],
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"$defs": {
|
|
34
|
+
"graphRef": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"properties": {
|
|
37
|
+
"name": { "type": "string" },
|
|
38
|
+
"version": { "type": "string" },
|
|
39
|
+
"hash": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"pattern": "^c53:[0-9a-f]{14}$",
|
|
42
|
+
"description": "hashGraph of the normalized graph (positions and meta excluded)."
|
|
43
|
+
},
|
|
44
|
+
"nodes": { "type": "integer", "minimum": 0 },
|
|
45
|
+
"edges": { "type": "integer", "minimum": 0 }
|
|
46
|
+
},
|
|
47
|
+
"required": ["hash", "nodes", "edges"],
|
|
48
|
+
"additionalProperties": false
|
|
49
|
+
},
|
|
50
|
+
"id": { "$ref": "graph.v1.json#/$defs/id" },
|
|
51
|
+
"node": {
|
|
52
|
+
"$ref": "graph.v1.json#/$defs/node",
|
|
53
|
+
"description": "A full snapshot of the node."
|
|
54
|
+
},
|
|
55
|
+
"edge": {
|
|
56
|
+
"$ref": "graph.v1.json#/$defs/edge",
|
|
57
|
+
"description": "The edge, which identifies it and states its expected content."
|
|
58
|
+
},
|
|
59
|
+
"nodeFieldValue": {
|
|
60
|
+
"anyOf": [
|
|
61
|
+
{ "type": "string" },
|
|
62
|
+
{ "type": "array", "items": { "type": "string" } },
|
|
63
|
+
{ "type": "boolean" }
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"op": {
|
|
67
|
+
"oneOf": [
|
|
68
|
+
{ "$ref": "#/$defs/node.rekey" },
|
|
69
|
+
{ "$ref": "#/$defs/edge.remove" },
|
|
70
|
+
{ "$ref": "#/$defs/node.remove" },
|
|
71
|
+
{ "$ref": "#/$defs/node.set" },
|
|
72
|
+
{ "$ref": "#/$defs/node.attr" },
|
|
73
|
+
{ "$ref": "#/$defs/node.add" },
|
|
74
|
+
{ "$ref": "#/$defs/edge.add" },
|
|
75
|
+
{ "$ref": "#/$defs/edge.set" },
|
|
76
|
+
{ "$ref": "#/$defs/edge.attr" }
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"node.rekey": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"properties": {
|
|
82
|
+
"op": { "const": "node.rekey" },
|
|
83
|
+
"from": { "$ref": "#/$defs/id" },
|
|
84
|
+
"to": { "$ref": "#/$defs/id" }
|
|
85
|
+
},
|
|
86
|
+
"required": ["op", "from", "to"],
|
|
87
|
+
"additionalProperties": false
|
|
88
|
+
},
|
|
89
|
+
"edge.remove": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"properties": {
|
|
92
|
+
"op": { "const": "edge.remove" },
|
|
93
|
+
"edge": { "$ref": "#/$defs/edge" }
|
|
94
|
+
},
|
|
95
|
+
"required": ["op", "edge"],
|
|
96
|
+
"additionalProperties": false
|
|
97
|
+
},
|
|
98
|
+
"node.remove": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"properties": {
|
|
101
|
+
"op": { "const": "node.remove" },
|
|
102
|
+
"node": { "$ref": "#/$defs/node" }
|
|
103
|
+
},
|
|
104
|
+
"required": ["op", "node"],
|
|
105
|
+
"additionalProperties": false
|
|
106
|
+
},
|
|
107
|
+
"node.set": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"properties": {
|
|
110
|
+
"op": { "const": "node.set" },
|
|
111
|
+
"id": { "$ref": "#/$defs/id" },
|
|
112
|
+
"field": {
|
|
113
|
+
"enum": ["label", "types", "aliases", "deprecated", "replaces", "replacedBy"]
|
|
114
|
+
},
|
|
115
|
+
"from": { "$ref": "#/$defs/nodeFieldValue" },
|
|
116
|
+
"to": { "$ref": "#/$defs/nodeFieldValue" }
|
|
117
|
+
},
|
|
118
|
+
"required": ["op", "id", "field", "from", "to"],
|
|
119
|
+
"additionalProperties": false
|
|
120
|
+
},
|
|
121
|
+
"node.attr": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"properties": {
|
|
124
|
+
"op": { "const": "node.attr" },
|
|
125
|
+
"id": { "$ref": "#/$defs/id" },
|
|
126
|
+
"key": { "type": "string" },
|
|
127
|
+
"from": { "description": "The value before; absent when the attribute is added." },
|
|
128
|
+
"to": { "description": "The value after; absent when the attribute is removed." }
|
|
129
|
+
},
|
|
130
|
+
"required": ["op", "id", "key"],
|
|
131
|
+
"additionalProperties": false
|
|
132
|
+
},
|
|
133
|
+
"node.add": {
|
|
134
|
+
"type": "object",
|
|
135
|
+
"properties": {
|
|
136
|
+
"op": { "const": "node.add" },
|
|
137
|
+
"node": { "$ref": "#/$defs/node" }
|
|
138
|
+
},
|
|
139
|
+
"required": ["op", "node"],
|
|
140
|
+
"additionalProperties": false
|
|
141
|
+
},
|
|
142
|
+
"edge.add": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"properties": {
|
|
145
|
+
"op": { "const": "edge.add" },
|
|
146
|
+
"edge": { "$ref": "#/$defs/edge" }
|
|
147
|
+
},
|
|
148
|
+
"required": ["op", "edge"],
|
|
149
|
+
"additionalProperties": false
|
|
150
|
+
},
|
|
151
|
+
"edge.set": {
|
|
152
|
+
"type": "object",
|
|
153
|
+
"properties": {
|
|
154
|
+
"op": { "const": "edge.set" },
|
|
155
|
+
"edge": { "$ref": "#/$defs/edge" },
|
|
156
|
+
"field": { "const": "label" },
|
|
157
|
+
"from": { "type": "string" },
|
|
158
|
+
"to": { "type": "string" }
|
|
159
|
+
},
|
|
160
|
+
"required": ["op", "edge", "field", "from", "to"],
|
|
161
|
+
"additionalProperties": false
|
|
162
|
+
},
|
|
163
|
+
"edge.attr": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"op": { "const": "edge.attr" },
|
|
167
|
+
"edge": { "$ref": "#/$defs/edge" },
|
|
168
|
+
"key": { "type": "string" },
|
|
169
|
+
"from": { "description": "The value before; absent when the attribute is added." },
|
|
170
|
+
"to": { "description": "The value after; absent when the attribute is removed." }
|
|
171
|
+
},
|
|
172
|
+
"required": ["op", "edge", "key"],
|
|
173
|
+
"additionalProperties": false
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|