@undefineds.co/drizzle-solid 0.2.6 → 0.2.8
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/core/ast-to-sparql.d.ts +1 -6
- package/dist/core/ast-to-sparql.d.ts.map +1 -1
- package/dist/core/ast-to-sparql.js +3 -22
- package/dist/core/ast-to-sparql.js.map +1 -1
- package/dist/core/execution/ldp-executor.d.ts +8 -7
- package/dist/core/execution/ldp-executor.d.ts.map +1 -1
- package/dist/core/execution/ldp-executor.js +165 -136
- package/dist/core/execution/ldp-executor.js.map +1 -1
- package/dist/core/execution/ldp-strategy.js +1 -1
- package/dist/core/execution/ldp-strategy.js.map +1 -1
- package/dist/core/execution/pod-executor.d.ts.map +1 -1
- package/dist/core/execution/pod-executor.js +9 -0
- package/dist/core/execution/pod-executor.js.map +1 -1
- package/dist/core/execution/sparql-strategy.d.ts +7 -26
- package/dist/core/execution/sparql-strategy.d.ts.map +1 -1
- package/dist/core/execution/sparql-strategy.js +65 -111
- package/dist/core/execution/sparql-strategy.js.map +1 -1
- package/dist/core/execution/types.d.ts +8 -8
- package/dist/core/execution/types.d.ts.map +1 -1
- package/dist/core/federated/executor.d.ts +3 -0
- package/dist/core/federated/executor.d.ts.map +1 -1
- package/dist/core/federated/executor.js +13 -8
- package/dist/core/federated/executor.js.map +1 -1
- package/dist/core/pod-database.d.ts +0 -4
- package/dist/core/pod-database.d.ts.map +1 -1
- package/dist/core/pod-database.js +10 -32
- package/dist/core/pod-database.js.map +1 -1
- package/dist/core/pod-dialect.d.ts +0 -24
- package/dist/core/pod-dialect.d.ts.map +1 -1
- package/dist/core/pod-dialect.js +0 -182
- package/dist/core/pod-dialect.js.map +1 -1
- package/dist/core/pod-session.d.ts +6 -2
- package/dist/core/pod-session.d.ts.map +1 -1
- package/dist/core/pod-session.js +8 -2
- package/dist/core/pod-session.js.map +1 -1
- package/dist/core/query-builders/select-query-builder.d.ts +7 -0
- package/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/dist/core/query-builders/select-query-builder.js +56 -14
- package/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/dist/core/query-conditions.d.ts.map +1 -1
- package/dist/core/query-conditions.js.map +1 -1
- package/dist/core/resource-resolver/base-resolver.d.ts +74 -3
- package/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/dist/core/resource-resolver/base-resolver.js +221 -0
- package/dist/core/resource-resolver/base-resolver.js.map +1 -1
- package/dist/core/resource-resolver/document-resolver.d.ts +19 -4
- package/dist/core/resource-resolver/document-resolver.d.ts.map +1 -1
- package/dist/core/resource-resolver/document-resolver.js +72 -34
- package/dist/core/resource-resolver/document-resolver.js.map +1 -1
- package/dist/core/resource-resolver/fragment-resolver.d.ts +17 -3
- package/dist/core/resource-resolver/fragment-resolver.d.ts.map +1 -1
- package/dist/core/resource-resolver/fragment-resolver.js +28 -16
- package/dist/core/resource-resolver/fragment-resolver.js.map +1 -1
- package/dist/core/resource-resolver/types.d.ts +1 -1
- package/dist/core/resource-resolver/types.d.ts.map +1 -1
- package/dist/core/schema/pod-table.d.ts +6 -0
- package/dist/core/schema/pod-table.d.ts.map +1 -1
- package/dist/core/schema/pod-table.js +18 -9
- package/dist/core/schema/pod-table.js.map +1 -1
- package/dist/core/sparql/builder/expression-builder.d.ts +1 -0
- package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/dist/core/sparql/builder/expression-builder.js +50 -7
- package/dist/core/sparql/builder/expression-builder.js.map +1 -1
- package/dist/core/subject/resolver.d.ts +19 -0
- package/dist/core/subject/resolver.d.ts.map +1 -1
- package/dist/core/subject/resolver.js +77 -21
- package/dist/core/subject/resolver.js.map +1 -1
- package/dist/core/subject/types.d.ts +8 -1
- package/dist/core/subject/types.d.ts.map +1 -1
- package/dist/core/triple/builder.d.ts.map +1 -1
- package/dist/core/triple/builder.js +38 -1
- package/dist/core/triple/builder.js.map +1 -1
- package/dist/core/triple/handlers/inverse.d.ts +6 -2
- package/dist/core/triple/handlers/inverse.d.ts.map +1 -1
- package/dist/core/triple/handlers/inverse.js +37 -16
- package/dist/core/triple/handlers/inverse.js.map +1 -1
- package/dist/core/uri/resolver.d.ts +66 -2
- package/dist/core/uri/resolver.d.ts.map +1 -1
- package/dist/core/uri/resolver.js +212 -80
- package/dist/core/uri/resolver.js.map +1 -1
- package/dist/core/uri/types.d.ts +8 -1
- package/dist/core/uri/types.d.ts.map +1 -1
- package/dist/esm/core/ast-to-sparql.d.ts +1 -6
- package/dist/esm/core/ast-to-sparql.d.ts.map +1 -1
- package/dist/esm/core/ast-to-sparql.js +3 -22
- package/dist/esm/core/ast-to-sparql.js.map +1 -1
- package/dist/esm/core/execution/ldp-executor.d.ts +8 -7
- package/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
- package/dist/esm/core/execution/ldp-executor.js +165 -136
- package/dist/esm/core/execution/ldp-executor.js.map +1 -1
- package/dist/esm/core/execution/ldp-strategy.js +1 -1
- package/dist/esm/core/execution/ldp-strategy.js.map +1 -1
- package/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
- package/dist/esm/core/execution/pod-executor.js +9 -0
- package/dist/esm/core/execution/pod-executor.js.map +1 -1
- package/dist/esm/core/execution/sparql-strategy.d.ts +7 -26
- package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
- package/dist/esm/core/execution/sparql-strategy.js +65 -111
- package/dist/esm/core/execution/sparql-strategy.js.map +1 -1
- package/dist/esm/core/execution/types.d.ts +8 -8
- package/dist/esm/core/execution/types.d.ts.map +1 -1
- package/dist/esm/core/federated/executor.d.ts +3 -0
- package/dist/esm/core/federated/executor.d.ts.map +1 -1
- package/dist/esm/core/federated/executor.js +13 -8
- package/dist/esm/core/federated/executor.js.map +1 -1
- package/dist/esm/core/pod-database.d.ts +0 -4
- package/dist/esm/core/pod-database.d.ts.map +1 -1
- package/dist/esm/core/pod-database.js +10 -32
- package/dist/esm/core/pod-database.js.map +1 -1
- package/dist/esm/core/pod-dialect.d.ts +0 -24
- package/dist/esm/core/pod-dialect.d.ts.map +1 -1
- package/dist/esm/core/pod-dialect.js +0 -182
- package/dist/esm/core/pod-dialect.js.map +1 -1
- package/dist/esm/core/pod-session.d.ts +6 -2
- package/dist/esm/core/pod-session.d.ts.map +1 -1
- package/dist/esm/core/pod-session.js +8 -2
- package/dist/esm/core/pod-session.js.map +1 -1
- package/dist/esm/core/query-builders/select-query-builder.d.ts +7 -0
- package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/dist/esm/core/query-builders/select-query-builder.js +56 -14
- package/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/dist/esm/core/query-conditions.d.ts.map +1 -1
- package/dist/esm/core/query-conditions.js.map +1 -1
- package/dist/esm/core/resource-resolver/base-resolver.d.ts +74 -3
- package/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/dist/esm/core/resource-resolver/base-resolver.js +221 -0
- package/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
- package/dist/esm/core/resource-resolver/document-resolver.d.ts +19 -4
- package/dist/esm/core/resource-resolver/document-resolver.d.ts.map +1 -1
- package/dist/esm/core/resource-resolver/document-resolver.js +72 -34
- package/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
- package/dist/esm/core/resource-resolver/fragment-resolver.d.ts +17 -3
- package/dist/esm/core/resource-resolver/fragment-resolver.d.ts.map +1 -1
- package/dist/esm/core/resource-resolver/fragment-resolver.js +28 -16
- package/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -1
- package/dist/esm/core/resource-resolver/types.d.ts +1 -1
- package/dist/esm/core/resource-resolver/types.d.ts.map +1 -1
- package/dist/esm/core/schema/pod-table.d.ts +6 -0
- package/dist/esm/core/schema/pod-table.d.ts.map +1 -1
- package/dist/esm/core/schema/pod-table.js +18 -9
- package/dist/esm/core/schema/pod-table.js.map +1 -1
- package/dist/esm/core/sparql/builder/expression-builder.d.ts +1 -0
- package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
- package/dist/esm/core/sparql/builder/expression-builder.js +50 -7
- package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
- package/dist/esm/core/subject/resolver.d.ts +19 -0
- package/dist/esm/core/subject/resolver.d.ts.map +1 -1
- package/dist/esm/core/subject/resolver.js +77 -21
- package/dist/esm/core/subject/resolver.js.map +1 -1
- package/dist/esm/core/subject/types.d.ts +8 -1
- package/dist/esm/core/subject/types.d.ts.map +1 -1
- package/dist/esm/core/triple/builder.d.ts.map +1 -1
- package/dist/esm/core/triple/builder.js +38 -1
- package/dist/esm/core/triple/builder.js.map +1 -1
- package/dist/esm/core/triple/handlers/inverse.d.ts +6 -2
- package/dist/esm/core/triple/handlers/inverse.d.ts.map +1 -1
- package/dist/esm/core/triple/handlers/inverse.js +37 -16
- package/dist/esm/core/triple/handlers/inverse.js.map +1 -1
- package/dist/esm/core/uri/resolver.d.ts +66 -2
- package/dist/esm/core/uri/resolver.d.ts.map +1 -1
- package/dist/esm/core/uri/resolver.js +212 -80
- package/dist/esm/core/uri/resolver.js.map +1 -1
- package/dist/esm/core/uri/types.d.ts +8 -1
- package/dist/esm/core/uri/types.d.ts.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
- package/CHANGELOG-DRAFT.md +0 -444
package/dist/core/uri/types.d.ts
CHANGED
|
@@ -28,6 +28,13 @@ export interface ParsedSubject {
|
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* 时间变量上下文
|
|
31
|
+
*
|
|
32
|
+
* 变量命名遵循 Java/ISO 风格 (SimpleDateFormat):
|
|
33
|
+
* - yyyy: 年份 (4位)
|
|
34
|
+
* - MM: 月份 (2位,大写以区分分钟)
|
|
35
|
+
* - dd: 日期 (2位)
|
|
36
|
+
*
|
|
37
|
+
* 示例: {yyyy}/{MM}/{dd} → 2026/01/20
|
|
31
38
|
*/
|
|
32
39
|
export interface TimeContext {
|
|
33
40
|
/** 日期对象 */
|
|
@@ -35,7 +42,7 @@ export interface TimeContext {
|
|
|
35
42
|
/** 年份 (4位) */
|
|
36
43
|
yyyy: string;
|
|
37
44
|
/** 月份 (2位) */
|
|
38
|
-
|
|
45
|
+
MM: string;
|
|
39
46
|
/** 日期 (2位) */
|
|
40
47
|
dd: string;
|
|
41
48
|
/** Unix 时间戳 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/uri/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;IAEZ,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW;IACX,IAAI,EAAE,YAAY,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/uri/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,12 +51,7 @@ export declare class ASTToSPARQLConverter {
|
|
|
51
51
|
getPredicateForColumnPublic(column: any, table: PodTable): string;
|
|
52
52
|
formatLiteralValue(value: any, column?: any): string | string[];
|
|
53
53
|
generateSubjectUri(record: any, table: PodTable): string;
|
|
54
|
-
|
|
55
|
-
* @deprecated Use parseDrizzleAST() + convertSelect() with table context instead
|
|
56
|
-
* Direct SQL conversion without table context is limited and may not work correctly
|
|
57
|
-
*/
|
|
58
|
-
convert(sql: SQL): SPARQLQuery;
|
|
59
|
-
parseDrizzleAST(sql: SQL, table: PodTable): any;
|
|
54
|
+
parseDrizzleAST(sql: SQL, _table?: PodTable): any;
|
|
60
55
|
private parseWhereClause;
|
|
61
56
|
}
|
|
62
57
|
//# sourceMappingURL=ast-to-sparql.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-to-sparql.d.ts","sourceRoot":"","sources":["../../../src/core/ast-to-sparql.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast-to-sparql.d.ts","sourceRoot":"","sources":["../../../src/core/ast-to-sparql.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,10 +57,6 @@ export class ASTToSPARQLConverter {
|
|
|
57
57
|
}
|
|
58
58
|
addPrefix(prefix, uri) {
|
|
59
59
|
this.prefixes[prefix] = uri;
|
|
60
|
-
// Re-instantiate builders to propagate prefixes if necessary,
|
|
61
|
-
// or make builders reference this.prefixes object (passed by reference).
|
|
62
|
-
// Since we passed object ref in constructor, it should update automatically
|
|
63
|
-
// if we mutate the object.
|
|
64
60
|
}
|
|
65
61
|
// Legacy / Helper methods exposed for other modules
|
|
66
62
|
getPredicateForColumnPublic(column, table) {
|
|
@@ -72,23 +68,8 @@ export class ASTToSPARQLConverter {
|
|
|
72
68
|
generateSubjectUri(record, table) {
|
|
73
69
|
return generateSubjectUri(record, table, this.uriResolver);
|
|
74
70
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* Direct SQL conversion without table context is limited and may not work correctly
|
|
78
|
-
*/
|
|
79
|
-
convert(sql) {
|
|
80
|
-
const sqlString = sql.queryChunks.join('');
|
|
81
|
-
if (sqlString.toLowerCase().includes('select')) {
|
|
82
|
-
return this.convertSelect({
|
|
83
|
-
select: undefined,
|
|
84
|
-
columns: '*',
|
|
85
|
-
where: this.parseWhereClause(sql)
|
|
86
|
-
}, {});
|
|
87
|
-
}
|
|
88
|
-
throw new Error(`Direct SQL conversion without table context is limited: ${sqlString}`);
|
|
89
|
-
}
|
|
90
|
-
parseDrizzleAST(sql, table) {
|
|
91
|
-
// Basic placeholder
|
|
71
|
+
parseDrizzleAST(sql, _table) {
|
|
72
|
+
void _table;
|
|
92
73
|
return {
|
|
93
74
|
type: 'select',
|
|
94
75
|
columns: '*',
|
|
@@ -96,7 +77,7 @@ export class ASTToSPARQLConverter {
|
|
|
96
77
|
};
|
|
97
78
|
}
|
|
98
79
|
parseWhereClause(sql) {
|
|
99
|
-
|
|
80
|
+
void sql;
|
|
100
81
|
return {};
|
|
101
82
|
}
|
|
102
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-to-sparql.js","sourceRoot":"","sources":["../../../src/core/ast-to-sparql.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast-to-sparql.js","sourceRoot":"","sources":["../../../src/core/ast-to-sparql.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ export declare class LdpExecutor {
|
|
|
11
11
|
private fetchFn;
|
|
12
12
|
private tripleBuilder;
|
|
13
13
|
private uriResolver;
|
|
14
|
-
private n3PatchCounter;
|
|
15
14
|
constructor(sparqlExecutor: ComunicaSPARQLExecutor, fetchFn: typeof fetch, uriResolver: UriResolver);
|
|
16
15
|
/**
|
|
17
16
|
* 设置表注册表(用于 URI 引用自动补全)
|
|
@@ -35,7 +34,14 @@ export declare class LdpExecutor {
|
|
|
35
34
|
* 执行 DELETE 操作
|
|
36
35
|
*/
|
|
37
36
|
executeDelete(subjects: string[], table: PodTable, resourceUrl: string): Promise<any[]>;
|
|
38
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Execute a function with exponential backoff retry on server errors
|
|
39
|
+
*/
|
|
40
|
+
private retryWithBackoff;
|
|
41
|
+
/**
|
|
42
|
+
* Build error from failed response
|
|
43
|
+
*/
|
|
44
|
+
private buildPatchError;
|
|
39
45
|
private buildUpdatePatchPayload;
|
|
40
46
|
/**
|
|
41
47
|
* 执行更新操作
|
|
@@ -53,11 +59,6 @@ export declare class LdpExecutor {
|
|
|
53
59
|
* 内部 N3 Patch 实现(作为 SPARQL UPDATE 的回退)
|
|
54
60
|
*/
|
|
55
61
|
private executeN3PatchInternal;
|
|
56
|
-
/**
|
|
57
|
-
* 尝试使用 SPARQL UPDATE 进行 Patch
|
|
58
|
-
* 保留此方法供将来 SPARQL endpoint 增强使用
|
|
59
|
-
*/
|
|
60
|
-
private trySparqlPatch;
|
|
61
62
|
private formatTerm;
|
|
62
63
|
private fetchRecursiveTriplesToDelete;
|
|
63
64
|
private fetchExistingObjects;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ldp-executor.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/ldp-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ldp-executor.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/ldp-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAc;gBAErB,cAAc,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW;IAOnG;;;;OAIG;IACH,gBAAgB,CACd,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EACtC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAClC,IAAI;IAIP;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IAsMjB;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IA2FjB;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IAmCjB;;OAEG;YACW,gBAAgB;IAqC9B;;OAEG;YACW,eAAe;YAaf,uBAAuB;IAqFrC;;;;;;OAMG;YACW,cAAc;IAwD5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;YACW,sBAAsB;IAoDpC,OAAO,CAAC,UAAU;YA2BJ,6BAA6B;YA+C7B,oBAAoB;YAgBpB,oBAAoB;CAUnC"}
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
import { TripleBuilderImpl } from '../triple/builder';
|
|
7
7
|
export class LdpExecutor {
|
|
8
8
|
constructor(sparqlExecutor, fetchFn, uriResolver) {
|
|
9
|
-
// 用于跟踪 N3 Patch 请求数
|
|
10
|
-
this.n3PatchCounter = 0;
|
|
11
9
|
this.sparqlExecutor = sparqlExecutor;
|
|
12
10
|
this.fetchFn = fetchFn;
|
|
13
11
|
this.uriResolver = uriResolver;
|
|
@@ -31,11 +29,22 @@ export class LdpExecutor {
|
|
|
31
29
|
* 执行 INSERT 操作
|
|
32
30
|
*/
|
|
33
31
|
async executeInsert(rows, table, resourceUrl) {
|
|
34
|
-
const deleteTriples = [];
|
|
35
32
|
const insertTriples = [];
|
|
33
|
+
// DEBUG: Log insert operation details
|
|
34
|
+
console.log('[DEBUG executeInsert]', {
|
|
35
|
+
tableName: table.config?.name,
|
|
36
|
+
resourceUrl,
|
|
37
|
+
rowCount: rows.length,
|
|
38
|
+
template: table.config?.subjectTemplate,
|
|
39
|
+
base: table.config?.base,
|
|
40
|
+
});
|
|
36
41
|
rows.forEach((row, idx) => {
|
|
42
|
+
// DEBUG: Log row data
|
|
43
|
+
console.log(`[DEBUG executeInsert] Row ${idx}:`, JSON.stringify(row));
|
|
37
44
|
// 使用 SubjectResolver 生成 URI
|
|
38
45
|
const subject = this.uriResolver.resolveSubject(table, row, idx);
|
|
46
|
+
// DEBUG: Log generated subject URI
|
|
47
|
+
console.log(`[DEBUG executeInsert] Generated subject URI: ${subject}`);
|
|
39
48
|
// 1. rdf:type
|
|
40
49
|
const typeTriple = this.tripleBuilder.buildTypeTriple(subject, table.config.type);
|
|
41
50
|
insertTriples.push(...this.tripleBuilder.toN3Strings([typeTriple]));
|
|
@@ -59,12 +68,17 @@ export class LdpExecutor {
|
|
|
59
68
|
});
|
|
60
69
|
});
|
|
61
70
|
if (insertTriples.length === 0) {
|
|
71
|
+
console.log('[DEBUG executeInsert] No triples to insert, returning empty');
|
|
62
72
|
return [];
|
|
63
73
|
}
|
|
64
74
|
const mode = this.uriResolver.getResourceMode(table);
|
|
65
|
-
|
|
75
|
+
console.log(`[DEBUG executeInsert] Mode for table ${table.config?.name}: ${mode}`);
|
|
76
|
+
// Document Mode: 每条记录写入各自的文件
|
|
77
|
+
// 但如果多条记录共享同一个资源 URL(如同一天的 messages.ttl),则合并写入
|
|
66
78
|
if (mode === 'document') {
|
|
67
|
-
|
|
79
|
+
console.log('[DEBUG executeInsert] Entering Document mode branch');
|
|
80
|
+
// 按 resourceUrl 分组收集三元组
|
|
81
|
+
const resourceTriples = new Map();
|
|
68
82
|
for (let idx = 0; idx < rows.length; idx++) {
|
|
69
83
|
const row = rows[idx];
|
|
70
84
|
const subject = this.uriResolver.resolveSubject(table, row, idx);
|
|
@@ -91,15 +105,43 @@ export class LdpExecutor {
|
|
|
91
105
|
});
|
|
92
106
|
if (recordTriples.length === 0)
|
|
93
107
|
continue;
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
// 按 resourceUrl 分组
|
|
109
|
+
const existing = resourceTriples.get(docResourceUrl) || [];
|
|
110
|
+
existing.push(...recordTriples);
|
|
111
|
+
resourceTriples.set(docResourceUrl, existing);
|
|
112
|
+
}
|
|
113
|
+
// 对每个唯一的 resourceUrl 执行一次写入
|
|
114
|
+
const results = [];
|
|
115
|
+
for (const [docResourceUrl, triples] of resourceTriples.entries()) {
|
|
116
|
+
// 检查资源是否已存在,如果存在则使用 PATCH 追加
|
|
117
|
+
const headRes = await this.fetchFn(docResourceUrl, { method: 'HEAD' });
|
|
118
|
+
const resourceExists = headRes.ok || headRes.status === 405;
|
|
119
|
+
let response;
|
|
120
|
+
if (resourceExists) {
|
|
121
|
+
// 资源已存在,使用 SPARQL UPDATE 追加三元组
|
|
122
|
+
const sparql = `INSERT DATA {\n${triples.join('\n')}\n}`;
|
|
123
|
+
console.log(`[DEBUG executeInsert] Document mode PATCH to: ${docResourceUrl}`);
|
|
124
|
+
console.log(`[DEBUG executeInsert] Triples being added:\n${triples.join('\n')}`);
|
|
125
|
+
response = await this.fetchFn(docResourceUrl, {
|
|
126
|
+
method: 'PATCH',
|
|
127
|
+
headers: { 'Content-Type': 'application/sparql-update' },
|
|
128
|
+
body: sparql
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// 资源不存在,使用 PUT 创建
|
|
133
|
+
const body = triples.join('\n');
|
|
134
|
+
console.log(`[DEBUG executeInsert] Document mode PUT to: ${docResourceUrl}`);
|
|
135
|
+
console.log(`[DEBUG executeInsert] Triples being stored:\n${body}`);
|
|
136
|
+
response = await this.fetchFn(docResourceUrl, {
|
|
137
|
+
method: 'PUT',
|
|
138
|
+
headers: { 'Content-Type': 'text/turtle' },
|
|
139
|
+
body
|
|
140
|
+
});
|
|
141
|
+
}
|
|
100
142
|
if (![200, 201, 202, 204, 205].includes(response.status)) {
|
|
101
143
|
const text = await response.text().catch(() => '');
|
|
102
|
-
throw new Error(`
|
|
144
|
+
throw new Error(`Write failed for ${docResourceUrl}: ${response.status} ${response.statusText}${text ? ` - ${text}` : ''}`);
|
|
103
145
|
}
|
|
104
146
|
await this.sparqlExecutor.invalidateHttpCache(docResourceUrl);
|
|
105
147
|
const lastSlash = docResourceUrl.lastIndexOf('/');
|
|
@@ -107,7 +149,9 @@ export class LdpExecutor {
|
|
|
107
149
|
const containerUrl = docResourceUrl.slice(0, lastSlash + 1);
|
|
108
150
|
await this.sparqlExecutor.invalidateHttpCache(containerUrl);
|
|
109
151
|
}
|
|
110
|
-
|
|
152
|
+
// Also invalidate global cache to ensure SPARQL endpoint queries see the new data
|
|
153
|
+
await this.sparqlExecutor.invalidateHttpCache(undefined).catch(() => undefined);
|
|
154
|
+
results.push({ success: true, source: docResourceUrl, status: response.status, via: resourceExists ? 'patch' : 'put' });
|
|
111
155
|
}
|
|
112
156
|
return results;
|
|
113
157
|
}
|
|
@@ -154,6 +198,8 @@ export class LdpExecutor {
|
|
|
154
198
|
const containerUrl = resourceUrl.slice(0, lastSlash + 1);
|
|
155
199
|
await this.sparqlExecutor.invalidateHttpCache(containerUrl);
|
|
156
200
|
}
|
|
201
|
+
// Also invalidate global cache to ensure SPARQL endpoint queries see the new data
|
|
202
|
+
await this.sparqlExecutor.invalidateHttpCache(undefined).catch(() => undefined);
|
|
157
203
|
return [{ success: true, source: resourceUrl, status: response.status, via: 'sparql-update' }];
|
|
158
204
|
}
|
|
159
205
|
/**
|
|
@@ -180,7 +226,7 @@ export class LdpExecutor {
|
|
|
180
226
|
// 这里需要特殊的逻辑来处理"更新"语义:先删旧的,再插新的
|
|
181
227
|
// 额外的内联对象清理逻辑
|
|
182
228
|
const entries = Object.entries(data).filter(([_, value]) => value !== undefined);
|
|
183
|
-
for (const [key
|
|
229
|
+
for (const [key] of entries) {
|
|
184
230
|
// 跳过系统字段
|
|
185
231
|
if (key === '@id' || key === 'subject')
|
|
186
232
|
continue;
|
|
@@ -260,18 +306,47 @@ export class LdpExecutor {
|
|
|
260
306
|
return results;
|
|
261
307
|
}
|
|
262
308
|
// ================= Private Helpers =================
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
309
|
+
/**
|
|
310
|
+
* Execute a function with exponential backoff retry on server errors
|
|
311
|
+
*/
|
|
312
|
+
async retryWithBackoff(fn, maxRetries = 3) {
|
|
313
|
+
let response = null;
|
|
314
|
+
let lastError;
|
|
315
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
316
|
+
try {
|
|
317
|
+
const outcome = await fn();
|
|
318
|
+
response = outcome.response;
|
|
319
|
+
if (outcome.result !== undefined) {
|
|
320
|
+
return { response, result: outcome.result };
|
|
321
|
+
}
|
|
322
|
+
if (outcome.fallback) {
|
|
323
|
+
const fallbackResult = await outcome.fallback();
|
|
324
|
+
return { response, result: fallbackResult };
|
|
325
|
+
}
|
|
326
|
+
if (!outcome.shouldRetry) {
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
|
|
330
|
+
}
|
|
331
|
+
catch (e) {
|
|
332
|
+
lastError = e;
|
|
333
|
+
if (i < maxRetries - 1) {
|
|
334
|
+
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
|
|
335
|
+
}
|
|
336
|
+
}
|
|
274
337
|
}
|
|
338
|
+
return { response, lastError };
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Build error from failed response
|
|
342
|
+
*/
|
|
343
|
+
async buildPatchError(response, lastError, errorPrefix) {
|
|
344
|
+
const text = response ? await response.text().catch(() => '') : '';
|
|
345
|
+
const status = response ? response.status : 'Network Error';
|
|
346
|
+
const statusText = response ? response.statusText : (lastError instanceof Error ? lastError.message : String(lastError));
|
|
347
|
+
const error = new Error(`${errorPrefix} failed: ${status} ${statusText}${text ? ` - ${text}` : ''}`);
|
|
348
|
+
error.status = status;
|
|
349
|
+
return error;
|
|
275
350
|
}
|
|
276
351
|
async buildUpdatePatchPayload(subject, table, data, resourceUrl) {
|
|
277
352
|
const deleteTriples = [];
|
|
@@ -352,59 +427,43 @@ export class LdpExecutor {
|
|
|
352
427
|
if (deleteTriples.length === 0 && insertTriples.length === 0 && deleteWherePatterns.length === 0) {
|
|
353
428
|
return [];
|
|
354
429
|
}
|
|
355
|
-
this.n3PatchCounter++;
|
|
356
|
-
// 构建 SPARQL UPDATE 查询
|
|
357
430
|
const sparqlUpdate = this.buildSparqlUpdate(deleteTriples, insertTriples, deleteWherePatterns);
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
await this.sparqlExecutor.invalidateHttpCache(resourceUrl);
|
|
372
|
-
return [{ success: true, source: resourceUrl, status: response.status, via: 'sparql-update' }];
|
|
373
|
-
}
|
|
374
|
-
// 如果 SPARQL UPDATE 不被支持 (415/405),尝试 N3 Patch
|
|
375
|
-
// 如果 SPARQL UPDATE 不被支持 (415/405),尝试 N3 Patch
|
|
376
|
-
if (response.status === 415 || response.status === 405) {
|
|
377
|
-
const fallbackDeletes = deleteWherePatterns.length > 0
|
|
378
|
-
? [...deleteTriples, ...deleteWherePatterns]
|
|
379
|
-
: deleteTriples;
|
|
380
|
-
const fallbackWhere = deleteWherePatterns.length > 0
|
|
381
|
-
? deleteWherePatterns
|
|
382
|
-
: wherePatterns;
|
|
383
|
-
return await this.executeN3PatchInternal(resourceUrl, fallbackDeletes, insertTriples, fallbackWhere);
|
|
384
|
-
}
|
|
385
|
-
// 服务器错误,重试
|
|
386
|
-
if (response.status >= 500 || response.status === 409) {
|
|
387
|
-
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
|
|
388
|
-
continue;
|
|
389
|
-
}
|
|
390
|
-
break;
|
|
431
|
+
const { response, result, lastError } = await this.retryWithBackoff(async () => {
|
|
432
|
+
const res = await this.fetchFn(resourceUrl, {
|
|
433
|
+
method: 'PATCH',
|
|
434
|
+
headers: { 'Content-Type': 'application/sparql-update' },
|
|
435
|
+
body: sparqlUpdate
|
|
436
|
+
});
|
|
437
|
+
if (res.ok) {
|
|
438
|
+
await this.sparqlExecutor.invalidateHttpCache(resourceUrl);
|
|
439
|
+
return {
|
|
440
|
+
response: res,
|
|
441
|
+
result: [{ success: true, source: resourceUrl, status: res.status, via: 'sparql-update' }],
|
|
442
|
+
shouldRetry: false
|
|
443
|
+
};
|
|
391
444
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
445
|
+
// SPARQL UPDATE not supported, fallback to N3 Patch
|
|
446
|
+
if (res.status === 415 || res.status === 405) {
|
|
447
|
+
const fallbackDeletes = deleteWherePatterns.length > 0
|
|
448
|
+
? [...deleteTriples, ...deleteWherePatterns]
|
|
449
|
+
: deleteTriples;
|
|
450
|
+
const fallbackWhere = deleteWherePatterns.length > 0
|
|
451
|
+
? deleteWherePatterns
|
|
452
|
+
: wherePatterns;
|
|
453
|
+
return {
|
|
454
|
+
response: res,
|
|
455
|
+
shouldRetry: false,
|
|
456
|
+
fallback: () => this.executeN3PatchInternal(resourceUrl, fallbackDeletes, insertTriples, fallbackWhere)
|
|
457
|
+
};
|
|
396
458
|
}
|
|
459
|
+
// Server error, retry
|
|
460
|
+
const shouldRetry = res.status >= 500 || res.status === 409;
|
|
461
|
+
return { response: res, shouldRetry };
|
|
462
|
+
});
|
|
463
|
+
if (result) {
|
|
464
|
+
return result;
|
|
397
465
|
}
|
|
398
|
-
|
|
399
|
-
const text = response ? await response.text().catch(() => '') : '';
|
|
400
|
-
const status = response ? response.status : 'Network Error';
|
|
401
|
-
const statusText = response ? response.statusText : (lastError instanceof Error ? lastError.message : String(lastError));
|
|
402
|
-
const error = new Error(`SPARQL UPDATE failed: ${status} ${statusText}${text ? ` - ${text}` : ''}`);
|
|
403
|
-
error.status = status;
|
|
404
|
-
throw error;
|
|
405
|
-
}
|
|
406
|
-
await this.sparqlExecutor.invalidateHttpCache(resourceUrl);
|
|
407
|
-
return [{ success: true, source: resourceUrl, status: response.status, via: 'sparql-update' }];
|
|
466
|
+
throw await this.buildPatchError(response, lastError, 'SPARQL UPDATE');
|
|
408
467
|
}
|
|
409
468
|
/**
|
|
410
469
|
* 构建 SPARQL UPDATE 查询
|
|
@@ -430,73 +489,43 @@ export class LdpExecutor {
|
|
|
430
489
|
*/
|
|
431
490
|
async executeN3PatchInternal(resourceUrl, deleteTriples, insertTriples, wherePatterns = []) {
|
|
432
491
|
const patch = this.tripleBuilder.buildN3Patch(deleteTriples, insertTriples, wherePatterns);
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
492
|
+
const { response, result, lastError } = await this.retryWithBackoff(async () => {
|
|
493
|
+
let res = await this.fetchFn(resourceUrl, {
|
|
494
|
+
method: 'PATCH',
|
|
495
|
+
headers: { 'Content-Type': 'text/n3' },
|
|
496
|
+
body: patch
|
|
497
|
+
});
|
|
498
|
+
// Resource not found, create it and retry
|
|
499
|
+
if (res.status === 404) {
|
|
500
|
+
const createRes = await this.fetchFn(resourceUrl, {
|
|
501
|
+
method: 'PUT',
|
|
502
|
+
headers: { 'Content-Type': 'text/turtle' },
|
|
503
|
+
body: ''
|
|
504
|
+
});
|
|
505
|
+
if (!createRes.ok && createRes.status !== 409) {
|
|
506
|
+
throw new Error(`Failed to create resource ${resourceUrl}: ${createRes.status} ${createRes.statusText}`);
|
|
507
|
+
}
|
|
508
|
+
res = await this.fetchFn(resourceUrl, {
|
|
438
509
|
method: 'PATCH',
|
|
439
|
-
headers: {
|
|
440
|
-
'Content-Type': 'text/n3'
|
|
441
|
-
},
|
|
510
|
+
headers: { 'Content-Type': 'text/n3' },
|
|
442
511
|
body: patch
|
|
443
512
|
});
|
|
444
|
-
if (response.status === 404) {
|
|
445
|
-
const createRes = await this.fetchFn(resourceUrl, {
|
|
446
|
-
method: 'PUT',
|
|
447
|
-
headers: { 'Content-Type': 'text/turtle' },
|
|
448
|
-
body: ''
|
|
449
|
-
});
|
|
450
|
-
if (!createRes.ok && createRes.status !== 409) {
|
|
451
|
-
throw new Error(`Failed to create resource ${resourceUrl}: ${createRes.status} ${createRes.statusText}`);
|
|
452
|
-
}
|
|
453
|
-
response = await this.fetchFn(resourceUrl, {
|
|
454
|
-
method: 'PATCH',
|
|
455
|
-
headers: { 'Content-Type': 'text/n3' },
|
|
456
|
-
body: patch
|
|
457
|
-
});
|
|
458
|
-
}
|
|
459
|
-
if (response.ok)
|
|
460
|
-
break;
|
|
461
|
-
if (response.status >= 500 || response.status === 409) {
|
|
462
|
-
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
|
|
463
|
-
continue;
|
|
464
|
-
}
|
|
465
|
-
break;
|
|
466
513
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
514
|
+
if (res.ok) {
|
|
515
|
+
await this.sparqlExecutor.invalidateHttpCache(resourceUrl);
|
|
516
|
+
return {
|
|
517
|
+
response: res,
|
|
518
|
+
result: [{ success: true, source: resourceUrl, status: res.status, via: 'n3' }],
|
|
519
|
+
shouldRetry: false
|
|
520
|
+
};
|
|
471
521
|
}
|
|
522
|
+
const shouldRetry = res.status >= 500 || res.status === 409;
|
|
523
|
+
return { response: res, shouldRetry };
|
|
524
|
+
});
|
|
525
|
+
if (result) {
|
|
526
|
+
return result;
|
|
472
527
|
}
|
|
473
|
-
|
|
474
|
-
const text = response ? await response.text().catch(() => '') : '';
|
|
475
|
-
const status = response ? response.status : 'Network Error';
|
|
476
|
-
const statusText = response ? response.statusText : (lastError instanceof Error ? lastError.message : String(lastError));
|
|
477
|
-
const error = new Error(`N3 PATCH failed: ${status} ${statusText}${text ? ` - ${text}` : ''}`);
|
|
478
|
-
error.status = status;
|
|
479
|
-
throw error;
|
|
480
|
-
}
|
|
481
|
-
await this.sparqlExecutor.invalidateHttpCache(resourceUrl);
|
|
482
|
-
return [{ success: true, source: resourceUrl, status: response.status, via: 'n3' }];
|
|
483
|
-
}
|
|
484
|
-
/**
|
|
485
|
-
* 尝试使用 SPARQL UPDATE 进行 Patch
|
|
486
|
-
* 保留此方法供将来 SPARQL endpoint 增强使用
|
|
487
|
-
*/
|
|
488
|
-
async trySparqlPatch(resourceUrl, sparql) {
|
|
489
|
-
try {
|
|
490
|
-
const response = await this.fetchFn(resourceUrl, {
|
|
491
|
-
method: 'PATCH',
|
|
492
|
-
headers: { 'Content-Type': 'application/sparql-update' },
|
|
493
|
-
body: sparql
|
|
494
|
-
});
|
|
495
|
-
return response.ok;
|
|
496
|
-
}
|
|
497
|
-
catch (error) {
|
|
498
|
-
return false;
|
|
499
|
-
}
|
|
528
|
+
throw await this.buildPatchError(response, lastError, 'N3 PATCH');
|
|
500
529
|
}
|
|
501
530
|
formatTerm(term) {
|
|
502
531
|
if (!term)
|
|
@@ -544,7 +573,7 @@ export class LdpExecutor {
|
|
|
544
573
|
if (o.termType === 'NamedNode') {
|
|
545
574
|
// Check against table schema to see if this is an inline column
|
|
546
575
|
const pVal = p.value;
|
|
547
|
-
for (const [
|
|
576
|
+
for (const [, col] of Object.entries(table.columns)) {
|
|
548
577
|
const predicate = this.tripleBuilder.getPredicateUri(col, table);
|
|
549
578
|
// Check if column is inline
|
|
550
579
|
const isInline = col.dataType === 'object' || col.dataType === 'json' ||
|