@comake/skl-js-engine 1.3.14 → 1.3.16
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/SklEngine.d.ts +9 -6
- package/dist/SklEngine.d.ts.map +1 -1
- package/dist/SklEngine.js +37 -20
- package/dist/SklEngine.js.map +1 -1
- package/dist/hooks/globalHooks.d.ts +6 -6
- package/dist/hooks/globalHooks.d.ts.map +1 -1
- package/dist/hooks/globalHooks.js +19 -12
- package/dist/hooks/globalHooks.js.map +1 -1
- package/dist/hooks/types.d.ts +3 -1
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/hooks/types.js.map +1 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +27 -3
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -1
- package/dist/util/SparqlUtil.d.ts +1 -0
- package/dist/util/SparqlUtil.d.ts.map +1 -1
- package/dist/util/SparqlUtil.js +5 -4
- package/dist/util/SparqlUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/SklEngine.ts +45 -26
- package/src/hooks/globalHooks.ts +29 -12
- package/src/hooks/types.ts +3 -1
- package/src/storage/query-adapter/sparql/SparqlQueryAdapter.ts +31 -4
- package/src/util/SparqlUtil.ts +3 -2
|
@@ -38,12 +38,12 @@ declare class GlobalHooksRegistry {
|
|
|
38
38
|
registerBeforeExecuteCapabilityMapping(hook: GlobalExecuteCapabilityHook, priority?: number): symbol;
|
|
39
39
|
registerAfterExecuteCapabilityMapping(hook: GlobalAfterHook, priority?: number): symbol;
|
|
40
40
|
registerErrorExecuteCapabilityMapping(hook: GlobalErrorHook, priority?: number): symbol;
|
|
41
|
-
executeBeforeCreate(entities: Entity[]): Promise<void>;
|
|
42
|
-
executeAfterCreate(entities: Entity | Entity[]): Promise<any>;
|
|
43
|
-
executeErrorCreate(entities: Entity[], error: Error): Promise<void>;
|
|
44
|
-
executeBeforeExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping): Promise<void>;
|
|
45
|
-
executeAfterExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping, result: any): Promise<any>;
|
|
46
|
-
executeErrorExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping, error: Error): Promise<void>;
|
|
41
|
+
executeBeforeCreate(entities: Entity[], extras?: Partial<SklHookContext>): Promise<void>;
|
|
42
|
+
executeAfterCreate(entities: Entity | Entity[], extras?: Partial<SklHookContext>): Promise<any>;
|
|
43
|
+
executeErrorCreate(entities: Entity[], error: Error, extras?: Partial<SklHookContext>): Promise<void>;
|
|
44
|
+
executeBeforeExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping, extras?: Partial<SklHookContext>): Promise<void>;
|
|
45
|
+
executeAfterExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping, result: any, extras?: Partial<SklHookContext>): Promise<any>;
|
|
46
|
+
executeErrorExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping, error: Error, extras?: Partial<SklHookContext>): Promise<void>;
|
|
47
47
|
}
|
|
48
48
|
export declare const globalHooks: GlobalHooksRegistry;
|
|
49
49
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalHooks.d.ts","sourceRoot":"","sources":["../../src/hooks/globalHooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;CAItB,CAAC;AAGF,oBAAY,gBAAgB,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjF,oBAAY,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3F,oBAAY,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC9F,oBAAY,2BAA2B,GAAG,CACxC,OAAO,EAAE,cAAc,EACvB,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAS1B,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoD;;IAY1E;;OAEG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,gBAAgB,GAAG,eAAe,GAAG,eAAe,EAC1D,QAAQ,SAAI,GACX,MAAM;IAoBT;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAgBnC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"globalHooks.d.ts","sourceRoot":"","sources":["../../src/hooks/globalHooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,10 @@ class GlobalHooksRegistry {
|
|
|
64
64
|
* Execute hooks for a specific operation and stage
|
|
65
65
|
*/
|
|
66
66
|
async execute(type, stage, context, resultOrError) {
|
|
67
|
+
// Allow bypassing hooks to prevent re-entrancy from within hooks
|
|
68
|
+
if (context?.bypassHooks) {
|
|
69
|
+
return resultOrError;
|
|
70
|
+
}
|
|
67
71
|
const hooksList = this.hooks.get(type)?.get(stage);
|
|
68
72
|
if (!hooksList || hooksList.length === 0) {
|
|
69
73
|
return resultOrError;
|
|
@@ -118,37 +122,40 @@ class GlobalHooksRegistry {
|
|
|
118
122
|
return this.register(exports.HookTypes.EXECUTE_CAPABILITY_MAPPING, exports.HookStages.ERROR, hook, priority);
|
|
119
123
|
}
|
|
120
124
|
// Execution convenience methods
|
|
121
|
-
async executeBeforeCreate(entities) {
|
|
122
|
-
await this.execute(exports.HookTypes.CREATE, exports.HookStages.BEFORE, { entities, operation: 'save', operationParameters: {} });
|
|
125
|
+
async executeBeforeCreate(entities, extras) {
|
|
126
|
+
await this.execute(exports.HookTypes.CREATE, exports.HookStages.BEFORE, { entities, operation: 'save', operationParameters: {}, ...extras });
|
|
123
127
|
}
|
|
124
|
-
async executeAfterCreate(entities) {
|
|
128
|
+
async executeAfterCreate(entities, extras) {
|
|
125
129
|
if (!Array.isArray(entities)) {
|
|
126
130
|
entities = [entities];
|
|
127
131
|
}
|
|
128
|
-
return this.execute(exports.HookTypes.CREATE, exports.HookStages.AFTER, { entities, operation: 'save', operationParameters: {} }, entities);
|
|
132
|
+
return this.execute(exports.HookTypes.CREATE, exports.HookStages.AFTER, { entities, operation: 'save', operationParameters: {}, ...extras }, entities);
|
|
129
133
|
}
|
|
130
|
-
async executeErrorCreate(entities, error) {
|
|
131
|
-
await this.execute(exports.HookTypes.CREATE, exports.HookStages.ERROR, { entities, operation: 'save', operationParameters: {} }, error);
|
|
134
|
+
async executeErrorCreate(entities, error, extras) {
|
|
135
|
+
await this.execute(exports.HookTypes.CREATE, exports.HookStages.ERROR, { entities, operation: 'save', operationParameters: {}, ...extras }, error);
|
|
132
136
|
}
|
|
133
|
-
async executeBeforeExecuteCapabilityMapping(entities, capabilityMapping) {
|
|
137
|
+
async executeBeforeExecuteCapabilityMapping(entities, capabilityMapping, extras) {
|
|
134
138
|
await this.execute(exports.HookTypes.EXECUTE_CAPABILITY_MAPPING, exports.HookStages.BEFORE, {
|
|
135
139
|
entities,
|
|
136
140
|
operation: 'executeCapabilityMapping',
|
|
137
|
-
operationParameters: { capabilityMapping }
|
|
141
|
+
operationParameters: { capabilityMapping },
|
|
142
|
+
...extras
|
|
138
143
|
});
|
|
139
144
|
}
|
|
140
|
-
async executeAfterExecuteCapabilityMapping(entities, capabilityMapping, result) {
|
|
145
|
+
async executeAfterExecuteCapabilityMapping(entities, capabilityMapping, result, extras) {
|
|
141
146
|
return this.execute(exports.HookTypes.EXECUTE_CAPABILITY_MAPPING, exports.HookStages.AFTER, {
|
|
142
147
|
entities,
|
|
143
148
|
operation: 'executeCapabilityMapping',
|
|
144
|
-
operationParameters: { capabilityMapping }
|
|
149
|
+
operationParameters: { capabilityMapping },
|
|
150
|
+
...extras
|
|
145
151
|
}, result);
|
|
146
152
|
}
|
|
147
|
-
async executeErrorExecuteCapabilityMapping(entities, capabilityMapping, error) {
|
|
153
|
+
async executeErrorExecuteCapabilityMapping(entities, capabilityMapping, error, extras) {
|
|
148
154
|
await this.execute(exports.HookTypes.EXECUTE_CAPABILITY_MAPPING, exports.HookStages.ERROR, {
|
|
149
155
|
entities,
|
|
150
156
|
operation: 'executeCapabilityMapping',
|
|
151
|
-
operationParameters: { capabilityMapping }
|
|
157
|
+
operationParameters: { capabilityMapping },
|
|
158
|
+
...extras
|
|
152
159
|
}, error);
|
|
153
160
|
}
|
|
154
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalHooks.js","sourceRoot":"","sources":["../../src/hooks/globalHooks.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable id-length */\n/* eslint-disable symbol-description */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CapabilityMapping, Entity } from '../util/Types';\nimport type { SklHookContext } from './types';\n\n// Use symbols for hook types to avoid string collisions\nexport const HookTypes = {\n CREATE: Symbol('create'),\n READ: Symbol('read'),\n UPDATE: Symbol('update'),\n DELETE: Symbol('delete'),\n EXECUTE_CAPABILITY_MAPPING: Symbol('executeCapabilityMapping')\n};\n\nexport const HookStages = {\n BEFORE: Symbol('before'),\n AFTER: Symbol('after'),\n ERROR: Symbol('error')\n};\n\n// Hook function types\nexport type GlobalBeforeHook = (context: SklHookContext) => Promise<void> | void;\nexport type GlobalAfterHook = (context: SklHookContext, result: any) => Promise<any> | any;\nexport type GlobalErrorHook = (context: SklHookContext, error: Error) => Promise<void> | void;\nexport type GlobalExecuteCapabilityHook = (\n context: SklHookContext,\n capabilityMapping: CapabilityMapping,\n) => Promise<void> | void;\n// Hook registry entry type with metadata\ninterface HookEntry {\n id: symbol;\n fn: GlobalBeforeHook | GlobalAfterHook | GlobalErrorHook;\n priority: number;\n}\n\n// Registry to store global hooks\nclass GlobalHooksRegistry {\n private readonly hooks: Map<symbol, Map<symbol, HookEntry[]>> = new Map();\n\n constructor() {\n // Initialize hook maps for all CRUD operations and stages\n Object.values(HookTypes).forEach(type => {\n this.hooks.set(type, new Map());\n Object.values(HookStages).forEach(stage => {\n this.hooks.get(type)!.set(stage, []);\n });\n });\n }\n\n /**\n * Register a hook with optional priority (higher runs first)\n */\n register(\n type: symbol,\n stage: symbol,\n hook: GlobalBeforeHook | GlobalAfterHook | GlobalErrorHook,\n priority = 0\n ): symbol {\n const hookId = Symbol();\n const hooksList = this.hooks.get(type)?.get(stage);\n\n if (!hooksList) {\n throw new Error(`Invalid hook type or stage`);\n }\n\n hooksList.push({\n id: hookId,\n fn: hook,\n priority\n });\n\n // Sort by priority (descending)\n hooksList.sort((a, b) => b.priority - a.priority);\n\n return hookId;\n }\n\n /**\n * Unregister a hook by its ID\n */\n unregister(hookId: symbol): boolean {\n let removed = false;\n\n this.hooks.forEach(stageMap => {\n stageMap.forEach(hooksList => {\n const index = hooksList.findIndex(entry => entry.id === hookId);\n if (index !== -1) {\n hooksList.splice(index, 1);\n removed = true;\n }\n });\n });\n\n return removed;\n }\n\n /**\n * Execute hooks for a specific operation and stage\n */\n async execute(type: symbol, stage: symbol, context: SklHookContext, resultOrError?: any): Promise<any> {\n const hooksList = this.hooks.get(type)?.get(stage);\n\n if (!hooksList || hooksList.length === 0) {\n return resultOrError;\n }\n\n if (stage === HookStages.BEFORE) {\n for (const entry of hooksList) {\n await (entry.fn as GlobalBeforeHook)(context);\n }\n return resultOrError;\n }\n if (stage === HookStages.AFTER) {\n let result = resultOrError;\n for (const entry of hooksList) {\n const newResult = await (entry.fn as GlobalAfterHook)(context, result);\n if (newResult !== undefined) {\n result = newResult;\n }\n }\n return result;\n }\n if (stage === HookStages.ERROR) {\n for (const entry of hooksList) {\n await (entry.fn as GlobalErrorHook)(context, resultOrError);\n }\n return resultOrError;\n }\n\n return resultOrError;\n }\n\n // Convenience methods for common operations\n registerBeforeCreate(hook: GlobalBeforeHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.BEFORE, hook, priority);\n }\n\n registerAfterCreate(hook: GlobalAfterHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.AFTER, hook, priority);\n }\n\n registerErrorCreate(hook: GlobalErrorHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.ERROR, hook, priority);\n }\n\n // Additional convenience methods for other CRUD operations\n registerBeforeRead(hook: GlobalBeforeHook, priority?: number): symbol {\n return this.register(HookTypes.READ, HookStages.BEFORE, hook, priority);\n }\n\n // ... other convenience methods for read, update, delete operations\n\n // Convenience methods for execute capability operations\n registerBeforeExecuteCapabilityMapping(hook: GlobalExecuteCapabilityHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.BEFORE, hook, priority);\n }\n\n registerAfterExecuteCapabilityMapping(hook: GlobalAfterHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.AFTER, hook, priority);\n }\n\n registerErrorExecuteCapabilityMapping(hook: GlobalErrorHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.ERROR, hook, priority);\n }\n\n // Execution convenience methods\n async executeBeforeCreate(entities: Entity[]): Promise<void> {\n await this.execute(HookTypes.CREATE, HookStages.BEFORE, { entities, operation: 'save', operationParameters: {}});\n }\n\n async executeAfterCreate(entities: Entity | Entity[]): Promise<any> {\n if (!Array.isArray(entities)) {\n entities = [ entities ];\n }\n return this.execute(\n HookTypes.CREATE,\n HookStages.AFTER,\n { entities, operation: 'save', operationParameters: {}},\n entities\n );\n }\n\n async executeErrorCreate(entities: Entity[], error: Error): Promise<void> {\n await this.execute(\n HookTypes.CREATE,\n HookStages.ERROR,\n { entities, operation: 'save', operationParameters: {}},\n error\n );\n }\n\n async executeBeforeExecuteCapabilityMapping(entities: Entity[], capabilityMapping: CapabilityMapping): Promise<void> {\n await this.execute(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.BEFORE, {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping }\n });\n }\n\n async executeAfterExecuteCapabilityMapping(\n entities: Entity[],\n capabilityMapping: CapabilityMapping,\n result: any\n ): Promise<any> {\n return this.execute(\n HookTypes.EXECUTE_CAPABILITY_MAPPING,\n HookStages.AFTER,\n {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping }\n },\n result\n );\n }\n\n async executeErrorExecuteCapabilityMapping(\n entities: Entity[],\n capabilityMapping: CapabilityMapping,\n error: Error\n ): Promise<void> {\n await this.execute(\n HookTypes.EXECUTE_CAPABILITY_MAPPING,\n HookStages.ERROR,\n {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping }\n },\n error\n );\n }\n}\n\n// Export a singleton instance\nexport const globalHooks = new GlobalHooksRegistry();\n"]}
|
|
1
|
+
{"version":3,"file":"globalHooks.js","sourceRoot":"","sources":["../../src/hooks/globalHooks.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable id-length */\n/* eslint-disable symbol-description */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CapabilityMapping, Entity } from '../util/Types';\nimport type { SklHookContext } from './types';\n\n// Use symbols for hook types to avoid string collisions\nexport const HookTypes = {\n CREATE: Symbol('create'),\n READ: Symbol('read'),\n UPDATE: Symbol('update'),\n DELETE: Symbol('delete'),\n EXECUTE_CAPABILITY_MAPPING: Symbol('executeCapabilityMapping')\n};\n\nexport const HookStages = {\n BEFORE: Symbol('before'),\n AFTER: Symbol('after'),\n ERROR: Symbol('error')\n};\n\n// Hook function types\nexport type GlobalBeforeHook = (context: SklHookContext) => Promise<void> | void;\nexport type GlobalAfterHook = (context: SklHookContext, result: any) => Promise<any> | any;\nexport type GlobalErrorHook = (context: SklHookContext, error: Error) => Promise<void> | void;\nexport type GlobalExecuteCapabilityHook = (\n context: SklHookContext,\n capabilityMapping: CapabilityMapping,\n) => Promise<void> | void;\n// Hook registry entry type with metadata\ninterface HookEntry {\n id: symbol;\n fn: GlobalBeforeHook | GlobalAfterHook | GlobalErrorHook;\n priority: number;\n}\n\n// Registry to store global hooks\nclass GlobalHooksRegistry {\n private readonly hooks: Map<symbol, Map<symbol, HookEntry[]>> = new Map();\n\n constructor() {\n // Initialize hook maps for all CRUD operations and stages\n Object.values(HookTypes).forEach(type => {\n this.hooks.set(type, new Map());\n Object.values(HookStages).forEach(stage => {\n this.hooks.get(type)!.set(stage, []);\n });\n });\n }\n\n /**\n * Register a hook with optional priority (higher runs first)\n */\n register(\n type: symbol,\n stage: symbol,\n hook: GlobalBeforeHook | GlobalAfterHook | GlobalErrorHook,\n priority = 0\n ): symbol {\n const hookId = Symbol();\n const hooksList = this.hooks.get(type)?.get(stage);\n\n if (!hooksList) {\n throw new Error(`Invalid hook type or stage`);\n }\n\n hooksList.push({\n id: hookId,\n fn: hook,\n priority\n });\n\n // Sort by priority (descending)\n hooksList.sort((a, b) => b.priority - a.priority);\n\n return hookId;\n }\n\n /**\n * Unregister a hook by its ID\n */\n unregister(hookId: symbol): boolean {\n let removed = false;\n\n this.hooks.forEach(stageMap => {\n stageMap.forEach(hooksList => {\n const index = hooksList.findIndex(entry => entry.id === hookId);\n if (index !== -1) {\n hooksList.splice(index, 1);\n removed = true;\n }\n });\n });\n\n return removed;\n }\n\n /**\n * Execute hooks for a specific operation and stage\n */\n async execute(type: symbol, stage: symbol, context: SklHookContext, resultOrError?: any): Promise<any> {\n // Allow bypassing hooks to prevent re-entrancy from within hooks\n if (context?.bypassHooks) {\n return resultOrError;\n }\n const hooksList = this.hooks.get(type)?.get(stage);\n\n if (!hooksList || hooksList.length === 0) {\n return resultOrError;\n }\n\n if (stage === HookStages.BEFORE) {\n for (const entry of hooksList) {\n await (entry.fn as GlobalBeforeHook)(context);\n }\n return resultOrError;\n }\n if (stage === HookStages.AFTER) {\n let result = resultOrError;\n for (const entry of hooksList) {\n const newResult = await (entry.fn as GlobalAfterHook)(context, result);\n if (newResult !== undefined) {\n result = newResult;\n }\n }\n return result;\n }\n if (stage === HookStages.ERROR) {\n for (const entry of hooksList) {\n await (entry.fn as GlobalErrorHook)(context, resultOrError);\n }\n return resultOrError;\n }\n\n return resultOrError;\n }\n\n // Convenience methods for common operations\n registerBeforeCreate(hook: GlobalBeforeHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.BEFORE, hook, priority);\n }\n\n registerAfterCreate(hook: GlobalAfterHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.AFTER, hook, priority);\n }\n\n registerErrorCreate(hook: GlobalErrorHook, priority?: number): symbol {\n return this.register(HookTypes.CREATE, HookStages.ERROR, hook, priority);\n }\n\n // Additional convenience methods for other CRUD operations\n registerBeforeRead(hook: GlobalBeforeHook, priority?: number): symbol {\n return this.register(HookTypes.READ, HookStages.BEFORE, hook, priority);\n }\n\n // ... other convenience methods for read, update, delete operations\n\n // Convenience methods for execute capability operations\n registerBeforeExecuteCapabilityMapping(hook: GlobalExecuteCapabilityHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.BEFORE, hook, priority);\n }\n\n registerAfterExecuteCapabilityMapping(hook: GlobalAfterHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.AFTER, hook, priority);\n }\n\n registerErrorExecuteCapabilityMapping(hook: GlobalErrorHook, priority?: number): symbol {\n return this.register(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.ERROR, hook, priority);\n }\n\n // Execution convenience methods\n async executeBeforeCreate(entities: Entity[], extras?: Partial<SklHookContext>): Promise<void> {\n await this.execute(\n HookTypes.CREATE,\n HookStages.BEFORE,\n { entities, operation: 'save', operationParameters: {}, ...extras}\n );\n }\n\n async executeAfterCreate(entities: Entity | Entity[], extras?: Partial<SklHookContext>): Promise<any> {\n if (!Array.isArray(entities)) {\n entities = [ entities ];\n }\n return this.execute(\n HookTypes.CREATE,\n HookStages.AFTER,\n { entities, operation: 'save', operationParameters: {}, ...extras},\n entities\n );\n }\n\n async executeErrorCreate(entities: Entity[], error: Error, extras?: Partial<SklHookContext>): Promise<void> {\n await this.execute(\n HookTypes.CREATE,\n HookStages.ERROR,\n { entities, operation: 'save', operationParameters: {}, ...extras},\n error\n );\n }\n\n async executeBeforeExecuteCapabilityMapping(\n entities: Entity[],\n capabilityMapping: CapabilityMapping,\n extras?: Partial<SklHookContext>\n ): Promise<void> {\n await this.execute(HookTypes.EXECUTE_CAPABILITY_MAPPING, HookStages.BEFORE, {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping },\n ...extras\n });\n }\n\n async executeAfterExecuteCapabilityMapping(\n entities: Entity[],\n capabilityMapping: CapabilityMapping,\n result: any,\n extras?: Partial<SklHookContext>\n ): Promise<any> {\n return this.execute(\n HookTypes.EXECUTE_CAPABILITY_MAPPING,\n HookStages.AFTER,\n {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping },\n ...extras\n },\n result\n );\n }\n\n async executeErrorExecuteCapabilityMapping(\n entities: Entity[],\n capabilityMapping: CapabilityMapping,\n error: Error,\n extras?: Partial<SklHookContext>\n ): Promise<void> {\n await this.execute(\n HookTypes.EXECUTE_CAPABILITY_MAPPING,\n HookStages.ERROR,\n {\n entities,\n operation: 'executeCapabilityMapping',\n operationParameters: { capabilityMapping },\n ...extras\n },\n error\n );\n }\n}\n\n// Export a singleton instance\nexport const globalHooks = new GlobalHooksRegistry();\n"]}
|
package/dist/hooks/types.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { Entity } from '../util/Types';
|
|
1
|
+
import type { Entity, SKLEngineInterface } from '../util/Types';
|
|
2
2
|
export declare type SklHookContext = {
|
|
3
3
|
entities: Entity[];
|
|
4
4
|
operation: string;
|
|
5
5
|
operationParameters: Record<string, any>;
|
|
6
|
+
sklEngine?: SKLEngineInterface;
|
|
7
|
+
bypassHooks?: boolean;
|
|
6
8
|
};
|
|
7
9
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEhE,oBAAY,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
package/dist/hooks/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Entity } from '../util/Types';\n\nexport type SklHookContext = {\n entities: Entity[];\n operation: string;\n operationParameters: Record<string, any>;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Entity, SKLEngineInterface } from '../util/Types';\n\nexport type SklHookContext = {\n entities: Entity[];\n operation: string;\n operationParameters: Record<string, any>;\n sklEngine?: SKLEngineInterface;\n bypassHooks?: boolean;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryAdapter.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"SparqlQueryAdapter.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA2BhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EAAE,gBAAgB,EAChC,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EACpD,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAI7E;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEb,OAAO,EAAE,yBAAyB;IAexC,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAStE,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5E,gBAAgB,CAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAIH,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAetD,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIvD,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAUnD,eAAe;YAgBf,qBAAqB;YAyIrB,wBAAwB;IAiBzB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrD,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU3C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD1D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASpC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACxC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOzC"}
|
|
@@ -6,6 +6,7 @@ const logger_1 = require("../../../logger");
|
|
|
6
6
|
const PerformanceLogger_1 = require("../../../util/PerformanceLogger");
|
|
7
7
|
const SparqlUtil_1 = require("../../../util/SparqlUtil");
|
|
8
8
|
const TripleUtil_1 = require("../../../util/TripleUtil");
|
|
9
|
+
const Util_1 = require("../../../util/Util");
|
|
9
10
|
const InMemorySparqlQueryExecutor_1 = require("./query-executor/InMemorySparqlQueryExecutor");
|
|
10
11
|
const SparqlEndpointQueryExecutor_1 = require("./query-executor/SparqlEndpointQueryExecutor");
|
|
11
12
|
const SparqlQueryBuilder_1 = require("./SparqlQueryBuilder");
|
|
@@ -99,10 +100,33 @@ class SparqlQueryAdapter {
|
|
|
99
100
|
}
|
|
100
101
|
]
|
|
101
102
|
});
|
|
103
|
+
const entitySelectVariable = options?.entitySelectVariable ?? SparqlUtil_1.entityVariable;
|
|
104
|
+
const groupBy = (0, Util_1.ensureArray)(selectQueryData?.group ?? options?.group ?? []);
|
|
105
|
+
groupBy.push(entitySelectVariable);
|
|
106
|
+
// All non-aggregated variables in SELECT must be in GROUP BY
|
|
107
|
+
for (const selectVariable of selectQueryData.selectVariables ?? []) {
|
|
108
|
+
if (!('aggregation' in selectVariable.expression) && selectVariable.expression.constructor.name === 'Variable') {
|
|
109
|
+
groupBy.push(selectVariable.expression);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
102
112
|
const entitySelectQuery = selectQueryData.where.length > 0
|
|
103
113
|
? (0, SparqlUtil_1.createSparqlSelectQuery)([
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
entitySelectVariable,
|
|
115
|
+
// (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = " | ") AS ?rdfTypes)
|
|
116
|
+
{
|
|
117
|
+
expression: {
|
|
118
|
+
type: "aggregate",
|
|
119
|
+
aggregation: "group_concat",
|
|
120
|
+
separator: " | ",
|
|
121
|
+
distinct: true,
|
|
122
|
+
expression: {
|
|
123
|
+
type: "operation",
|
|
124
|
+
operator: "STR",
|
|
125
|
+
args: [SparqlUtil_1.rdfTypeVariable]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
variable: SparqlUtil_1.rdfTypesVariable
|
|
129
|
+
},
|
|
106
130
|
...selectQueryData.selectVariables?.map(({ variable, expression }) => {
|
|
107
131
|
if (!expression)
|
|
108
132
|
return variable;
|
|
@@ -111,7 +135,7 @@ class SparqlQueryAdapter {
|
|
|
111
135
|
expression
|
|
112
136
|
};
|
|
113
137
|
}) ?? []
|
|
114
|
-
], wherePatterns, selectQueryData.orders,
|
|
138
|
+
], wherePatterns, selectQueryData.orders, groupBy, options?.limit, options?.offset)
|
|
115
139
|
: undefined;
|
|
116
140
|
let entityOrder;
|
|
117
141
|
/* If relations are present add them to where */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable capitalized-comments */\n \n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OrArray } from '@comake/rmlmapper-js';\nimport type { GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport type {\n ConstructQuery,\n Pattern,\n Triple\n} from 'sparqljs';\nimport { Logger } from '../../../logger';\nimport { PerformanceLogger } from '../../../util/PerformanceLogger';\nimport {\n createSparqlBasicGraphPattern, createSparqlCountSelectQuery, createSparqlGraphPattern,\n createSparqlSelectGroup,\n createSparqlSelectQuery,\n createValuesPatternsForVariables,\n creteSparqlAskQuery, entityGraphTriple, entityVariable, getEntityVariableValuesFromVariables,\n getRdfTypeVariableValuesFromVariables,\n groupSelectQueryResultsByKey,\n rdfTypeNamedNode,\n rdfTypeVariable,\n selectQueryResultsAsJSValues\n} from '../../../util/SparqlUtil';\nimport {\n triplesToJsonld,\n triplesToJsonldWithFrame\n} from '../../../util/TripleUtil';\nimport type { Entity } from '../../../util/Types';\nimport type {\n FindAllOptions, FindCountOptions,\n FindExistsOptions, FindOneOptions, FindOptionsWhere\n} from '../../FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse, GroupResult } from '../../GroupOptionTypes';\nimport type { QueryAdapter, RawQueryResult } from '../QueryAdapter';\nimport { InMemorySparqlQueryExecutor } from './query-executor/InMemorySparqlQueryExecutor';\nimport { SparqlEndpointQueryExecutor } from './query-executor/SparqlEndpointQueryExecutor';\nimport type { QueryExecutor } from './query-executor/SparqlQueryExecutor';\nimport type { SparqlQueryAdapterOptions } from './SparqlQueryAdapterOptions';\nimport { SparqlQueryBuilder } from './SparqlQueryBuilder';\nimport { SparqlUpdateBuilder } from './SparqlUpdateBuilder';\n\n/**\n * A {@link QueryAdapter} that stores data in a database through a sparql endpoint.\n */\nexport class SparqlQueryAdapter implements QueryAdapter {\n protected readonly queryExecutor: QueryExecutor;\n private readonly setTimestamps: boolean;\n private readonly logger: Logger;\n\n public constructor(options: SparqlQueryAdapterOptions) {\n this.setTimestamps = options.setTimestamps ?? false;\n switch (options.type) {\n case 'memory':\n this.queryExecutor = new InMemorySparqlQueryExecutor();\n break;\n case 'sparql':\n this.queryExecutor = new SparqlEndpointQueryExecutor(options);\n break;\n default:\n throw new Error('No schema source found in setSchema args.');\n }\n this.logger = Logger.getInstance();\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n const response =\n await this.queryExecutor.executeSparqlSelectAndGetDataRaw(query);\n if (response.length === 0) {\n return [] as T[];\n }\n return selectQueryResultsAsJSValues<T>(response);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n const response = await this.queryExecutor.executeSparqlConstructAndGetDataRaw(query);\n if (response.length === 0) {\n return { '@graph': []};\n }\n return await triplesToJsonldWithFrame(response, frame);\n }\n\n public async executeRawUpdate(\n query: string\n ): Promise<void> {\n await this.queryExecutor.executeRawSparqlUpdate(query);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.find', async() => {\n const jsonld = await this.findAllAsJsonLd({ ...options, limit: 1 });\n if (Array.isArray(jsonld) && !options?.skipFraming) {\n if (jsonld.length === 0) {\n return null;\n }\n if (jsonld.length === 1) {\n return jsonld[0] as Entity;\n }\n }\n return jsonld as Entity;\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.findBy', async() => this.find({ where }), { where });\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAll', async() => {\n const jsonld = await this.findAllAsJsonLd(options);\n if (Array.isArray(jsonld)) {\n return jsonld as Entity[];\n }\n return [ jsonld ] as Entity[];\n }, { options });\n }\n\n private async findAllAsJsonLd(options?: FindAllOptions): Promise<OrArray<NodeObject>> {\n const queryBuilder = new SparqlQueryBuilder();\n const { where, selectionTriples, entityOrder, rdfTypes } = await this.buildFindAllQueryData(queryBuilder, options);\n if (entityOrder && entityOrder.length === 0) {\n return [];\n }\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const query = queryBuilder.buildConstructFromEntitySelectQuery(\n where,\n selectionTriples,\n options?.select,\n queryData.selectVariables\n );\n return await this.executeEntitySelectQuery(query, options, entityOrder, rdfTypes);\n }\n\n private async buildFindAllQueryData(\n queryBuilder: SparqlQueryBuilder,\n options?: FindAllOptions\n ): Promise<{ where: Pattern[]; selectionTriples: Triple[]; entityOrder?: string[], rdfTypes?: string[] }> {\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const selectQueryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, {\n ...options,\n relations: undefined\n });\n let rdfTypes: string[] | undefined;\n const wherePatterns: Pattern[] = [ ...selectQueryData.where, ...selectQueryData.graphWhere ];\n wherePatterns.push({\n type: 'bgp',\n triples: [\n {\n subject: entityVariable,\n predicate: rdfTypeNamedNode,\n object: rdfTypeVariable\n }\n ]\n });\n const entitySelectQuery = selectQueryData.where.length > 0\n ? createSparqlSelectQuery(\n [\n options?.entitySelectVariable ?? entityVariable,\n rdfTypeVariable,\n ...selectQueryData.selectVariables?.map(({ variable, expression }) => {\n if (!expression) return variable;\n return {\n variable,\n expression\n };\n }) ?? []\n ],\n wherePatterns,\n selectQueryData.orders,\n selectQueryData.group ?? options?.group,\n options?.limit,\n options?.offset\n )\n : undefined;\n let entityOrder: string[] | undefined;\n /* If relations are present add them to where */\n if ((queryData?.relationsQueryData?.unionPatterns ?? []).length > 0) {\n queryData?.relationsQueryData?.unionPatterns.push(\n createSparqlGraphPattern(entityVariable, [ createSparqlBasicGraphPattern([ entityGraphTriple ]) ])\n );\n }\n if (queryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = getEntityVariableValuesFromVariables(valuesByVariable);\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n const variableValueFilters = createValuesPatternsForVariables({\n [entityVariable.value]: valuesByVariable[entityVariable.value]\n });\n queryData.graphWhere = [ ...variableValueFilters, ...queryData.graphWhere ];\n } else if (entitySelectQuery) {\n // We need entity IDs for framing when:\n // 1. There are relations (to distinguish root entities from related entities)\n // 2. There's a type constraint (to handle subclass matching where SPARQL finds subclasses but JSON-LD needs exact types)\n const hasRelations = (queryData?.relationsQueryData?.unionPatterns ?? []).length > 0;\n const hasTypeConstraint = options?.where?.type !== undefined;\n\n if ((hasRelations || hasTypeConstraint) && queryData.orders.length > 0) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = queryData.orders.length > 0 ? getEntityVariableValuesFromVariables(valuesByVariable) : [];\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n }\n else if (hasRelations || hasTypeConstraint) {\n const entitySelectResponse = await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const groupedResults = groupSelectQueryResultsByKey(entitySelectResponse);\n const valuesByVariable = getRdfTypeVariableValuesFromVariables(groupedResults);\n rdfTypes = [...new Set(valuesByVariable)];\n // Also get entity IDs for framing to distinguish root entities from related ones\n // entityOrder = getEntityVariableValuesFromVariables(groupedResults);\n // if (entityOrder.length === 0) {\n // return {\n // where: queryData.where,\n // selectionTriples: queryData.graphSelectionTriples,\n // entityOrder: [],\n // rdfTypes\n // };\n // }\n }\n\n // Always add the select group query to the CONSTRUCT\n const entitySelectGroupQuery = createSparqlSelectGroup([ entitySelectQuery ]);\n queryData.graphWhere.unshift(entitySelectGroupQuery);\n // queryData.graphWhere = [ ...queryData.where, ...queryData.graphWhere ];\n }\n return {\n where: queryData.graphWhere,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder,\n rdfTypes\n };\n }\n\n private async executeEntitySelectQuery(\n query: ConstructQuery,\n options?: FindAllOptions,\n entityOrder?: string[],\n rdfTypes?: string[]\n ): Promise<OrArray<NodeObject>> {\n const responseTriples = await this.queryExecutor.executeSparqlSelectAndGetData(query);\n return await triplesToJsonld(\n responseTriples,\n options?.skipFraming,\n options?.relations,\n options?.where,\n entityOrder,\n rdfTypes\n );\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAllBy', async() => this.findAll({ where }), { where });\n }\n\n public async exists(options: FindExistsOptions): Promise<boolean> {\n return PerformanceLogger.withSpan('Adapter.exists', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = creteSparqlAskQuery([ ...values, ...queryData.where ]);\n return await this.queryExecutor.executeAskQueryAndGetResponse(query);\n }, { options });\n }\n\n public async count(options: FindCountOptions): Promise<number> {\n return PerformanceLogger.withSpan('Adapter.count', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = createSparqlCountSelectQuery(\n entityVariable,\n [ ...values, ...queryData.where ],\n queryData.orders,\n options?.offset\n );\n return await this.queryExecutor.executeSelectCountAndGetResponse(query);\n }, { options });\n }\n\n public async save(entity: Entity): Promise<Entity>;\n public async save(entities: Entity[]): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.save', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildUpdate(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpan('Adapter.groupBy', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const { query: selectQuery, variableMapping } = await queryBuilder.buildGroupByQuery(options);\n const results = await this.queryExecutor.executeSparqlSelectAndGetData(\n selectQuery\n );\n\n // Create reverse mapping from path to variable name\n const reverseMapping = Object.entries(variableMapping).reduce<Record<string, string>>((acc, [ varName, path ]) => {\n acc[path] = varName;\n return acc;\n }, {});\n\n // Transform results\n const groupResults: GroupResult[] = results.map(result => {\n const group: Record<string, string | number> = {};\n\n options.groupBy?.forEach(path => {\n const varName = reverseMapping[path];\n if (!varName) {\n throw new Error(`No variable mapping found for path: ${path}`);\n }\n const { value } = result[varName];\n // Try to convert to number if possible\n group[path] = Number.isNaN(Number(value)) ? value : Number(value);\n });\n\n if (options.dateGrouping) {\n const dateGroupVarName = reverseMapping.dateGroup;\n group.dateGroup = result[dateGroupVarName].value;\n }\n\n const countVarName = reverseMapping.count;\n const entityIdsVarName = reverseMapping.entityIds;\n\n return {\n group,\n count: Number.parseInt(result[countVarName].value, 10),\n entityIds: result[entityIdsVarName].value.split(' ')\n };\n });\n\n return {\n results: groupResults,\n meta: {\n totalCount: groupResults.reduce((sum, curr) => sum + curr.count, 0),\n dateRange: options.dateRange,\n groupings: options.groupBy || []\n }\n };\n }, { options });\n }\n\n public async update(id: string, attributes: Partial<Entity>): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.update', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildPartialUpdate(idOrIds, attributes);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async delete(id: string): Promise<void>;\n public async delete(ids: string[]): Promise<void>;\n public async delete(idOrIds: string | string[]): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.delete', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteById(idOrIds);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.destroy', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDelete(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async destroyAll(): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.destroyAll', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteAll();\n await this.queryExecutor.executeSparqlUpdate(query);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable capitalized-comments */\n \n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OrArray } from '@comake/rmlmapper-js';\nimport type { GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport type {\n AggregateExpression,\n ConstructQuery,\n Pattern,\n Triple,\n Variable\n} from 'sparqljs';\nimport { Logger } from '../../../logger';\nimport { PerformanceLogger } from '../../../util/PerformanceLogger';\nimport {\n createSparqlBasicGraphPattern, createSparqlCountSelectQuery, createSparqlGraphPattern,\n createSparqlSelectGroup,\n createSparqlSelectQuery,\n createValuesPatternsForVariables,\n creteSparqlAskQuery, entityGraphTriple, entityVariable, getEntityVariableValuesFromVariables,\n getRdfTypeVariableValuesFromVariables,\n groupSelectQueryResultsByKey,\n rdfTypeNamedNode,\n rdfTypesVariable,\n rdfTypeVariable,\n selectQueryResultsAsJSValues\n} from '../../../util/SparqlUtil';\nimport {\n triplesToJsonld,\n triplesToJsonldWithFrame\n} from '../../../util/TripleUtil';\nimport type { Entity } from '../../../util/Types';\nimport { ensureArray } from '../../../util/Util';\nimport type {\n FindAllOptions, FindCountOptions,\n FindExistsOptions, FindOneOptions, FindOptionsWhere\n} from '../../FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse, GroupResult } from '../../GroupOptionTypes';\nimport type { QueryAdapter, RawQueryResult } from '../QueryAdapter';\nimport { InMemorySparqlQueryExecutor } from './query-executor/InMemorySparqlQueryExecutor';\nimport { SparqlEndpointQueryExecutor } from './query-executor/SparqlEndpointQueryExecutor';\nimport type { QueryExecutor } from './query-executor/SparqlQueryExecutor';\nimport type { SparqlQueryAdapterOptions } from './SparqlQueryAdapterOptions';\nimport { SparqlQueryBuilder } from './SparqlQueryBuilder';\nimport { SparqlUpdateBuilder } from './SparqlUpdateBuilder';\n\n/**\n * A {@link QueryAdapter} that stores data in a database through a sparql endpoint.\n */\nexport class SparqlQueryAdapter implements QueryAdapter {\n protected readonly queryExecutor: QueryExecutor;\n private readonly setTimestamps: boolean;\n private readonly logger: Logger;\n\n public constructor(options: SparqlQueryAdapterOptions) {\n this.setTimestamps = options.setTimestamps ?? false;\n switch (options.type) {\n case 'memory':\n this.queryExecutor = new InMemorySparqlQueryExecutor();\n break;\n case 'sparql':\n this.queryExecutor = new SparqlEndpointQueryExecutor(options);\n break;\n default:\n throw new Error('No schema source found in setSchema args.');\n }\n this.logger = Logger.getInstance();\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n const response =\n await this.queryExecutor.executeSparqlSelectAndGetDataRaw(query);\n if (response.length === 0) {\n return [] as T[];\n }\n return selectQueryResultsAsJSValues<T>(response);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n const response = await this.queryExecutor.executeSparqlConstructAndGetDataRaw(query);\n if (response.length === 0) {\n return { '@graph': []};\n }\n return await triplesToJsonldWithFrame(response, frame);\n }\n\n public async executeRawUpdate(\n query: string\n ): Promise<void> {\n await this.queryExecutor.executeRawSparqlUpdate(query);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.find', async() => {\n const jsonld = await this.findAllAsJsonLd({ ...options, limit: 1 });\n if (Array.isArray(jsonld) && !options?.skipFraming) {\n if (jsonld.length === 0) {\n return null;\n }\n if (jsonld.length === 1) {\n return jsonld[0] as Entity;\n }\n }\n return jsonld as Entity;\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.findBy', async() => this.find({ where }), { where });\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAll', async() => {\n const jsonld = await this.findAllAsJsonLd(options);\n if (Array.isArray(jsonld)) {\n return jsonld as Entity[];\n }\n return [ jsonld ] as Entity[];\n }, { options });\n }\n\n private async findAllAsJsonLd(options?: FindAllOptions): Promise<OrArray<NodeObject>> {\n const queryBuilder = new SparqlQueryBuilder();\n const { where, selectionTriples, entityOrder, rdfTypes } = await this.buildFindAllQueryData(queryBuilder, options);\n if (entityOrder && entityOrder.length === 0) {\n return [];\n }\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const query = queryBuilder.buildConstructFromEntitySelectQuery(\n where,\n selectionTriples,\n options?.select,\n queryData.selectVariables\n );\n return await this.executeEntitySelectQuery(query, options, entityOrder, rdfTypes);\n }\n\n private async buildFindAllQueryData(\n queryBuilder: SparqlQueryBuilder,\n options?: FindAllOptions\n ): Promise<{ where: Pattern[]; selectionTriples: Triple[]; entityOrder?: string[], rdfTypes?: string[] }> {\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const selectQueryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, {\n ...options,\n relations: undefined\n });\n let rdfTypes: string[] | undefined;\n const wherePatterns: Pattern[] = [ ...selectQueryData.where, ...selectQueryData.graphWhere ];\n wherePatterns.push({\n type: 'bgp',\n triples: [\n {\n subject: entityVariable,\n predicate: rdfTypeNamedNode,\n object: rdfTypeVariable\n }\n ]\n });\n const entitySelectVariable = options?.entitySelectVariable ?? entityVariable;\n const groupBy = ensureArray(selectQueryData?.group ?? options?.group ?? []);\n groupBy.push(entitySelectVariable);\n // All non-aggregated variables in SELECT must be in GROUP BY\n for (const selectVariable of selectQueryData.selectVariables ?? []) {\n if (!('aggregation' in (selectVariable.expression as AggregateExpression)) && selectVariable.expression.constructor.name === 'Variable') {\n groupBy.push(selectVariable.expression as Variable);\n }\n }\n const entitySelectQuery = selectQueryData.where.length > 0\n ? createSparqlSelectQuery(\n [\n entitySelectVariable,\n // (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = \" | \") AS ?rdfTypes)\n {\n expression: {\n type: \"aggregate\",\n aggregation: \"group_concat\",\n separator: \" | \",\n distinct: true,\n expression: {\n type: \"operation\",\n operator: \"STR\",\n args: [ rdfTypeVariable ]\n }\n },\n variable: rdfTypesVariable\n },\n ...selectQueryData.selectVariables?.map(({ variable, expression }) => {\n if (!expression) return variable;\n return {\n variable,\n expression\n };\n }) ?? []\n ],\n wherePatterns,\n selectQueryData.orders,\n groupBy,\n options?.limit,\n options?.offset\n )\n : undefined;\n let entityOrder: string[] | undefined;\n /* If relations are present add them to where */\n if ((queryData?.relationsQueryData?.unionPatterns ?? []).length > 0) {\n queryData?.relationsQueryData?.unionPatterns.push(\n createSparqlGraphPattern(entityVariable, [ createSparqlBasicGraphPattern([ entityGraphTriple ]) ])\n );\n }\n if (queryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = getEntityVariableValuesFromVariables(valuesByVariable);\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n const variableValueFilters = createValuesPatternsForVariables({\n [entityVariable.value]: valuesByVariable[entityVariable.value]\n });\n queryData.graphWhere = [ ...variableValueFilters, ...queryData.graphWhere ];\n } else if (entitySelectQuery) {\n // We need entity IDs for framing when:\n // 1. There are relations (to distinguish root entities from related entities)\n // 2. There's a type constraint (to handle subclass matching where SPARQL finds subclasses but JSON-LD needs exact types)\n const hasRelations = (queryData?.relationsQueryData?.unionPatterns ?? []).length > 0;\n const hasTypeConstraint = options?.where?.type !== undefined;\n\n if ((hasRelations || hasTypeConstraint) && queryData.orders.length > 0) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = queryData.orders.length > 0 ? getEntityVariableValuesFromVariables(valuesByVariable) : [];\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n }\n else if (hasRelations || hasTypeConstraint) {\n const entitySelectResponse = await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const groupedResults = groupSelectQueryResultsByKey(entitySelectResponse);\n const valuesByVariable = getRdfTypeVariableValuesFromVariables(groupedResults);\n rdfTypes = [...new Set(valuesByVariable)];\n // Also get entity IDs for framing to distinguish root entities from related ones\n // entityOrder = getEntityVariableValuesFromVariables(groupedResults);\n // if (entityOrder.length === 0) {\n // return {\n // where: queryData.where,\n // selectionTriples: queryData.graphSelectionTriples,\n // entityOrder: [],\n // rdfTypes\n // };\n // }\n }\n\n // Always add the select group query to the CONSTRUCT\n const entitySelectGroupQuery = createSparqlSelectGroup([ entitySelectQuery ]);\n queryData.graphWhere.unshift(entitySelectGroupQuery);\n // queryData.graphWhere = [ ...queryData.where, ...queryData.graphWhere ];\n }\n return {\n where: queryData.graphWhere,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder,\n rdfTypes\n };\n }\n\n private async executeEntitySelectQuery(\n query: ConstructQuery,\n options?: FindAllOptions,\n entityOrder?: string[],\n rdfTypes?: string[]\n ): Promise<OrArray<NodeObject>> {\n const responseTriples = await this.queryExecutor.executeSparqlSelectAndGetData(query);\n return await triplesToJsonld(\n responseTriples,\n options?.skipFraming,\n options?.relations,\n options?.where,\n entityOrder,\n rdfTypes\n );\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAllBy', async() => this.findAll({ where }), { where });\n }\n\n public async exists(options: FindExistsOptions): Promise<boolean> {\n return PerformanceLogger.withSpan('Adapter.exists', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = creteSparqlAskQuery([ ...values, ...queryData.where ]);\n return await this.queryExecutor.executeAskQueryAndGetResponse(query);\n }, { options });\n }\n\n public async count(options: FindCountOptions): Promise<number> {\n return PerformanceLogger.withSpan('Adapter.count', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = createSparqlCountSelectQuery(\n entityVariable,\n [ ...values, ...queryData.where ],\n queryData.orders,\n options?.offset\n );\n return await this.queryExecutor.executeSelectCountAndGetResponse(query);\n }, { options });\n }\n\n public async save(entity: Entity): Promise<Entity>;\n public async save(entities: Entity[]): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.save', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildUpdate(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpan('Adapter.groupBy', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const { query: selectQuery, variableMapping } = await queryBuilder.buildGroupByQuery(options);\n const results = await this.queryExecutor.executeSparqlSelectAndGetData(\n selectQuery\n );\n\n // Create reverse mapping from path to variable name\n const reverseMapping = Object.entries(variableMapping).reduce<Record<string, string>>((acc, [ varName, path ]) => {\n acc[path] = varName;\n return acc;\n }, {});\n\n // Transform results\n const groupResults: GroupResult[] = results.map(result => {\n const group: Record<string, string | number> = {};\n\n options.groupBy?.forEach(path => {\n const varName = reverseMapping[path];\n if (!varName) {\n throw new Error(`No variable mapping found for path: ${path}`);\n }\n const { value } = result[varName];\n // Try to convert to number if possible\n group[path] = Number.isNaN(Number(value)) ? value : Number(value);\n });\n\n if (options.dateGrouping) {\n const dateGroupVarName = reverseMapping.dateGroup;\n group.dateGroup = result[dateGroupVarName].value;\n }\n\n const countVarName = reverseMapping.count;\n const entityIdsVarName = reverseMapping.entityIds;\n\n return {\n group,\n count: Number.parseInt(result[countVarName].value, 10),\n entityIds: result[entityIdsVarName].value.split(' ')\n };\n });\n\n return {\n results: groupResults,\n meta: {\n totalCount: groupResults.reduce((sum, curr) => sum + curr.count, 0),\n dateRange: options.dateRange,\n groupings: options.groupBy || []\n }\n };\n }, { options });\n }\n\n public async update(id: string, attributes: Partial<Entity>): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.update', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildPartialUpdate(idOrIds, attributes);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async delete(id: string): Promise<void>;\n public async delete(ids: string[]): Promise<void>;\n public async delete(idOrIds: string | string[]): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.delete', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteById(idOrIds);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.destroy', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDelete(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async destroyAll(): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.destroyAll', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteAll();\n await this.queryExecutor.executeSparqlUpdate(query);\n });\n }\n}\n"]}
|
|
@@ -9,6 +9,7 @@ export declare const predicateNode: import("@rdfjs/types").Variable;
|
|
|
9
9
|
export declare const objectNode: import("@rdfjs/types").Variable;
|
|
10
10
|
export declare const entityVariable: import("@rdfjs/types").Variable;
|
|
11
11
|
export declare const rdfTypeVariable: import("@rdfjs/types").Variable;
|
|
12
|
+
export declare const rdfTypesVariable: import("@rdfjs/types").Variable;
|
|
12
13
|
export declare const countVariable: import("@rdfjs/types").Variable;
|
|
13
14
|
export declare const now: import("@rdfjs/types").Variable;
|
|
14
15
|
export declare const created: NamedNode<"https://skl.ai/dateTimeCreated">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlUtil.d.ts","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SparqlUtil.d.ts","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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"}
|
package/dist/util/SparqlUtil.js
CHANGED
|
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.createValuesPatternsForVariables = exports.getRdfTypeVariableValuesFromVariables = exports.getEntityVariableValuesFromVariables = exports.groupSelectQueryResultsByKey = exports.selectQueryResultsAsJSValues = exports.createSparqlInsertDeleteOperation = exports.createSparqlOneOrMorePredicate = exports.createSparqlZeroOrMorePredicate = exports.createSparqlSequencePredicate = exports.createSparqlOrPredicate = exports.createSparqlInversePredicate = exports.createSparqlExistsOperation = void 0;
|
|
6
|
+
exports.createSparqlNotInOperation = exports.createSparqlInOperation = exports.createSparqlNotEqualOperation = exports.createSparqlLteOperation = exports.createSparqlLtOperation = exports.createSparqlGteOperation = exports.createSparqlGtOperation = exports.createSparqlContainsOperation = exports.createSparqlLcaseOperation = exports.createSparqlEqualOperation = exports.createSparqlBindPattern = exports.createFilterPatternFromFilters = exports.createSparqlFilterWithExpression = exports.createSparqlSelectQuery = exports.ensureGrouping = exports.ensureVariable = exports.createSparqlServicePattern = exports.createSparqlOptionalGraphSelection = exports.createSparqlBasicGraphPattern = exports.createSparqlUnion = exports.createSparqlOptional = exports.createSparqlSelectGroup = exports.creteSparqlAskQuery = exports.createSparqlCountSelectQuery = exports.createSparqlConstructQuery = exports.createSparqlGraphPattern = exports.createSparqlUpdate = exports.createSparqlDropUpdate = exports.createSparqlClearUpdate = exports.createSparqlGraphQuads = exports.entityGraphTriple = exports.dropAll = exports.bindNow = exports.allTypesAndSuperTypesPath = exports.anyPredicatePropertyPath = exports.nilPredicate = exports.restPredicate = exports.firstPredicate = exports.modified = exports.created = exports.now = exports.countVariable = exports.rdfTypesVariable = exports.rdfTypeVariable = exports.entityVariable = exports.objectNode = exports.predicateNode = exports.subjectNode = exports.rdfsSubClassOfNamedNode = exports.rdfTypeNamedNode = void 0;
|
|
7
|
+
exports.createValuesPatternsForVariables = exports.getRdfTypeVariableValuesFromVariables = exports.getEntityVariableValuesFromVariables = exports.groupSelectQueryResultsByKey = exports.selectQueryResultsAsJSValues = exports.createSparqlInsertDeleteOperation = exports.createSparqlOneOrMorePredicate = exports.createSparqlZeroOrMorePredicate = exports.createSparqlSequencePredicate = exports.createSparqlOrPredicate = exports.createSparqlInversePredicate = exports.createSparqlExistsOperation = exports.createSparqlNotExistsOperation = void 0;
|
|
8
8
|
const data_model_1 = __importDefault(require("@rdfjs/data-model"));
|
|
9
9
|
const constants_1 = require("../constants");
|
|
10
10
|
const TripleUtil_1 = require("./TripleUtil");
|
|
@@ -16,6 +16,7 @@ exports.predicateNode = data_model_1.default.variable('predicate');
|
|
|
16
16
|
exports.objectNode = data_model_1.default.variable('object');
|
|
17
17
|
exports.entityVariable = data_model_1.default.variable('entity');
|
|
18
18
|
exports.rdfTypeVariable = data_model_1.default.variable('rdfType');
|
|
19
|
+
exports.rdfTypesVariable = data_model_1.default.variable('rdfTypes');
|
|
19
20
|
exports.countVariable = data_model_1.default.variable('count');
|
|
20
21
|
exports.now = data_model_1.default.variable('now');
|
|
21
22
|
exports.created = data_model_1.default.namedNode(constants_1.EngineConstants.prop.dateCreated);
|
|
@@ -437,10 +438,10 @@ function getEntityVariableValuesFromVariables(variables) {
|
|
|
437
438
|
}
|
|
438
439
|
exports.getEntityVariableValuesFromVariables = getEntityVariableValuesFromVariables;
|
|
439
440
|
function getRdfTypeVariableValuesFromVariables(variables) {
|
|
440
|
-
if (!(exports.
|
|
441
|
+
if (!(exports.rdfTypesVariable.value in variables)) {
|
|
441
442
|
return [];
|
|
442
443
|
}
|
|
443
|
-
return variables[exports.
|
|
444
|
+
return variables[exports.rdfTypesVariable.value].flatMap((literal) => literal.value.split(' | '));
|
|
444
445
|
}
|
|
445
446
|
exports.getRdfTypeVariableValuesFromVariables = getRdfTypeVariableValuesFromVariables;
|
|
446
447
|
function createValuesPatternsForVariables(valuesByVariable) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypeVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypeVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const rdfTypesVariable = DataFactory.variable('rdfTypes');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypesVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypesVariable.value] as Literal[]).flatMap((literal: Literal): string[] => literal.value.split(' | '));\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
|