comparison doc/graph-sharing.svg @ 2450:a4052905ca7d default tip

notes about how rdfdb syncs, or should sync
author drewp@bigasterisk.com
date Mon, 03 Jun 2024 23:01:54 -0700
parents
children
comparison
equal deleted inserted replaced
2449:4bab5bbce195 2450:a4052905ca7d
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4 <svg
5 width="297mm"
6 height="210mm"
7 viewBox="0 0 297 210"
8 version="1.1"
9 id="svg1"
10 inkscape:version="1.3.2 (091e20e, 2023-11-25)"
11 sodipodi:docname="graph-sharing.svg"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14 xmlns="http://www.w3.org/2000/svg"
15 xmlns:svg="http://www.w3.org/2000/svg">
16 <sodipodi:namedview
17 id="namedview1"
18 pagecolor="#ffffff"
19 bordercolor="#666666"
20 borderopacity="1.0"
21 inkscape:showpageshadow="2"
22 inkscape:pageopacity="0.0"
23 inkscape:pagecheckerboard="0"
24 inkscape:deskcolor="#d1d1d1"
25 inkscape:document-units="mm"
26 inkscape:zoom="1.5732464"
27 inkscape:cx="493.24761"
28 inkscape:cy="574.60804"
29 inkscape:window-width="2772"
30 inkscape:window-height="1594"
31 inkscape:window-x="3949"
32 inkscape:window-y="423"
33 inkscape:window-maximized="0"
34 inkscape:current-layer="layer1"
35 showgrid="true">
36 <inkscape:grid
37 id="grid50"
38 units="cm"
39 originx="0"
40 originy="0"
41 spacingx="5"
42 spacingy="5"
43 empcolor="#0000ff"
44 empopacity="0.25098039"
45 color="#0000ff"
46 opacity="0.1254902"
47 empspacing="5"
48 dotted="true"
49 gridanglex="30"
50 gridanglez="30"
51 visible="true" />
52 </sodipodi:namedview>
53 <defs
54 id="defs1" />
55 <g
56 inkscape:label="Layer 1"
57 inkscape:groupmode="layer"
58 id="layer1">
59 <text
60 xml:space="preserve"
61 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:323.634;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
62 x="59.083897"
63 y="227.62686"
64 id="text1"
65 transform="matrix(0.26458333,0,0,0.26458333,9.9912138,70.64917)"><tspan
66 x="59.083897"
67 y="227.62686"
68 id="tspan5">&lt;graph&gt; element with access to the </tspan><tspan
69 x="59.083897"
70 y="247.62687"
71 id="tspan9">window's <tspan
72 style="font-weight:bold"
73 id="tspan7">SyncedGraph</tspan> and a little status </tspan><tspan
74 x="59.083897"
75 y="267.62687"
76 id="tspan10">widget
77 </tspan></text>
78 <text
79 xml:space="preserve"
80 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
81 x="50.021576"
82 y="160.41574"
83 id="text3"
84 transform="matrix(0.26458333,0,0,0.26458333,3.4435403,78.808712)"><tspan
85 sodipodi:role="line"
86 id="tspan3"
87 x="50.021576"
88 y="160.41574">&lt;some-page-or-subpage&gt;</tspan></text>
89 <text
90 xml:space="preserve"
91 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
92 x="759.15027"
93 y="180.25575"
94 id="text4"
95 transform="matrix(0.26458333,0,0,0.26458333,3.574644,-30.839148)"><tspan
96 sodipodi:role="line"
97 id="tspan4"
98 x="759.15027"
99 y="180.25575">rdfdb server</tspan></text>
100 <text
101 xml:space="preserve"
102 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
103 x="760.51025"
104 y="269.38141"
105 id="text6"
106 transform="matrix(0.26458333,0,0,0.26458333,7.6506319,-14.377524)"><tspan
107 sodipodi:role="line"
108 id="tspan6"
109 x="760.51025"
110 y="269.38141">ws:/syncedGraph2024</tspan></text>
111 <text
112 xml:space="preserve"
113 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
114 x="602.47052"
115 y="269.60541"
116 id="text7"
117 transform="matrix(0.18520833,0,0,0.18520833,22.875544,58.837377)"><tspan
118 sodipodi:role="line"
119 x="602.47052"
120 y="269.60541"
121 id="tspan8"
122 style="stroke-width:1.42857px">← graph changed</tspan><tspan
123 sodipodi:role="line"
124 x="602.47052"
125 y="290.69962"
126 id="tspan67"
127 style="stroke-width:1.42857px">- deletes</tspan><tspan
128 sodipodi:role="line"
129 x="602.47052"
130 y="310.69962"
131 id="tspan68"
132 style="stroke-width:1.42857px">- adds</tspan><tspan
133 sodipodi:role="line"
134 x="602.47052"
135 y="330.69962"
136 id="tspan69"
137 style="stroke-width:1.42857px">- fromVersion (0 for resync)</tspan><tspan
138 sodipodi:role="line"
139 x="602.47052"
140 y="350.69962"
141 id="tspan70"
142 style="stroke-width:1.42857px">- toVersion</tspan><tspan
143 sodipodi:role="line"
144 x="602.47052"
145 y="370.69962"
146 id="tspan71"
147 style="stroke-width:1.42857px"></tspan><tspan
148 sodipodi:role="line"
149 x="602.47052"
150 y="390.69962"
151 id="tspan72"
152 style="stroke-width:1.42857px" /></text>
153 <text
154 xml:space="preserve"
155 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
156 x="603.27051"
157 y="236.53676"
158 id="text14"
159 transform="matrix(0.26458333,0,0,0.26458333,-36.456562,33.067503)"><tspan
160 sodipodi:role="line"
161 id="tspan14"
162 x="603.27051"
163 y="236.53676">⇄ 2024 protocol (avro)</tspan></text>
164 <text
165 xml:space="preserve"
166 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:263.964;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
167 x="152.07195"
168 y="243.67955"
169 id="text15"
170 transform="matrix(0.26458333,0,0,0.26458333,-15.04758,-9.0154512)"><tspan
171 x="152.07195"
172 y="243.67955"
173 id="tspan12"><tspan
174 style="font-weight:bold"
175 id="tspan11">graph.patch(p)</tspan>
176 </tspan><tspan
177 x="152.07195"
178 y="263.67955"
179 id="tspan13">immediately patches local side, </tspan><tspan
180 x="152.07195"
181 y="283.67955"
182 id="tspan16">storing the accumulated patch </tspan><tspan
183 x="152.07195"
184 y="303.67955"
185 id="tspan17">from the last known graph version
186 </tspan></text>
187 <text
188 xml:space="preserve"
189 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
190 x="592.03174"
191 y="396.8504"
192 id="text19"
193 transform="matrix(0.18520833,0,0,0.18520833,24.608261,62.422856)"><tspan
194 sodipodi:role="line"
195 id="tspan19"
196 x="592.03174"
197 y="396.8504"
198 style="font-weight:normal;stroke-width:1.42857px">→ graph edit</tspan><tspan
199 sodipodi:role="line"
200 x="592.03174"
201 y="417.94461"
202 style="font-weight:normal;stroke-width:1.42857px"
203 id="tspan73">- fromVersion</tspan><tspan
204 sodipodi:role="line"
205 x="592.03174"
206 y="437.94461"
207 style="font-weight:normal;stroke-width:1.42857px"
208 id="tspan74">- deletes</tspan><tspan
209 sodipodi:role="line"
210 x="592.03174"
211 y="457.94461"
212 style="font-weight:normal;stroke-width:1.42857px"
213 id="tspan75">- adds</tspan></text>
214 <text
215 xml:space="preserve"
216 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:266.946;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
217 x="152.31226"
218 y="384.6904"
219 id="text23"
220 transform="matrix(0.26458333,0,0,0.26458333,-15.113356,-22.760975)"><tspan
221 x="152.31226"
222 y="384.6904"
223 id="tspan20"><tspan
224 style="font-weight:bold"
225 id="tspan18">graph.sync()</tspan>
226 </tspan><tspan
227 x="152.31226"
228 y="404.69039"
229 id="tspan21">&quot;send our diffs, and make our local </tspan><tspan
230 x="152.31226"
231 y="424.69039"
232 id="tspan25">graph match the rdfdb one&quot;
233 </tspan><tspan
234 x="152.31226"
235 y="444.69039"
236 id="tspan26">Called after patch, reconnect, etc.</tspan></text>
237 <text
238 xml:space="preserve"
239 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:216.94;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
240 x="953.84619"
241 y="257.4454"
242 id="text29"
243 transform="matrix(0.26458333,0,0,0.26458333,-31.334726,-3.6846685)"><tspan
244 x="953.84619"
245 y="257.4454"
246 id="tspan27">stores and syncs with disk:
247 </tspan><tspan
248 x="953.84619"
249 y="277.44539"
250 id="tspan28">- stmts
251 </tspan><tspan
252 x="953.84619"
253 y="297.44539"
254 id="tspan34">- graphVersion
255 </tspan><tspan
256 x="953.84619"
257 y="317.44539"
258 id="tspan35">
259 </tspan><tspan
260 x="953.84619"
261 y="337.44539"
262 id="tspan36">and optionally some recent </tspan><tspan
263 x="953.84619"
264 y="357.44539"
265 id="tspan37">versions that clients might </tspan><tspan
266 x="953.84619"
267 y="377.44539"
268 id="tspan39">refererence in their edits, to </tspan><tspan
269 x="953.84619"
270 y="397.44539"
271 id="tspan42">reduce resyncs</tspan></text>
272 <text
273 xml:space="preserve"
274 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
275 x="34.287155"
276 y="101.0934"
277 id="text38"
278 transform="matrix(0.26458333,0,0,0.26458333,2.5692145,-9.904692)"><tspan
279 sodipodi:role="line"
280 id="tspan38"
281 x="34.287155"
282 y="101.0934">browser window</tspan></text>
283 <text
284 xml:space="preserve"
285 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
286 x="56.231335"
287 y="124.78235"
288 id="text39"
289 transform="matrix(0.26458333,0,0,0.26458333,0.62751132,-8.3208524)"><tspan
290 sodipodi:role="line"
291 x="56.231335"
292 y="124.78235"
293 id="tspan40">one window-scoped <tspan
294 style="font-weight:bold"
295 id="tspan41">SyncedGraph</tspan> object</tspan></text>
296 <text
297 xml:space="preserve"
298 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
299 x="96.823036"
300 y="371.12299"
301 id="text43"
302 transform="matrix(0.26458333,0,0,0.26458333,-0.13784353,4.690379)"><tspan
303 sodipodi:role="line"
304 id="tspan43"
305 x="96.823036"
306 y="371.12299"
307 style="font-weight:bold">graph.onVersionChanged</tspan><tspan
308 sodipodi:role="line"
309 x="96.823036"
310 y="391.12299"
311 id="tspan44">if we are based on the fromVersion</tspan></text>
312 <text
313 xml:space="preserve"
314 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:295.932;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
315 x="397.33862"
316 y="164.25574"
317 id="text45"
318 transform="matrix(0.26458333,0,0,0.26458333,-80.046609,-7.2652108)"><tspan
319 x="397.33862"
320 y="164.25574"
321 id="tspan45">Internally, the graph is stored as
322 </tspan><tspan
323 x="397.33862"
324 y="184.25574"
325 id="tspan47">- a local patch on top of
326 </tspan><tspan
327 x="397.33862"
328 y="204.25574"
329 id="tspan48">- an rdfdb graph @ graphVersion</tspan></text>
330 <rect
331 style="color:#000000;overflow:visible;fill:none;stroke:#69dd65;stroke-width:0.264583;stroke-miterlimit:10;-inkscape-stroke:none"
332 id="rect48"
333 width="105"
334 height="155"
335 x="10"
336 y="10" />
337 <rect
338 style="color:#000000;overflow:visible;fill:none;stroke:#69dd65;stroke-width:0.264583;stroke-miterlimit:10;-inkscape-stroke:none"
339 id="rect49"
340 width="96.380028"
341 height="94.064072"
342 x="13.852575"
343 y="20.427954" />
344 <rect
345 style="color:#000000;overflow:visible;fill:none;stroke:#69dd65;stroke-width:0.264583;stroke-miterlimit:10;-inkscape-stroke:none"
346 id="rect51"
347 width="90"
348 height="154.86771"
349 x="200"
350 y="10.000004" />
351 <g
352 id="g54"
353 style="opacity:0.52671"
354 transform="translate(-0.15943759,-4.0259874)">
355 <text
356 xml:space="preserve"
357 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
358 x="760.51025"
359 y="269.38141"
360 id="text22"
361 transform="matrix(0.26458333,0,0,0.26458333,8.6969751,-41.48589)"><tspan
362 sodipodi:role="line"
363 id="tspan22"
364 x="760.51025"
365 y="269.38141">ws:/syncedGraph (legacy)</tspan></text>
366 <text
367 xml:space="preserve"
368 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.26828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
369 x="824.49902"
370 y="132.28346"
371 id="text51"
372 transform="matrix(0.20861605,0,0,0.20861605,46.186158,6.7185059)"><tspan
373 sodipodi:role="line"
374 id="tspan51"
375 x="824.49902"
376 y="132.28346"
377 style="stroke-width:1.26828px">sends full graph at startup,</tspan><tspan
378 sodipodi:role="line"
379 x="824.49902"
380 y="152.28346"
381 id="tspan52"
382 style="stroke-width:1.26828px">accepts patches,</tspan><tspan
383 sodipodi:role="line"
384 x="824.49902"
385 y="172.28346"
386 id="tspan53"
387 style="stroke-width:1.26828px">broadcasts them to other clients,</tspan><tspan
388 sodipodi:role="line"
389 x="824.49902"
390 y="192.28346"
391 id="tspan54"
392 style="stroke-width:1.26828px">disconnects on detected conflicts</tspan></text>
393 </g>
394 <text
395 xml:space="preserve"
396 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
397 x="534.40503"
398 y="116.42434"
399 id="text56"
400 transform="matrix(0.26458333,0,0,0.26458333,-13.265116,-9.2753199)"><tspan
401 sodipodi:role="line"
402 id="tspan56"
403 x="534.40503"
404 y="116.42434">⇄ patches protocol (JSON)</tspan><tspan
405 sodipodi:role="line"
406 x="534.40503"
407 y="137.51854"
408 id="tspan57" /></text>
409 <path
410 id="rect50"
411 style="overflow:visible;fill:none;stroke:#69dd65;stroke-width:0.264583;stroke-miterlimit:10"
412 d="m 13.852575,114.49203 h 96.512315 v 29.77958 H 13.852575 Z" />
413 <text
414 xml:space="preserve"
415 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.02899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
416 x="520.00647"
417 y="172.40318"
418 id="text58"
419 transform="matrix(0.24988407,0,0,0.26458333,-8.1107096,15.663921)"><tspan
420 sodipodi:role="line"
421 id="tspan58"
422 x="520.00647"
423 y="172.40318"
424 style="stroke-width:1.02899px">⇄ sub/unsub protocol (db_protocol.ts)</tspan></text>
425 <text
426 xml:space="preserve"
427 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:322.214;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
428 x="556.1756"
429 y="142.16052"
430 id="text59"
431 transform="matrix(0.18520833,0,0,0.18520833,30.33272,1.7625738)"><tspan
432 x="556.1756"
433 y="142.16052"
434 id="tspan49">← patch
435 </tspan><tspan
436 x="556.1756"
437 y="163.25472"
438 id="tspan50">(1st few patches contain the whole graph)
439 </tspan><tspan
440 x="556.1756"
441 y="183.25472"
442 id="tspan55">
443 </tspan><tspan
444 x="556.1756"
445 y="203.25472"
446 id="tspan60">→ patch
447 </tspan><tspan
448 x="556.1756"
449 y="224.34891"
450 id="tspan61">
451 </tspan><tspan
452 x="556.1756"
453 y="244.34891"
454 id="tspan62">Upon conflict, server disconnects
455 </tspan></text>
456 <rect
457 style="color:#000000;overflow:visible;opacity:0.52671;fill:none;stroke:#ad9a36;stroke-width:0.264583;stroke-miterlimit:10;stroke-opacity:1;-inkscape-stroke:none"
458 id="rect63"
459 width="74.620178"
460 height="35.178116"
461 x="120.24753"
462 y="15.387728" />
463 <text
464 xml:space="preserve"
465 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:323.339;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
466 x="526.0542"
467 y="267.52496"
468 id="text64"
469 transform="matrix(0.18520833,0,0,0.18520833,30.885799,17.658265)"><tspan
470 x="526.0542"
471 y="267.52496"
472 id="tspan63">Not implemented
473 </tspan><tspan
474 x="526.0542"
475 y="287.52498"
476 id="tspan66">
477 </tspan><tspan
478 x="526.0542"
479 y="307.52498"
480 id="tspan76">clients sub and unsub from stmt patterns; </tspan><tspan
481 x="526.0542"
482 y="327.52498"
483 id="tspan78">server sends sub events</tspan></text>
484 <text
485 xml:space="preserve"
486 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
487 x="543.12921"
488 y="37.295277"
489 id="text65"
490 transform="scale(0.26458333)"><tspan
491 sodipodi:role="line"
492 id="tspan65"></tspan></text>
493 <rect
494 style="color:#000000;overflow:visible;opacity:0.52671;fill:none;stroke:#ad9a36;stroke-width:0.264583;stroke-miterlimit:10;stroke-opacity:1;-inkscape-stroke:none"
495 id="rect75"
496 width="74.88475"
497 height="28.988623"
498 x="120.11523"
499 y="55.879093" />
500 <rect
501 style="color:#000000;overflow:visible;opacity:0.52671;fill:none;stroke:#ad9a36;stroke-width:0.264583;stroke-miterlimit:10;stroke-opacity:1;-inkscape-stroke:none"
502 id="rect76"
503 width="75"
504 height="70"
505 x="120.48729"
506 y="90.605721" />
507 <rect
508 style="color:#000000;font-variation-settings:normal;overflow:visible;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#69dd65;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
509 id="rect77"
510 width="96.6446"
511 height="18.619644"
512 x="13.72029"
513 y="144.53619" />
514 <text
515 xml:space="preserve"
516 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:296.357;display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
517 x="100.49341"
518 y="581.46527"
519 id="text77"
520 transform="scale(0.26458333)"><tspan
521 x="100.49341"
522 y="581.46527"
523 id="tspan79">other &lt;graph&gt; elements share the </tspan><tspan
524 x="100.49341"
525 y="601.46529"
526 id="tspan83">same state</tspan></text>
527 <path
528 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
529 d="m 49.999995,183.36613 219.999995,-0.0266"
530 id="path77" />
531 <text
532 xml:space="preserve"
533 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
534 x="188.9763"
535 y="697.41687"
536 id="text80"
537 transform="matrix(0.18520833,0,0,0.18520833,33.359434,43.722709)"><tspan
538 sodipodi:role="line"
539 id="tspan80"
540 x="188.9763"
541 y="697.41687"
542 style="stroke-width:1.42857px">edit(from=v1,-stmt1,+stmt2, to=proposedVx)</tspan></text>
543 <text
544 xml:space="preserve"
545 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
546 x="188.9763"
547 y="697.41687"
548 id="text81"
549 transform="matrix(0.18520833,0,0,0.18520833,50.76848,47.590482)"><tspan
550 sodipodi:role="line"
551 id="tspan81"
552 x="188.9763"
553 y="697.41687"
554 style="stroke-width:1.42857px">edit(from=v1,-stmt1,+stmt3)</tspan></text>
555 <text
556 xml:space="preserve"
557 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
558 x="185.27213"
559 y="755.90552"
560 id="text82"
561 transform="matrix(0.18520833,0,0,0.18520833,8.365853,51.284924)"><tspan
562 sodipodi:role="line"
563 id="tspan82"
564 x="185.27213"
565 y="755.90552"
566 style="stroke-width:1.42857px">graphVersion</tspan></text>
567 <g
568 id="g93"
569 transform="translate(0,-11.641668)">
570 <path
571 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264584px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
572 d="m 52.127485,195.13229 v 1.8072"
573 id="path82" />
574 <text
575 xml:space="preserve"
576 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
577 x="185.27213"
578 y="755.90552"
579 id="text87"
580 transform="matrix(0.18520833,0,0,0.18520833,16.303357,60.08585)"><tspan
581 sodipodi:role="line"
582 id="tspan87"
583 x="185.27213"
584 y="755.90552"
585 style="stroke-width:1.42857px">v1</tspan></text>
586 </g>
587 <g
588 id="g94"
589 transform="translate(0,-11.641668)">
590 <path
591 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264584px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
592 d="m 69.095613,195.13229 v 1.8072"
593 id="path83" />
594 <text
595 xml:space="preserve"
596 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
597 x="185.27213"
598 y="755.90552"
599 id="text88"
600 transform="matrix(0.18520833,0,0,0.18520833,33.236701,60.08585)"><tspan
601 sodipodi:role="line"
602 id="tspan88"
603 x="185.27213"
604 y="755.90552"
605 style="stroke-width:1.42857px">v2</tspan></text>
606 </g>
607 <g
608 id="g95"
609 transform="translate(158.23061,-11.641668)">
610 <path
611 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264584px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
612 d="m 86.063741,195.13229 v 1.8072"
613 id="path84" />
614 <text
615 xml:space="preserve"
616 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
617 x="185.27213"
618 y="755.90552"
619 id="text89"
620 transform="matrix(0.18520833,0,0,0.18520833,49.640878,60.08585)"><tspan
621 sodipodi:role="line"
622 id="tspan89"
623 x="185.27213"
624 y="755.90552"
625 style="stroke-width:1.42857px">v3</tspan></text>
626 </g>
627 <g
628 id="g96"
629 transform="translate(158.23061,-11.641668)">
630 <path
631 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264584px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
632 d="m 103.03187,195.13229 v 1.8072"
633 id="path85" />
634 <text
635 xml:space="preserve"
636 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
637 x="185.27213"
638 y="755.90552"
639 id="text90"
640 transform="matrix(0.18520833,0,0,0.18520833,66.574222,60.08585)"><tspan
641 sodipodi:role="line"
642 id="tspan90"
643 x="185.27213"
644 y="755.90552"
645 style="stroke-width:1.42857px">v4</tspan></text>
646 </g>
647 <text
648 xml:space="preserve"
649 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
650 x="185.27213"
651 y="755.90552"
652 id="text91"
653 transform="matrix(0.18520833,0,0,0.18520833,7.7394858,32.965966)"><tspan
654 sodipodi:role="line"
655 id="tspan91"
656 x="185.27213"
657 y="755.90552"
658 style="stroke-width:1.42857px">clientC1</tspan></text>
659 <text
660 xml:space="preserve"
661 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
662 x="185.27213"
663 y="755.90552"
664 id="text92"
665 transform="matrix(0.18520833,0,0,0.18520833,7.7394858,36.140968)"><tspan
666 sodipodi:role="line"
667 id="tspan92"
668 x="185.27213"
669 y="755.90552"
670 style="stroke-width:1.42857px">clientC2</tspan></text>
671 <text
672 xml:space="preserve"
673 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:129.92;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
674 x="324.78027"
675 y="748.12115"
676 id="text96"
677 transform="matrix(0.26458333,0,0,0.26458333,1.5197378,-5.0294909)"><tspan
678 x="324.78027"
679 y="748.12115"
680 id="tspan84">err, C2 needs to be </tspan><tspan
681 x="324.78027"
682 y="761.45451"
683 id="tspan85">brought up to date with </tspan><tspan
684 x="324.78027"
685 y="774.78789"
686 id="tspan86">v2 then it can retry. C2 </tspan><tspan
687 x="324.78027"
688 y="788.12126"
689 id="tspan93">keeps its local patch for </tspan><tspan
690 x="324.78027"
691 y="801.45463"
692 id="tspan94">now</tspan></text>
693 <text
694 xml:space="preserve"
695 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:269.044;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
696 x="487.1438"
697 y="713.83099"
698 id="text100"
699 transform="matrix(0.26458333,0,0,0.26458333,-8.7679639,-7.4319712)"><tspan
700 x="487.1438"
701 y="713.83099"
702 id="tspan95">changed(..., from=v1, to=v2, aka 'proposedVx')</tspan></text>
703 <text
704 xml:space="preserve"
705 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:62.2728;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
706 x="255.30951"
707 y="773.11206"
708 id="text101"
709 transform="matrix(0.26458333,0,0,0.26458333,0,-11.641668)"><tspan
710 x="255.30951"
711 y="773.11206"
712 id="tspan96">ok</tspan></text>
713 <text
714 xml:space="preserve"
715 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
716 x="185.27213"
717 y="755.90552"
718 id="text102"
719 transform="matrix(0.18520833,0,0,0.18520833,7.7394858,39.31597)"><tspan
720 sodipodi:role="line"
721 id="tspan102"
722 x="185.27213"
723 y="755.90552"
724 style="stroke-width:1.42857px">rdfdb</tspan></text>
725 <text
726 xml:space="preserve"
727 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:pre;shape-padding:0;shape-margin:0;inline-size:74.9301;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
728 x="122.73514"
729 y="193.17496"
730 id="text103"><tspan
731 x="122.73514"
732 y="193.17496"
733 id="tspan97">C1 learns that proposedVx is now v2
734 </tspan><tspan
735 x="122.73514"
736 y="197.14371"
737 id="tspan98">C2 forgot what v1 has, and keeps its local patch.
738 </tspan><tspan
739 x="122.73514"
740 y="201.11246"
741 id="tspan99">Neither C1 (knew v2) nor C2 (forgot v1) cares </tspan><tspan
742 x="122.73514"
743 y="205.08121"
744 id="tspan100">about the contents of this patch! C2 would have, if </tspan><tspan
745 x="122.73514"
746 y="209.04996"
747 id="tspan101">it remembered v1.</tspan></text>
748 <text
749 xml:space="preserve"
750 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
751 x="570.06024"
752 y="659.49335"
753 id="text105"
754 transform="matrix(0.26458333,0,0,0.26458333,47.06786,2.1166667)"><tspan
755 sodipodi:role="line"
756 id="tspan105"
757 x="570.06024"
758 y="659.49335">sendMe(v0 to v2)</tspan></text>
759 <text
760 xml:space="preserve"
761 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
762 x="737.00787"
763 y="680.315"
764 id="text106"
765 transform="matrix(0.26458333,0,0,0.26458333,31.750014,1.5875)"><tspan
766 sodipodi:role="line"
767 id="tspan106"
768 x="737.00787"
769 y="680.315">edit(from=v0, to=v2)</tspan></text>
770 <text
771 xml:space="preserve"
772 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;line-height:125%;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
773 x="230.25616"
774 y="193.17496"
775 id="text107"><tspan
776 sodipodi:role="line"
777 id="tspan107"
778 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.175px;font-family:'Ubuntu Condensed';-inkscape-font-specification:'Ubuntu Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none;stroke-width:0.264583px"
779 x="230.25616"
780 y="193.17496">this goes to C2 only</tspan></text>
781 </g>
782 </svg>