@nahisaho/yata-local 1.6.6
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/dist/auto-updater.d.ts +101 -0
- package/dist/auto-updater.d.ts.map +1 -0
- package/dist/auto-updater.js +402 -0
- package/dist/auto-updater.js.map +1 -0
- package/dist/database.d.ts +229 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +959 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +298 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +77 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +403 -0
- package/dist/io.js.map +1 -0
- package/dist/kgpr/diff-engine.d.ts +110 -0
- package/dist/kgpr/diff-engine.d.ts.map +1 -0
- package/dist/kgpr/diff-engine.js +335 -0
- package/dist/kgpr/diff-engine.js.map +1 -0
- package/dist/kgpr/index.d.ts +16 -0
- package/dist/kgpr/index.d.ts.map +1 -0
- package/dist/kgpr/index.js +14 -0
- package/dist/kgpr/index.js.map +1 -0
- package/dist/kgpr/kgpr-manager.d.ts +122 -0
- package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
- package/dist/kgpr/kgpr-manager.js +344 -0
- package/dist/kgpr/kgpr-manager.js.map +1 -0
- package/dist/kgpr/privacy-filter.d.ts +109 -0
- package/dist/kgpr/privacy-filter.d.ts.map +1 -0
- package/dist/kgpr/privacy-filter.js +295 -0
- package/dist/kgpr/privacy-filter.js.map +1 -0
- package/dist/kgpr/types.d.ts +234 -0
- package/dist/kgpr/types.d.ts.map +1 -0
- package/dist/kgpr/types.js +54 -0
- package/dist/kgpr/types.js.map +1 -0
- package/dist/query-engine.d.ts +78 -0
- package/dist/query-engine.d.ts.map +1 -0
- package/dist/query-engine.js +368 -0
- package/dist/query-engine.js.map +1 -0
- package/dist/reasoning.d.ts +112 -0
- package/dist/reasoning.d.ts.map +1 -0
- package/dist/reasoning.js +455 -0
- package/dist/reasoning.js.map +1 -0
- package/dist/types.d.ts +580 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/wake-sleep/cycle-manager.d.ts +76 -0
- package/dist/wake-sleep/cycle-manager.d.ts.map +1 -0
- package/dist/wake-sleep/cycle-manager.js +291 -0
- package/dist/wake-sleep/cycle-manager.js.map +1 -0
- package/dist/wake-sleep/index.d.ts +15 -0
- package/dist/wake-sleep/index.d.ts.map +1 -0
- package/dist/wake-sleep/index.js +19 -0
- package/dist/wake-sleep/index.js.map +1 -0
- package/dist/wake-sleep/pattern-compressor.d.ts +86 -0
- package/dist/wake-sleep/pattern-compressor.d.ts.map +1 -0
- package/dist/wake-sleep/pattern-compressor.js +333 -0
- package/dist/wake-sleep/pattern-compressor.js.map +1 -0
- package/dist/wake-sleep/sleep-phase.d.ts +79 -0
- package/dist/wake-sleep/sleep-phase.d.ts.map +1 -0
- package/dist/wake-sleep/sleep-phase.js +329 -0
- package/dist/wake-sleep/sleep-phase.js.map +1 -0
- package/dist/wake-sleep/types.d.ts +244 -0
- package/dist/wake-sleep/types.d.ts.map +1 -0
- package/dist/wake-sleep/types.js +35 -0
- package/dist/wake-sleep/types.js.map +1 -0
- package/dist/wake-sleep/wake-phase.d.ts +83 -0
- package/dist/wake-sleep/wake-phase.d.ts.map +1 -0
- package/dist/wake-sleep/wake-phase.js +457 -0
- package/dist/wake-sleep/wake-phase.js.map +1 -0
- package/dist/yata-bridge.d.ts +78 -0
- package/dist/yata-bridge.d.ts.map +1 -0
- package/dist/yata-bridge.js +193 -0
- package/dist/yata-bridge.js.map +1 -0
- package/package.json +60 -0
package/dist/io.js
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local - Import/Export Module
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/yata-local/io
|
|
6
|
+
*
|
|
7
|
+
* @see REQ-YL-IO-001 ~ REQ-YL-IO-004
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from 'fs/promises';
|
|
10
|
+
/**
|
|
11
|
+
* Import/Export module for YATA Local
|
|
12
|
+
*/
|
|
13
|
+
export class IoModule {
|
|
14
|
+
db;
|
|
15
|
+
constructor(db) {
|
|
16
|
+
this.db = db;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Export graph to JSON
|
|
20
|
+
* @see REQ-YL-IO-001
|
|
21
|
+
*/
|
|
22
|
+
async exportToJson(filePath) {
|
|
23
|
+
const { entities } = this.db.queryEntities({}, 100000);
|
|
24
|
+
const allRelationships = [];
|
|
25
|
+
const seenRels = new Set();
|
|
26
|
+
for (const entity of entities) {
|
|
27
|
+
const rels = this.db.getRelationships(entity.id);
|
|
28
|
+
for (const rel of rels) {
|
|
29
|
+
if (!seenRels.has(rel.id)) {
|
|
30
|
+
seenRels.add(rel.id);
|
|
31
|
+
allRelationships.push(rel);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const exportData = {
|
|
36
|
+
version: '1.0',
|
|
37
|
+
exportedAt: new Date().toISOString(),
|
|
38
|
+
entities,
|
|
39
|
+
relationships: allRelationships,
|
|
40
|
+
};
|
|
41
|
+
if (filePath) {
|
|
42
|
+
await fs.writeFile(filePath, JSON.stringify(exportData, null, 2));
|
|
43
|
+
}
|
|
44
|
+
return exportData;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Import graph from JSON
|
|
48
|
+
* @see REQ-YL-IO-003
|
|
49
|
+
*/
|
|
50
|
+
async importFromJson(input, options = {}) {
|
|
51
|
+
let data;
|
|
52
|
+
if (typeof input === 'string') {
|
|
53
|
+
const content = await fs.readFile(input, 'utf-8');
|
|
54
|
+
data = JSON.parse(content);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
data = input;
|
|
58
|
+
}
|
|
59
|
+
const result = {
|
|
60
|
+
success: true,
|
|
61
|
+
entitiesAdded: 0,
|
|
62
|
+
entitiesUpdated: 0,
|
|
63
|
+
entitiesSkipped: 0,
|
|
64
|
+
relationshipsAdded: 0,
|
|
65
|
+
relationshipsSkipped: 0,
|
|
66
|
+
conflicts: [],
|
|
67
|
+
};
|
|
68
|
+
// Process entities
|
|
69
|
+
for (const entity of data.entities) {
|
|
70
|
+
const existing = this.db.getEntity(entity.id);
|
|
71
|
+
if (existing) {
|
|
72
|
+
if (options.merge) {
|
|
73
|
+
if (!options.dryRun) {
|
|
74
|
+
this.db.updateEntity(entity.id, entity);
|
|
75
|
+
}
|
|
76
|
+
result.entitiesUpdated++;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
result.entitiesSkipped++;
|
|
80
|
+
result.conflicts.push({
|
|
81
|
+
type: 'entity',
|
|
82
|
+
id: entity.id,
|
|
83
|
+
reason: 'Entity already exists',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
if (!options.dryRun) {
|
|
89
|
+
this.db.insertEntity(entity);
|
|
90
|
+
}
|
|
91
|
+
result.entitiesAdded++;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Process relationships
|
|
95
|
+
for (const rel of data.relationships) {
|
|
96
|
+
// Check if source and target exist
|
|
97
|
+
const sourceExists = this.db.getEntity(rel.sourceId);
|
|
98
|
+
const targetExists = this.db.getEntity(rel.targetId);
|
|
99
|
+
if (!sourceExists || !targetExists) {
|
|
100
|
+
result.relationshipsSkipped++;
|
|
101
|
+
result.conflicts.push({
|
|
102
|
+
type: 'relationship',
|
|
103
|
+
id: rel.id,
|
|
104
|
+
reason: `Missing ${!sourceExists ? 'source' : 'target'} entity`,
|
|
105
|
+
});
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Check if relationship exists
|
|
109
|
+
const existingRels = this.db.getRelationships(rel.sourceId, 'out');
|
|
110
|
+
const exists = existingRels.some(r => r.id === rel.id);
|
|
111
|
+
if (exists) {
|
|
112
|
+
result.relationshipsSkipped++;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
if (!options.dryRun) {
|
|
116
|
+
this.db.insertRelationship(rel);
|
|
117
|
+
}
|
|
118
|
+
result.relationshipsAdded++;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Export to RDF (N-Triples format)
|
|
125
|
+
* @see REQ-YL-IO-001
|
|
126
|
+
*/
|
|
127
|
+
async exportToRdf(filePath, options = {}) {
|
|
128
|
+
const baseUri = options.baseUri ?? 'http://yata.local/';
|
|
129
|
+
const includeMetadata = options.includeMetadata ?? true;
|
|
130
|
+
const triples = [];
|
|
131
|
+
const { entities } = this.db.queryEntities({}, 100000);
|
|
132
|
+
// Entity triples
|
|
133
|
+
for (const entity of entities) {
|
|
134
|
+
const subject = `<${baseUri}entity/${encodeURIComponent(entity.id)}>`;
|
|
135
|
+
// Type triple
|
|
136
|
+
triples.push(`${subject} <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <${baseUri}type/${entity.type}> .`);
|
|
137
|
+
// Name triple
|
|
138
|
+
triples.push(`${subject} <http://www.w3.org/2000/01/rdf-schema#label> "${this.escapeRdfString(entity.name)}" .`);
|
|
139
|
+
// Namespace triple
|
|
140
|
+
if (entity.namespace) {
|
|
141
|
+
triples.push(`${subject} <${baseUri}namespace> "${this.escapeRdfString(entity.namespace)}" .`);
|
|
142
|
+
}
|
|
143
|
+
// File path triple
|
|
144
|
+
if (entity.filePath) {
|
|
145
|
+
triples.push(`${subject} <${baseUri}filePath> "${this.escapeRdfString(entity.filePath)}" .`);
|
|
146
|
+
}
|
|
147
|
+
// Line triple
|
|
148
|
+
if (entity.line !== undefined) {
|
|
149
|
+
triples.push(`${subject} <${baseUri}line> "${entity.line}"^^<http://www.w3.org/2001/XMLSchema#integer> .`);
|
|
150
|
+
}
|
|
151
|
+
// Description triple
|
|
152
|
+
if (entity.description) {
|
|
153
|
+
triples.push(`${subject} <http://www.w3.org/2000/01/rdf-schema#comment> "${this.escapeRdfString(entity.description)}" .`);
|
|
154
|
+
}
|
|
155
|
+
// Metadata triples
|
|
156
|
+
if (includeMetadata && Object.keys(entity.metadata).length > 0) {
|
|
157
|
+
triples.push(`${subject} <${baseUri}metadata> "${this.escapeRdfString(JSON.stringify(entity.metadata))}" .`);
|
|
158
|
+
}
|
|
159
|
+
// Timestamps
|
|
160
|
+
triples.push(`${subject} <http://purl.org/dc/terms/created> "${entity.createdAt.toISOString()}"^^<http://www.w3.org/2001/XMLSchema#dateTime> .`);
|
|
161
|
+
triples.push(`${subject} <http://purl.org/dc/terms/modified> "${entity.updatedAt.toISOString()}"^^<http://www.w3.org/2001/XMLSchema#dateTime> .`);
|
|
162
|
+
}
|
|
163
|
+
// Relationship triples
|
|
164
|
+
const seenRels = new Set();
|
|
165
|
+
for (const entity of entities) {
|
|
166
|
+
const rels = this.db.getRelationships(entity.id);
|
|
167
|
+
for (const rel of rels) {
|
|
168
|
+
if (seenRels.has(rel.id))
|
|
169
|
+
continue;
|
|
170
|
+
seenRels.add(rel.id);
|
|
171
|
+
const subject = `<${baseUri}entity/${encodeURIComponent(rel.sourceId)}>`;
|
|
172
|
+
const predicate = `<${baseUri}rel/${rel.type}>`;
|
|
173
|
+
const object = `<${baseUri}entity/${encodeURIComponent(rel.targetId)}>`;
|
|
174
|
+
triples.push(`${subject} ${predicate} ${object} .`);
|
|
175
|
+
// Relationship metadata as reification
|
|
176
|
+
if (rel.weight !== 1.0 || Object.keys(rel.metadata).length > 0) {
|
|
177
|
+
const relSubject = `<${baseUri}relationship/${encodeURIComponent(rel.id)}>`;
|
|
178
|
+
triples.push(`${relSubject} <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> ${subject} .`);
|
|
179
|
+
triples.push(`${relSubject} <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> ${predicate} .`);
|
|
180
|
+
triples.push(`${relSubject} <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> ${object} .`);
|
|
181
|
+
if (rel.weight !== 1.0) {
|
|
182
|
+
triples.push(`${relSubject} <${baseUri}weight> "${rel.weight}"^^<http://www.w3.org/2001/XMLSchema#float> .`);
|
|
183
|
+
}
|
|
184
|
+
if (Object.keys(rel.metadata).length > 0) {
|
|
185
|
+
triples.push(`${relSubject} <${baseUri}metadata> "${this.escapeRdfString(JSON.stringify(rel.metadata))}" .`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const rdfContent = triples.join('\n');
|
|
191
|
+
if (filePath) {
|
|
192
|
+
await fs.writeFile(filePath, rdfContent);
|
|
193
|
+
}
|
|
194
|
+
return rdfContent;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Compute delta between two states
|
|
198
|
+
* @see REQ-YL-IO-004
|
|
199
|
+
*/
|
|
200
|
+
computeDelta(oldState, newState) {
|
|
201
|
+
const delta = {
|
|
202
|
+
entities: {
|
|
203
|
+
added: [],
|
|
204
|
+
updated: [],
|
|
205
|
+
deleted: [],
|
|
206
|
+
},
|
|
207
|
+
relationships: {
|
|
208
|
+
added: [],
|
|
209
|
+
deleted: [],
|
|
210
|
+
},
|
|
211
|
+
timestamp: new Date(),
|
|
212
|
+
};
|
|
213
|
+
// Create maps for faster lookup
|
|
214
|
+
const oldEntities = new Map(oldState.entities.map(e => [e.id, e]));
|
|
215
|
+
const newEntities = new Map(newState.entities.map(e => [e.id, e]));
|
|
216
|
+
// Find added and updated entities
|
|
217
|
+
for (const [id, newEntity] of newEntities) {
|
|
218
|
+
const oldEntity = oldEntities.get(id);
|
|
219
|
+
if (!oldEntity) {
|
|
220
|
+
delta.entities.added.push(newEntity);
|
|
221
|
+
}
|
|
222
|
+
else if (this.entityChanged(oldEntity, newEntity)) {
|
|
223
|
+
delta.entities.updated.push(newEntity);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Find deleted entities
|
|
227
|
+
for (const [id] of oldEntities) {
|
|
228
|
+
if (!newEntities.has(id)) {
|
|
229
|
+
delta.entities.deleted.push(id);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Create maps for relationships
|
|
233
|
+
const oldRels = new Map(oldState.relationships.map(r => [r.id, r]));
|
|
234
|
+
const newRels = new Map(newState.relationships.map(r => [r.id, r]));
|
|
235
|
+
// Find added relationships
|
|
236
|
+
for (const [id, newRel] of newRels) {
|
|
237
|
+
if (!oldRels.has(id)) {
|
|
238
|
+
delta.relationships.added.push(newRel);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Find deleted relationships
|
|
242
|
+
for (const [id] of oldRels) {
|
|
243
|
+
if (!newRels.has(id)) {
|
|
244
|
+
delta.relationships.deleted.push(id);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return delta;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Apply delta to current database state
|
|
251
|
+
* @see REQ-YL-IO-004
|
|
252
|
+
*/
|
|
253
|
+
async applyDelta(delta, options = {}) {
|
|
254
|
+
const result = {
|
|
255
|
+
success: true,
|
|
256
|
+
entitiesAdded: 0,
|
|
257
|
+
entitiesUpdated: 0,
|
|
258
|
+
entitiesSkipped: 0,
|
|
259
|
+
relationshipsAdded: 0,
|
|
260
|
+
relationshipsSkipped: 0,
|
|
261
|
+
conflicts: [],
|
|
262
|
+
};
|
|
263
|
+
// Delete relationships first (foreign key constraints)
|
|
264
|
+
for (const relId of delta.relationships.deleted) {
|
|
265
|
+
if (!options.dryRun) {
|
|
266
|
+
this.db.deleteRelationship(relId);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Delete entities
|
|
270
|
+
for (const entityId of delta.entities.deleted) {
|
|
271
|
+
if (!options.dryRun) {
|
|
272
|
+
this.db.deleteEntity(entityId);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Add entities
|
|
276
|
+
for (const entity of delta.entities.added) {
|
|
277
|
+
if (!options.dryRun) {
|
|
278
|
+
this.db.insertEntity(entity);
|
|
279
|
+
}
|
|
280
|
+
result.entitiesAdded++;
|
|
281
|
+
}
|
|
282
|
+
// Update entities
|
|
283
|
+
for (const entity of delta.entities.updated) {
|
|
284
|
+
if (!options.dryRun) {
|
|
285
|
+
this.db.updateEntity(entity.id, entity);
|
|
286
|
+
}
|
|
287
|
+
result.entitiesUpdated++;
|
|
288
|
+
}
|
|
289
|
+
// Add relationships
|
|
290
|
+
for (const rel of delta.relationships.added) {
|
|
291
|
+
const sourceExists = this.db.getEntity(rel.sourceId);
|
|
292
|
+
const targetExists = this.db.getEntity(rel.targetId);
|
|
293
|
+
if (!sourceExists || !targetExists) {
|
|
294
|
+
result.relationshipsSkipped++;
|
|
295
|
+
result.conflicts.push({
|
|
296
|
+
type: 'relationship',
|
|
297
|
+
id: rel.id,
|
|
298
|
+
reason: `Missing ${!sourceExists ? 'source' : 'target'} entity`,
|
|
299
|
+
});
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
if (!options.dryRun) {
|
|
303
|
+
this.db.insertRelationship(rel);
|
|
304
|
+
}
|
|
305
|
+
result.relationshipsAdded++;
|
|
306
|
+
}
|
|
307
|
+
return result;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Sync with another YATA Local instance
|
|
311
|
+
* @see REQ-YL-IO-004
|
|
312
|
+
*/
|
|
313
|
+
async syncWith(other, since) {
|
|
314
|
+
// Get changes from other database
|
|
315
|
+
const otherChanges = other.getChangesSince(since);
|
|
316
|
+
const result = {
|
|
317
|
+
success: true,
|
|
318
|
+
entitiesAdded: 0,
|
|
319
|
+
entitiesUpdated: 0,
|
|
320
|
+
entitiesSkipped: 0,
|
|
321
|
+
relationshipsAdded: 0,
|
|
322
|
+
relationshipsSkipped: 0,
|
|
323
|
+
conflicts: [],
|
|
324
|
+
};
|
|
325
|
+
// Apply entity changes
|
|
326
|
+
for (const entity of otherChanges.entities.added) {
|
|
327
|
+
const existing = this.db.getEntity(entity.id);
|
|
328
|
+
if (existing) {
|
|
329
|
+
// Conflict: choose newer
|
|
330
|
+
if (entity.updatedAt > existing.updatedAt) {
|
|
331
|
+
this.db.updateEntity(entity.id, entity);
|
|
332
|
+
result.entitiesUpdated++;
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
result.entitiesSkipped++;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
this.db.insertEntity(entity);
|
|
340
|
+
result.entitiesAdded++;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
for (const entity of otherChanges.entities.updated) {
|
|
344
|
+
const existing = this.db.getEntity(entity.id);
|
|
345
|
+
if (existing) {
|
|
346
|
+
if (entity.updatedAt > existing.updatedAt) {
|
|
347
|
+
this.db.updateEntity(entity.id, entity);
|
|
348
|
+
result.entitiesUpdated++;
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
result.entitiesSkipped++;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
this.db.insertEntity(entity);
|
|
356
|
+
result.entitiesAdded++;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
for (const entityId of otherChanges.entities.deleted) {
|
|
360
|
+
this.db.deleteEntity(entityId);
|
|
361
|
+
}
|
|
362
|
+
// Apply relationship changes
|
|
363
|
+
for (const rel of otherChanges.relationships.added) {
|
|
364
|
+
const sourceExists = this.db.getEntity(rel.sourceId);
|
|
365
|
+
const targetExists = this.db.getEntity(rel.targetId);
|
|
366
|
+
if (sourceExists && targetExists) {
|
|
367
|
+
this.db.insertRelationship(rel);
|
|
368
|
+
result.relationshipsAdded++;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
result.relationshipsSkipped++;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
for (const relId of otherChanges.relationships.deleted) {
|
|
375
|
+
this.db.deleteRelationship(relId);
|
|
376
|
+
}
|
|
377
|
+
return result;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Check if entity has changed
|
|
381
|
+
*/
|
|
382
|
+
entityChanged(oldEntity, newEntity) {
|
|
383
|
+
return (oldEntity.name !== newEntity.name ||
|
|
384
|
+
oldEntity.namespace !== newEntity.namespace ||
|
|
385
|
+
oldEntity.type !== newEntity.type ||
|
|
386
|
+
oldEntity.filePath !== newEntity.filePath ||
|
|
387
|
+
oldEntity.line !== newEntity.line ||
|
|
388
|
+
oldEntity.description !== newEntity.description ||
|
|
389
|
+
JSON.stringify(oldEntity.metadata) !== JSON.stringify(newEntity.metadata));
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Escape string for RDF N-Triples format
|
|
393
|
+
*/
|
|
394
|
+
escapeRdfString(str) {
|
|
395
|
+
return str
|
|
396
|
+
.replace(/\\/g, '\\\\')
|
|
397
|
+
.replace(/"/g, '\\"')
|
|
398
|
+
.replace(/\n/g, '\\n')
|
|
399
|
+
.replace(/\r/g, '\\r')
|
|
400
|
+
.replace(/\t/g, '\\t');
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=io.js.map
|
package/dist/io.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local KGPR - Diff Engine
|
|
3
|
+
*
|
|
4
|
+
* Generates diffs between knowledge graph states
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-local/kgpr
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YL-EXT-KGPR-003
|
|
10
|
+
*/
|
|
11
|
+
import type { Entity, Relationship } from '../types.js';
|
|
12
|
+
import type { LocalKGPRDiff, KGSnapshot, DiffOptions } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Diff engine for generating knowledge graph diffs
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const engine = createLocalDiffEngine();
|
|
19
|
+
*
|
|
20
|
+
* // Create baseline snapshot
|
|
21
|
+
* const baseline = engine.createSnapshot(entities, relationships, 'Initial state');
|
|
22
|
+
*
|
|
23
|
+
* // ... make changes to KG ...
|
|
24
|
+
*
|
|
25
|
+
* // Generate diff from baseline
|
|
26
|
+
* const diff = engine.generateDiff(baseline, currentEntities, currentRelationships);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class LocalDiffEngine {
|
|
30
|
+
private lastSnapshotId;
|
|
31
|
+
/**
|
|
32
|
+
* Create a snapshot of the current knowledge graph state
|
|
33
|
+
*
|
|
34
|
+
* @param entities - Current entities
|
|
35
|
+
* @param relationships - Current relationships
|
|
36
|
+
* @param description - Optional description
|
|
37
|
+
* @returns Snapshot object
|
|
38
|
+
*/
|
|
39
|
+
createSnapshot(entities: Entity[], relationships: Relationship[], description?: string): KGSnapshot;
|
|
40
|
+
/**
|
|
41
|
+
* Generate a diff between baseline snapshot and current state
|
|
42
|
+
*
|
|
43
|
+
* @param baseline - Baseline snapshot (or null for full diff)
|
|
44
|
+
* @param currentEntities - Current entities
|
|
45
|
+
* @param currentRelationships - Current relationships
|
|
46
|
+
* @param options - Diff options
|
|
47
|
+
* @returns The diff
|
|
48
|
+
*/
|
|
49
|
+
generateDiff(baseline: KGSnapshot | null, currentEntities: Entity[], currentRelationships: Relationship[], options?: DiffOptions): LocalKGPRDiff;
|
|
50
|
+
/**
|
|
51
|
+
* Generate diff between two snapshots (without current state)
|
|
52
|
+
*
|
|
53
|
+
* @param oldSnapshot - Old snapshot
|
|
54
|
+
* @param newSnapshot - New snapshot
|
|
55
|
+
* @returns Summary diff (IDs only)
|
|
56
|
+
*/
|
|
57
|
+
compareSnapshots(oldSnapshot: KGSnapshot, newSnapshot: KGSnapshot): {
|
|
58
|
+
added: string[];
|
|
59
|
+
updated: string[];
|
|
60
|
+
deleted: string[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Hash an entity for comparison
|
|
64
|
+
*/
|
|
65
|
+
hashEntity(entity: Entity): string;
|
|
66
|
+
/**
|
|
67
|
+
* Hash a relationship for comparison
|
|
68
|
+
*/
|
|
69
|
+
hashRelationship(rel: Relationship): string;
|
|
70
|
+
/**
|
|
71
|
+
* Filter entities based on options
|
|
72
|
+
*/
|
|
73
|
+
private filterEntities;
|
|
74
|
+
/**
|
|
75
|
+
* Filter relationships based on options
|
|
76
|
+
*/
|
|
77
|
+
private filterRelationships;
|
|
78
|
+
/**
|
|
79
|
+
* Create a full diff (all entities/relationships as added)
|
|
80
|
+
*/
|
|
81
|
+
private createFullDiff;
|
|
82
|
+
/**
|
|
83
|
+
* Calculate entity changes between baseline and current
|
|
84
|
+
*/
|
|
85
|
+
private calculateEntityChanges;
|
|
86
|
+
/**
|
|
87
|
+
* Calculate relationship changes between baseline and current
|
|
88
|
+
*/
|
|
89
|
+
private calculateRelationshipChanges;
|
|
90
|
+
/**
|
|
91
|
+
* Convert entity to change format
|
|
92
|
+
*/
|
|
93
|
+
private entityToChange;
|
|
94
|
+
/**
|
|
95
|
+
* Convert relationship to change format
|
|
96
|
+
* Note: This requires entity lookup for names - simplified version uses IDs
|
|
97
|
+
*/
|
|
98
|
+
private relationshipToChange;
|
|
99
|
+
/**
|
|
100
|
+
* Calculate diff statistics
|
|
101
|
+
*/
|
|
102
|
+
private calculateStats;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a new diff engine instance
|
|
106
|
+
*
|
|
107
|
+
* @returns New diff engine
|
|
108
|
+
*/
|
|
109
|
+
export declare function createLocalDiffEngine(): LocalDiffEngine;
|
|
110
|
+
//# sourceMappingURL=diff-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-engine.d.ts","sourceRoot":"","sources":["../../src/kgpr/diff-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAGV,aAAa,EAEb,UAAU,EACV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B;;;;;;;OAOG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,YAAY,EAAE,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU;IAuBb;;;;;;;;OAQG;IACH,YAAY,CACV,QAAQ,EAAE,UAAU,GAAG,IAAI,EAC3B,eAAe,EAAE,MAAM,EAAE,EACzB,oBAAoB,EAAE,YAAY,EAAE,EACpC,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa;IAgChB;;;;;;OAMG;IACH,gBAAgB,CACd,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,UAAU,GACtB;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAwB5D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAYlC;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAU3C;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4C9B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA6CpC;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAoBvB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|