@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.
@@ -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
+ }